Django App Vulnerabilities Chained to Execute Arbitrary Code Remotely
2025/07/01 CyberSecurityNews — Django Web アプリケーションに影響を及ぼす、深刻なリモート・コード実行 (RCE) 脆弱性が発見された。この脆弱性を悪用する攻撃者は、無害に見える CSV ファイルのアップロード機能を介して、サーバの完全な乗っ取りを可能にする。2025年6月30日に公開された、この脆弱性を悪用する攻撃者は、ディレクトリ・トラバーサルと pandas の CSV パーサー悪用を連鎖させることで、Django の wsgi.py ファイルを上書きし、任意のコード実行の可能性を得るという。CSV コメント内に埋め込まれた悪意の Python コードは、pandas の処理を回避して残存し、Django が “wsgi.py” を再読み込みする際に自動的に実行される。

要約
- Django の RCE 脆弱性を悪用する攻撃者は、ディレクトリ・トラバーサルと CSV パーサーの悪用を連鎖させ、ファイル・アップロードを通じてサーバを侵害する。
- サニタイズされていないユーザー名入力 (例: ../../../../../../app/backend/backend/) を悪用する攻撃者は、Django の “wsgi.py” を標的にできる。
- CSV コメント内に埋め込まれた悪意の Python コードは、pandas の処理を回避して残存し、Django が “wsgi.py” を再読み込みする際に自動的に実行される。
- この脆弱性を悪用する攻撃者は、完全なリモート・コード実行とインフラへの侵入を可能にする。
CSV アップロードによる Django アプリ・リモート・コード実行
セキュリティ研究者 Jineesh AK が、バグ報奨金プログラムを介して、 CSV ファイルを処理する Django アプリケーションの脆弱性を報告した。このアプリケーションの脆弱なエンドポイントは、pandas でアップロードされた CSV を解析し、ユーザー指定の入力をベースとする処理結果をディスクに保存していたという。
この深刻な脆弱性は、ユーザーが提供するデータを、アプリケーションが適切にサニタイズせず、信頼していたことに起因する。以下の脆弱なコード・セグメントが示すのは、ユーザー名パラメーターがファイル・パスに対して、ダイレクトに組み込まれている状況である。
この問題点を悪用する攻撃者は、ディレクトリ・トラバーサル。シーケンス (例: ../../../../../../app/backend/backend/) を用いてファイルの書き込み先を操作し、アクセス制御をバイパスすることで、機密ファイルの標的化を可能にするという。
この研究者が実証したのは、pandas の read_csv() と to_csv() 処理を通過しても有効な Python コードとして残る、エクスプロイト手法としての CSV ペイロードの作成が可能であることだ。悪意のペイロードを Python のコメントとして埋め込むことで、pandas が挿入するカンマやフォーマットが、Python インタプリタで無視されるように工夫している。この手法は、CSV パースと Python 構文への深い理解を示している。
ターゲット・ファイルとして “wsgi.py” が選ばれたのは、この Web Server Gateway Interface ファイルを、Django 開発サーバが自動的に再読み込みするという特性により、変更時に手動操作なしで即座にコード実行できる点にある。
この脆弱性が示すのは、軽微に見える欠陥であっても、それらを連鎖させることで、深刻なエクスプロイトへと発展するリスクである。この攻撃ベクターが浮き彫りにするのは、ユーザー入力の未検証/サードパーティ・ライブラリの不適切なファイル処理/Django の自動再読み込み機能などの問題である。
この脆弱性を悪用する攻撃者は、サーバ上で任意のコードを実行し、データ窃取/システム侵害/インフラ内での横方向移動などを可能にする。
ファイル・アップロード機能を備えた、Django アプリケーションを運用する組織にとって必要なことは、同様のパターンの存在の有無について直ちに監査を実施し、適切な入力検証を徹底することである。さらに推奨されるのは、ファイル処理操作のサンドボックス化などを検討することで、このようなエクスプロイトの連鎖を防止することである。
Django アプリケーションに、深刻なリモート・コード実行 (RCE) 脆弱性が発見されました。CSV ファイルのアップロード機能を悪用する攻撃者は、pandas やファイル・パス操作の弱点を突いて、サーバを乗っ取ることができると、この記事は指摘しています。ご利用のチームは、十分に ご注意ください。よろしければ、Django で検索も、ご参照ください。
You must be logged in to post a comment.