2025年6月4日
Django 5.2.2 では、 5.2.1 における深刻度 "low" のセキュリティの問題1件と、いくつかのバグを修正しました。
内部の HTTP レスポンスのロギングでは request.path を直接使用しており、制御文字(例:改行や ANSI エスケープシーケンス)がエスケープされないままログに書き込まれる可能性がありました。これによりログインジェクションや偽造が可能となり、特に外部システムで処理されるログや端末で表示されるログにおいて、攻撃者がログの見た目や構造を操作できてしまうおそれがありました。
これは Django のセキュリティモデルに直接影響を与えるものではありませんが、ログが他のツールで取り込まれたり解釈されたりする場合にリスクを伴います。これを修正するため、内部の django.utils.log.log_response() 関数は、安全なエンコーディングを用いてすべての位置指定のフォーマット引数をエスケープするようになりました。
CompositePrimaryKey を持つモデルに由来する ForeignObject に対して select_related を使用した際に発生していたクラッシュを修正しました(#36373)。
Django 5.2 において、 "pk" を使用して CompositePrimaryKey を持つモデルを参照するサブクエリで、選択された列数が多すぎるまたは少なすぎる場合に ValueError が発生しなかったバグを修正しました(#36392)。
Django 5.2 において、 QuerySet.union() に引数が渡されなかった場合にクラッシュが発生するリグレッションを修正しました(#36388)。
Django 5.2 において、 process_request() をオーバーライドしている RemoteUserMiddleware のサブクラスがサポートされなくなっていたリグレッションを修正しました(#36390)。
Django 5.2 において、 Aggregate 式の filter 引数内で OuterRef を使用した際にクラッシュが発生するリグレッションを修正しました(#36404)。
Django 5.2 において、PostgreSQL の集約関数 ArrayAgg, StringAgg および JSONBAgg 内で OuterRef を使用した際にクラッシュが発生するリグレッションを修正しました(#36405)。
Django 5.2 において、管理サイトの filter_horizontal ボタンに type="button" が指定されていなかったため、Enter キーを押した際にフォーム送信が妨げられるリグレッションを修正しました(#36423)。
Django 5.2 において、 CompositePrimaryKey を持つモデルで id_list 引数を指定して QuerySet.in_bulk() を呼び出した際に、データベースのパラメータ制限が考慮されていなかったバグを修正しました(#36416)。
Django 5.2 において、 HttpRequest.get_preferred_type() が Accept ヘッダー内のメディアタイプパラメータを考慮しておらず、コンテンツネゴシエーションの特異性が低下していたバグを修正しました(#36411)。
Django 5.2 において、外部キーの参照先サブクラスに対して Prefetch の QuerySet を用いて外部キーをプリフェッチするために QuerySet.prefetch_related() を使用するとクラッシュしていたリグレッションを修正しました( #36432 )。
12月 04, 2025