Django 6.0.8/5.2.17がリリース、ラスター経由のファイル書き込み・SSRF脆弱性(CVE-2026-15307)など4件を修正

セキュリティニュース

投稿日時: 更新日時:

Django 6.0.8/5.2.17がリリース、ラスター経由のファイル書き込み・SSRF脆弱性(CVE-2026-15307)など4件を修正

Djangoプロジェクトは2026年8月4日、セキュリティリリースとしてDjango 6.0.8および5.2.17を公開しました。今回のリリースでは、GeoDjangoの空間検索(spatial lookups)機能に存在する高深刻度の脆弱性CVE-2026-15307を含む、4件のセキュリティ上の問題が修正されています。CVE-2026-15307は、環境によってはサーバー側でのファイル書き込みを経てリモートコード実行(RCE)に至る可能性があるとされており、GeoDjangoを利用するすべてのDjangoユーザーに、速やかなアップデートが推奨されています。

この記事のサマリー

  • Djangoプロジェクトは2026年8月4日、Django 6.0.8および5.2.17をセキュリティリリースとして公開し、4件の脆弱性を修正しました。
  • 最も深刻な脆弱性CVE-2026-15307(CVSSv3スコア8.8、深刻度「高」)は、GeoDjangoの空間検索機能がラスターデータを処理する際の実装に起因し、環境によってはサーバー側のファイル書き込みからリモートコード実行に至る可能性があります。
  • この脆弱性は、管理サイト(admin)のチェンジリスト機能を通じて、空間フィールドを持つ登録済みモデルに対する閲覧権限を持つスタッフユーザーであれば到達可能です。
  • 修正は破壊的変更(backward incompatible)を伴い、空間検索においてdict型の値や、有効なGEOSGeometryとして解釈できない文字列の受け渡しが禁止されます。
  • そのほか、管理画面のURLField表示に関する中程度のXSS脆弱性(CVE-2026-15920)、ネストされたジオメトリコレクションによるDoS脆弱性(CVE-2026-15830)、言語コード処理に関する低深刻度のDoS脆弱性(CVE-2026-15337)が修正されています。
  • 本記事執筆時点で、いずれの脆弱性についても実際の悪用や公開された概念実証コード(PoC)は確認されていません。

整理表

CVE番号 CVSSv3 種別 深刻度 修正バージョン 悪用状況
CVE-2026-15307 8.8 空間検索を通じたサーバー側ファイル書き込み・リクエスト偽造 6.0.8、5.2.17 未確認
CVE-2026-15920 6.1 管理画面のURLField表示に関するクロスサイトスクリプティング 6.0.8、5.2.17 未確認
CVE-2026-15830 5.3 ネストされたジオメトリコレクションによるDoS 6.0.8、5.2.17 未確認
CVE-2026-15337 5.3 check_for_language()関数を通じたDoS 6.0.8、5.2.17 未確認

CVE-2026-15307の技術的な仕組み

Djangoの空間検索機能は、ラスターデータを表すstr型・dict型の値をGDALRasterへ渡すことを許容していました。使用しているラスタードライバーの種類によっては、この値を悪用することで、サーバー上へのファイル書き込みや、Djangoプロセスのユーザー権限でのネットワークリクエストの発行につながる可能性があります。ファイル書き込みが可能な環境では、これがリモートコード実行に発展する場合があるとされています。

この脆弱性が特に懸念されるのは、管理画面(admin)のチェンジリストがModelAdmin.lookup_allowed()を通じたフィルタリングを許可しているため、空間フィールドを持つ登録済みモデルに対して閲覧権限(view permission)を持つだけのスタッフユーザーからも到達可能である点です。管理者権限を持たない一般のスタッフアカウントであっても、条件を満たせば攻撃の起点になり得ます。

