何が起きたか
fastapi-code-generator は、OpenAPI 定義のパス、追加レスポンスのステータスコードのキー、operation の summary を、エスケープせずに生成コードの文字列リテラルへ埋め込んでいました。引用符を含む値を仕込んだ定義から生成すると、任意の Python の式が生成コードに入り込みます。パスとステータスコードの件は main.py を読み込んだ時点(サーバー起動時)に、summary の件はそのエンドポイントが呼ばれた時点に、サーバー上でコードが実行されます。
やること
0.8.1 以降へ更新し、外部や第三者から受け取った OpenAPI 定義で生成したコードは、更新後のバージョンで生成し直してください。すぐに更新できない場合は、信頼できない定義からの生成を止め、生成済みの main.py に不審な文字列連結や式が含まれていないか確認してください。
出典
GitHub Advisory Database(パスの件)github.com英語 ↗GitHub Advisory Database(ステータスコードの件)github.com英語 ↗GitHub Advisory Database(summary の件)github.com英語 ↗fastapi-code-generator のセキュリティ勧告github.com英語 ↗上の要約は通り道編集部がまとめたものです。影響範囲と修正版は必ず各出典で確認してください。