何が起きたか
read_fileツールの非ページネーションブランチはvalidate_project_pathを使用しますが、ページネーションブランチ(offset/limitで選択)はパスを開く前にその封じ込めチェックをバイパスし、絶対パスと相対トラバーサルがプロジェクトルートから脱出できるようにします。これにより、MCP呼び出し元にサーバーで読み取り可能な任意のファイルが公開されます。
なぜ重要か
コードベースをインデックス化するAIコードグラフ/MCPツールは、ワークスペースガードがバイパスされると、任意のファイル読み取りプリミティブに変わり、ソース、構成、シークレットがネットワーク呼び出し元またはプロンプト注入されたエージェントセッションに公開される可能性があります。
攻撃経路
MCPToolsRegistry.read_fileのページネーションブランチは、攻撃者が制御するfile_pathをproject_rootに結合する際に、封じ込めを解決して検証しません。絶対パスは設定されたルートを破棄し、相対トラバーサルはその外側に解決されます。ネットワーク公開されたHTTP MCPサーバーの認証されていない呼び出し元は、サーバープロセスが利用可能な任意のUTF-8読み取り可能ファイル(資格情報、環境データ、秘密鍵を含む)を読み取ることができます。
影響を受けるシステム
code-graph-rag < 0.0.345
緩和策
code-graph-rag 0.0.345にアップグレードしてください。アドバイザリ: https://github.com/vitali87/code-graph-rag/security/advisories/GHSA-vvr2-h2jp-838m