Django 4.2.6 リリースノート¶
2023年10月4日
Django 4.2.6 は、重大度 "moderate" のセキュリティ問題と、4.2.5 でのいくつかのバグを修正します。
CVE-2023-43665: django.utils.text.Truncator
におけるサービス拒否攻撃 (DoS) の可能性¶
CVE-2019-14232 の修正に伴い、django.utils.text.Truncator
の chars()
メソッドと words()
メソッド(html=True
を使用した 場合)の実装に使用される正規表現が見直され、改善されました。しかし、これらの正規表現は依然として線形バックトラッキングの複雑さを示しているため、非常に長い、潜在的に不正な HTML 入力が与えられた場合、評価は依然として遅く、潜在的なサービス拒否 (DoS) の脆弱性につながりました。
chars()
と words()
メソッドは、それによって脆弱性があった truncatechars_html
と truncatewords_html
テンプ レートフィルタの実装に使用されます。
Truncator
がHTMLモードで動作している場合に処理される入力は、潜在的なパフォーマンスとメモリの問題を避けるために最初の500万文字に制限されています。
Bugfixes¶
Django 4.2.5 で修正されたリグレッションについて:非推奨の
DEFAULT_FILE_STORAGE
およびSTATICFILES_STORAGE
設定をテストでオーバーライドすると、メインのSTORAGES
が変更される問題がありました (#34821)。Django 4.2 において、PostgreSQL で
__isnull
ルックアップを使用した際に、文字列ベースのフィールド (CharField
、EmailField
、TextField
、CICharField
、CIEmailField
、そしてCITextField
) への不必要なキャストを引き起こしていたリグレッションを修正しました 。その結果、Django 4.2 以前に作成された__isnull
式や条件を使用するインデックスは、クエリプランナーによって使用されなくなり、パフォーマンスのリグレッションが発生していました (#34840)。Django 4.2 から 4.2.5 で作成されたインデックスには不必要な
::text
キャストが含まれているため、そのようなインデックスは再作成する必要があるかもしれません。候補となるインデックスは、このクエリで見つけることができます:SELECT indexname, indexdef FROM pg_indexes WHERE indexdef LIKE '%::text IS %NULL';