Djangoのセキュリティアップデート:6.1.2、6.0.9、および5.2.18

Djangoのセキュリティリリースポリシーに基づき、DjangoチームはDjango 6.1.2、Django 6.0.9、およびDjango 5.2.18のリリースを発表します。
これらのリリースは、以下に詳細に記載されているセキュリティ問題を修正するものです。Djangoのすべてのユーザーに、できるだけ早くアップデートすることを推奨します。

CVE-2026-77050: get_supported_language_variant()における潜在的なサービス拒否の脆弱性

django.utils.translation.get_supported_language_variant()は、多数の異なる、非常に長い言語コードを処理する際に、潜在的なサービス拒否攻撃を受ける可能性がありました。言語コードは、その長さを制限する前に、インメモリキャッシュのキーとして使用されており、プロセスメモリを過剰に消費する可能性がありました。

この脆弱性を軽減するために、500文字を超える言語コードは、キャッシュされた参照の前に拒否または切り捨てられるようになりました。

この問題の深刻度は、Djangoのセキュリティポリシーによると「低」です。

Gleb Lizunov氏からの報告に感謝します。

CVE-2026-84429: HTTPヘッダーの解析における潜在的なサービス拒否の脆弱性

django.utils.http.parse_header_parameters()は、引用符で囲まれたパラメータ内に多数の区切り文字が含まれている値の解析時に、二乗時間複雑性があるため、潜在的なサービス拒否攻撃を受ける可能性がありました。認証されていないリクエストが、AcceptやContent-Typeなどのヘッダーを通じて、HttpRequest.accepts()によって実行されるコンテンツネゴシエーションなどを経由して、この解析に到達する可能性があります。1回の呼び出しあたりの長さ制限は、繰り返されるヘッダーの合計サイズを制限しません。

ドキュメントに記載されていないdjango.utils.http.parse_header_parameters()関数は、現在、Pythonのemail.message.Messageを使用して解析を行います。その結果、一部の不正なまたは異常なヘッダー値の解析方法が変更され、例えば、エンコーディングが欠落しているRFC 2231の値がデコードされるようになりました。

この問題の深刻度は、Djangoのセキュリティポリシーによると「中」です。

Jisung Chae氏からの報告に感謝します。

CVE-2026-87890: 空間ルックアップのバイト値による潜在的なリクエスト偽装の脆弱性

空間検索において、ラスター値がバイト形式で提供される場合、明示的に `django.contrib.gis.gdal.GDALRaster` でラップする必要はありません。
これらの値はGDALのインメモリ仮想ファイルシステムを通じて開かれますが、外部のラスターソースを参照するVRTドキュメントが含まれている可能性があります。
これにより、Djangoプロセスを実行しているユーザーに対して、検索処理中にGDALがネットワークリクエストを発行する可能性があります。

この問題は、攻撃者が制御するバイトデータを直接空間検索に渡すアプリケーションによって悪用される可能性があります。
これは、CVE-2026-15307の修正において見過ごされていました。

この問題を軽減するために、バイト形式で提供されるラスター値は、空間検索で使用する前に、`GDALRaster` でラップする必要があります。
有効な16進数表現のジオメトリを表すバイト値は、引き続き受け入れられます。

これは、互換性のない変更です。
念のため、すべての信頼できないユーザー入力は、使用する前に検証する必要があります。

この問題の深刻度は、Djangoのセキュリティポリシーにおいて「中程度」と評価されています。

sicksec氏からの報告に感謝します。

CVE-2026-87975: モデルフォームセットにおける権限の濫用(編集可能な主キーを使用)

モデルフォームセットは、誤って、制限されたクエリセット外のインスタンスを削除したり、モデルの主キーがフォームを通じて設定可能な場合(例えば、OneToOneFieldまたは、インラインフォームセットのモデルの主キーとして使用される親リンク、またはフォームのフィールドに含まれる自然キーまたはUUIDなど)、編集専用フォームセットを使用してインスタンスを作成したりする可能性がありました。
デフォルトのBigAutoField主キーを使用しているモデルには影響はありません。

この問題の深刻度は、Djangoのセキュリティポリシーにおいて「中程度」と評価されています。

Seonggwon Yoon氏からの報告に感謝します。

CVE-2026-15830の続報:ネストされたジオメトリコレクションを介した潜在的なサービス拒否の脆弱性

CVE-2026-15830の対策は、特定のWKBジオメトリによって回避される可能性があり、これにより、深くネストされたジオメトリがGEOSに到達する可能性があります。

このアップデートは、新しいCVEを導入するものではありませんが、元の修正を強化します。

blacknianthejdan、Kimi Security Team、およびDavid Sarkisyanに、報告をいただいたことに感謝いたします。

影響を受けるサポート対象バージョン:

Django main
Django 6.1
Django 6.0
Django 5.2

解決策:

この問題に対処するための修正は、Djangoのmain、6.1、6.0、および5.2の各バージョンに適用されました。
これらの修正は、以下の変更セットから入手できます。

CVE-2026-77050:get_supported_language_variant()関数における、潜在的なサービス拒否の脆弱性

mainブランチ
6.1ブランチ
6.0ブランチ
5.2ブランチ

CVE-2026-84429:HTTPヘッダーの解析における、潜在的なサービス拒否の脆弱性

mainブランチ
6.1ブランチ
6.0ブランチ
5.2ブランチ

CVE-2026-87890:空間検索のバイト値を利用した、潜在的なリクエスト偽装の脆弱性

mainブランチ
6.1ブランチ
6.0ブランチ
5.2ブランチ

CVE-2026-87975:編集可能な主キーを持つモデルフォームセットにおける、権限の濫用

mainブランチ
6.1ブランチ
6.0ブランチ
5.2ブランチ

CVE-2026-15830に関連する問題:ネストされたジオメトリコレクションを利用した、潜在的なサービス拒否の脆弱性

mainブランチ
6.1ブランチ
6.0ブランチ
5.2ブランチ

以下のバージョンがリリースされました:

Django 6.1.2 (tarball | チェックサム)
Django 6.0.9 (tarball | チェックサム)
Django 5.2.18 (tarball | チェックサム)

このリリースで使用されているPGPキーIDは、Sarah Boyce:3955B19851EA96EFです。

セキュリティに関する報告について:

常に、潜在的なセキュリティ上の問題は、DjangoのTracインスタンスやDjangoフォーラムではなく、セキュリティメールアドレス security@djangoproject.com 宛に、プライベートメールで報告してください。詳細については、セキュリティポリシーをご確認ください。