Django の脆弱性 CVE-2025-57833 が FIX:SQL インジェクションの可能性

Django Web Vulnerability Allows Attackers to Execute SQL Injection

2025/09/04 gbhackers — Django 開発チームが公表したのは、FilteredRelation 機能に存在する、深刻度の高い SQL インジェクションの脆弱性に対するセキュリティ・アップデートのリリースである。この脆弱性 CVE-2025-57833 を悪用する攻撃者は、想定外のクエリ・パラメータを作成し、有害なデータベース・コマンドを実行する可能性を手にする。Django 5.2/5.1/4.2 を利用するユーザーにとって必要なことは、速やかにアップデートを行い、アプリケーションを保護することだ。

Django Web 脆弱性の詳細

Django の FilteredRelation 機能は、フィルターに基づいたカラムの追加を実現することで、開発者による複雑なデータベース・クエリの作成を支援するものだ。

しかし、QuerySet.annotate() または QuerySet.alias() と組み合わせて使用した場合に、ディクショナリ・キーが適切に検証されないという問題が生じていた。

したがって、それを悪用する攻撃者は、カラム・エイリアスの構築方法を変更する悪意のディクショナリを渡し、データベース・クエリに SQL コードを挿入するという手段を得る。この種の攻撃が成功すると、機密データの漏洩や、無許可でのレコード変更などが生じる可能性がある。

CVE IDDescriptionSeverityAffected VersionsFixed Releases
CVE-2025-57833SQL injection in FilteredRelation column aliasesHighmain, 5.2, 5.1, 4.25.2.6, 5.1.12, 4.2.24
影響を受けるバージョン

発見時点でサポートされている、すべてのバージョンが影響を受けている、その中には、以下のバージョンが含まれる。

Django main (開発ブランチ)
Django 5.2
Django 5.1
Django 4.2

すでに Django チームは、それぞれのブランチにパッチを適用し、このエイリアス処理ロジックを修正している。これらのパッチは、Django GitHub リポジトリから入手できる。

解決策とパッチ

このセキュリティ修正は、メイン開発ブランチと、メンテナンス対象のリリース・ブランチにマージされている。したがってユーザーは、以下のコミットからパッチを確認して適用できる。

メインブランチ:51711717098d3f469f795dfa6bc3758b24f69ef7
5.2 ブランチ:4c044fcc866ec226f612c475950b690b0139d243
5.1 ブランチ:102965ea93072fe3c39a30be437c683ec1106ef5
4.2 ブランチ:31334e6965ad136a5e369993b01721499c5d1a92

これらのパッチを適用した後に、開発者にとって必要なことは、本番環境へのデプロイの前に、テスト・スイートを実行することである。

このアップグレード・プロセスを簡素化するために、Django チームは新しいリリースを公開した。それぞれのリリースには、セキュリティ修正と、その他の軽微な改善が含まれている。

開発者にとって必要なことは、Django 5.2.6/5.1.12/4.2.24 へとアップグレードし、アプリケーションを SQL インジェクション攻撃から保護することだ。

各リリースでは、検証に PGP キー ID 3955B19851EA96EF を使用している。開発者は、アップグレードを行う前に、ダウンロード内容を必ず確認すべきである。

なお、Django でセキュリティ上の問題を発見した場合は、自ら公開するのではなく、security@djangoproject.com まで詳細をメールで知らせる必要がある。このチームは、ユーザー保護のための、厳格な情報開示ポリシーに従っている。詳しくは、Django のセキュリティ・ポリシーを参照してほしい。