この修正により、空間検索においてdict型の値、および有効なGEOSGeometryとして解釈できない文字列(シリアライズされた辞書など)の使用が禁止されました。Djangoプロジェクトはこれを破壊的変更(backward incompatible)と位置づけており、モデルフィールドへの直接代入は引き続きこれらの型を受け付けるとしたうえで、信頼できないユーザー入力は使用前に必ず検証するよう呼びかけています。

その他3件の脆弱性

CVE-2026-15830は、深くネストされたGEOMETRYCOLLECTIONオブジェクトを処理した際に、GEOSライブラリでセグメンテーション違反が発生し得るDoS脆弱性です。修正により、WKT(Well-Known Text)形式では最大198階層、WKB(Well-Known Binary)形式では合計198個までのジオメトリコレクションに制限されるようになりました。GeoJSON形式の入力はGDALによって解析されるため、この制限の対象外です。

CVE-2026-15920は、管理画面のチェンジリスト表示および読み取り専用フィールドで、URLFieldの値がクリック可能なリンクとして描画される際に、安全なURLスキームであるかどうかの検証が行われていなかったことに起因する、中程度のXSS脆弱性です。修正により、URLValidatorによる検証を経てからリンクとして描画され、検証に失敗した場合はプレーンテキストとして表示されるようになりました。

CVE-2026-15337は、django.utils.translation.check_for_language()関数が、多数の長い言語コードをチェックする際にDoS攻撃を受ける可能性があった、低深刻度の脆弱性です。修正により、500文字を超える言語コードは、キャッシュの参照処理に到達する前に拒否されるようになりました。

対象バージョンと悪用状況

影響を受けるのはDjangoのmainブランチ、6.1(リリース候補版)、6.0、5.2の各系統です。Djangoプロジェクトは、本記事執筆時点でいずれの脆弱性についても実際の悪用は報告されておらず、公開されている概念実証コード(PoC)も確認されていないとしています。

情報システム部門が確認すべき対策ポイント

  • GeoDjangoを利用しているシステムについて、Django 6.0.8または5.2.17へ速やかにアップデートしてください。とりわけ、空間フィールドを持つモデルを管理画面に登録している場合は優先度が高くなります。
  • アップデートにあたっては、空間検索でdict型の値や文字列表現のラスターデータを利用している既存のコードがないか確認してください。今回の修正は破壊的変更を伴うため、該当するクエリが動作しなくなる可能性があります。公式のラスターセキュリティに関するドキュメントを参照し、対応方法を確認することをおすすめします。
  • 管理画面(admin)で、空間フィールドを持つモデルに対してどのスタッフユーザーが閲覧権限を持っているかを棚卸ししてください。今回の脆弱性は、管理者権限がなくても閲覧権限があれば到達可能でした。
  • URLFieldを管理画面で表示しているモデルがある場合、アップデート後にリンク描画の挙動が変わる可能性があるため、あわせて確認してください。
  • 信頼できないユーザー入力を空間検索やジオメトリ関連のフィールドに渡す前に、必ずアプリケーション側でも検証を行う運用を徹底してください。

今後注目すべき点

本記事執筆時点で実際の悪用は確認されていませんが、Djangoは世界的に広く使われているPython製Webフレームワークであり、地図・位置情報系のアプリケーションでGeoDjangoの利用も一般的です。今後は以下の点が焦点になると考えられます。

  • CVE-2026-15307を悪用した攻撃や、概念実証コードが公開されるかどうか
  • 破壊的変更に伴う既存アプリケーションへの影響範囲
  • 同種の空間検索・ラスター処理に関する脆弱性が、他のGIS関連ライブラリでも見つかるかどうか

出典

Django security releases issued: 6.0.8 and 5.2.17——Django公式ブログ

Django 6.0.8 release notes——Django公式ドキュメント

Django 5.2.17 release notes——Django公式ドキュメント

Djangoで高リスクの脆弱性-SQLインジェクション(CVE-2025-64459)とDoS(CVE-2025-64458)——セキュリティ対策Lab