RufRoot (CVE-2026-59726): 認証なしのMCPブリッジによるAIエージェント基盤の完全侵害
1. 基本情報
- 記事タイトル: RufRoot: エージェントを不正管理者化するMCPブリッジ脆弱性
- 出典: Noma Labs(SecurityWeekが2026-07-30に報道)
- 公開日: 2026-07-29
- オリジナル記事: https://noma.security/blog/rufroot-the-mcp-bridge-vulnerability-that-turns-agents-into-rogue-admins-cve-2026-59726/
- 関連ソース: https://www.securityweek.com/critical-ruflo-flaw-lets-attackers-spawn-rogue-ai-swarms/
- 関連エンティティ: Ruflo, MCP Bridge, CVE-2026-59726, Docker, MongoDB, OpenAI/Anthropic/Google/OpenRouter APIキー
- 深刻度: クリティカル
2. エグゼクティブサマリー
すべてのインターフェースにデフォルトで公開されるRufloのMCP Bridgeに対し、認証なしの単一POSTリクエストでコンテナ内でのコマンド実行が可能になります。これにより攻撃者はLLM APIキー、会話履歴、メモリ、エージェントスウォームを窃取・改ざん・永続化できます。
3. 攻撃フロー
- 攻撃者がTCP/3001上のRuflo MCP Bridgeに到達する。
- 攻撃者が認証なしで
tools/listを使って233のツールを列挙する。 - 攻撃者がJSON-RPCの
tools/callを/mcpへ送信し、ruflo__terminal_executeでコマンドを実行する。 - 攻撃者が
printenvなどのコマンドでLLMプロバイダーAPIキーを窃取する。 - 攻撃者が被害者のキーおよびコンピュートリソースを使って攻撃者制御のスウォームとエージェントを作成する。
- 攻撃者がAgentDBに悪意あるパターンを保存し、今後の出力メモリを汚染する。
- 攻撃者が認証なしのMongoDBから会話履歴とメタデータをダンプし外部へ送信する。
- 攻撃者が
/app/beacon.jsを作成しindex.jsにロードを注入、PID 1終了後のDocker再起動で永続化を実現する。 - 攻撃者がシェル履歴をクリアする。
4. 攻撃者の位置と実行場所
攻撃者は任意のネットワーク到達可能な場所からHTTP POSTリクエストを送信します。コマンドはDockerコンテナ内のnodeユーザー(UID 1000)として実行され、内部Dockerネットワーク、MongoDB、環境変数、エージェントAPIに到達します。
5. 被害者および管理者からの可視性
- ユーザーアクションやプロンプトは不要。
- 活動は通常のMCPツールコールと同様のHTTPリクエストに見える。
- 新しいスウォーム、エージェント、メモリパターン、会話アクセスが管理ダッシュボードに表示される可能性がある。
- ホストレベルのEDRだけでは
nodeユーザーの活動、一時的なMongoDBクライアント利用、コンテナ内のファイル変更を見逃す可能性がある。
6. 成功・失敗の条件
成功条件
- 脆弱なバージョンのRufloを使用し、攻撃者がTCP/3001に到達可能。
/mcpに認証、IP制限、リバースプロキシ保護が欠如している。- デフォルトの共有環境変数、認証なしMongoDB、再起動ポリシーが残っている。
失敗条件
- パッチ適用版へ更新する。
- Bridgeをlocalhostまたは管理ネットワークに制限し、認証とネットワークポリシーを追加する。
- コンテナを機密環境変数、内部データベース、アウトバウンド通信から分離する。
7. 攻撃成功時の影響
攻撃によりLLM予算およびAPI権限の不正利用、会話履歴と機密データの窃取、AIメモリの長期汚染、攻撃者制御エージェントの作成、コンテナ永続化が発生します。エージェントが内部データベース、ソースコード、クラウド権限にアクセスできる場合、影響はRufloを超えて拡大します。
8. 観測可能なログ
- メール: 通常なし。
- Proxy/SWG/DNS: Rufloからの不明OAST/外部宛先、LLM APIトラフィックの急増、パッケージダウンロード。
-
Endpoint/EDR:
node子プロセス、printenv、MongoDBクライアント、/tmp、/app/beacon.js、index.jsの変更、PID 1終了。 - Identity/IdP: LLM APIキーの異常利用。人間IDログではこの活動が表示されない可能性がある。
- SaaS/Cloud: 新規スウォーム/エージェント、異常ツールコール、AgentDB書き込み、EC2/コンテナ監査。
-
Network: TCP/3001への外部リクエスト、
/mcp、tools/list、terminal_execute、コンテナからのOASTおよびデータ漏洩。
9. 攻撃成功判定
-
接触のみ: ポート3001スキャン、
tools/list。 - ユーザーアクション: 不要。
-
初期実行:
terminal_execute応答、OASTコールバック。 - マルウェアまたは認証成功: APIキー取得と不正利用、攻撃者エージェント作成。
- データ窃取 / セッション侵害: MongoDB会話ダンプと外部送信。
- 後続侵害確認: メモリ汚染、ビーコン永続化、Ruflo外のクラウドまたは内部リソースへのアクセス。
10. 調査プレイブック
-
トリガー: ポート3001への外部アクセス、認証なし
/mcp、terminal_execute、不明エージェント作成。 - 初期確認: バージョン、露出範囲、アクセスログ、コンテナID、キー位置を確認。
-
エンドポイント: コンテナファイルシステム差分、プロセス、
/appおよび/tmp、再起動履歴、Dockerイベントを保存。 - 認証 / クラウド: 全LLM/APIキーの利用履歴、クラウド監査ログ、シークレット管理システムを確認。
- 後続活動: AgentDB、MongoDB、会話履歴、生成エージェント、外部通信、アクセス可能な内部リソースを調査。
- 封じ込め: ポート3001をブロック、コンテナを分離・再構築、全キーを無効化、データベース認証情報を追加、メモリとコードを既知の正常状態に復元。
- 状態分類: 露出 / 列挙済み / RCE / シークレット窃取 / エージェントまたはメモリ侵害 / データ漏洩 / 下流侵害。
11. 防御・検知アイデア
-
単一イベント: 外部からの
POST /mcp、terminal_execute、printenv、agentdb_pattern-store、新規ビーコン。 -
タイムライン相関:
tools/list→ シェル実行 → 環境変数列挙 → エージェント作成 → データベースダンプ → ファイル変更 → 再起動。 - ハンティング: ポート3001が公開または内部公開されているRufloインスタンス、シャドーAI資産、異常なLLMキー利用を検索。
- ログギャップ: MCPツール監査、コンテナプロセスログ、AgentDB変更履歴がない場合、改ざん範囲を特定できない。
- 優先アクション: ソフトウェア更新、公開アクセスの制限、認証の実装、シークレットの分離、出力トラフィック制御、コンテナ最小権限の適用、AI運用ログのSIEM統合。
12. 事実 / 推論 / 仮説
事実
- Noma LabsはデフォルトAWS EC2構成で8段階PoCを検証。
/mcpは認証なしで233ツールを公開し、ブロックリスト回避でシェル実行を許可。- UID 1000であってもAPIキー、会話、データベース、メモリ、永続化メカニズムに到達可能。
推論
- これはAIコントロールプレーンにおける認証なしRCEであり、LLMプロンプトインジェクションではない。
- エージェント基盤の権限が広いほど、下流への影響は大きい。
仮説
- 全MCPコールにプリンシパル認証とポリシー決定ログを必須とすることで、同様の脆弱性の影響を大幅に低減可能。
13. MITRE ATT&CKマッピング
- 高確度: T1190 公開アプリケーションの悪用、T1059 コマンドおよびスクリプトインタープリター、T1552.001 ファイル/環境からの認証情報、T1005 ローカルシステムからのデータ、T1505 サーバーソフトウェアコンポーネント、T1070 インジケーター削除。
- 中確度: T1098 アカウント操作(エージェント作成をID操作とみなす場合)、T1556 認証プロセス改ざん、T1041 C2経由の漏洩。
14. 不明点と追加調査
- パッチ適用版および現在のデプロイ数。
- Bridgeアクセスログのデフォルト保持期間。
- 野外での既知のアクティブ悪用状況。
- コンテナエスケープの可能性。
- 窃取キーに関連する組織固有権限。
15. SOCおよび一般組織への影響
開発者が独立して展開するシャドーAIは資産インベントリを回避し、APIキーや内部ネットワークにアクセスできることが多い。SOCはAI製品名だけでなく、MCP Bridgeリスニングポート、ツール監査、エージェントID、メモリ変更を新たな監視対象として扱う必要がある。
16. 役割別サマリー
- SOCチーム向け: ポート3001露出、MCPツール列挙、シェル実行、キー利用、エージェント/メモリ改ざんの連鎖を検知。
- 管理者向け: Rufloを更新・非公開化、全APIキーをローテーション、コンテナを再構築。
- ユーザー向け: AIエージェント基盤を適切な認可なしに内部・外部ネットワークに公開しない。
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.