脆弱性  ·  2026-08-26

Chainlit MCPエンドポイント認証なしコマンドインジェクションおよびSSRF (SPL-2026-001/002)

脆弱性High 影響度GlobalCVE-2026-45018
Chainlitの MCP stdio トランスポートは、呼び出し元が指定したコマンド文字列の実行可能ファイル名のみを検証し、その引数は検証せず、未設定のアローリストを許可すべてとして扱うため、認証されていないネットワーク攻撃者が POST /mcp 経由で OS コマンドインジェクション (CWE-78) を実現できます。付随する欠陥 (CVE-2026-45019、CVSS 7.2) は SSE/ストリーミング可能な HTTP トランスポートに影響を与え、同じエンドポイントが攻撃者が選択したアップストリーム MCP URL をループバック/内部アドレスに対して検証することなく受け入れるため SSRF が発生します。
これは、MCP 機能 (LLM エージェントをツールに接続するための標準的な方法としてますます採用されている) がオンのときに、人気のある AI アプリケーションフレームワークに存在する認証なしの事前認証 RCE (CVSS 9.8) です。認証情報を持たない攻撃者は、Chainlit プロセスの権限でシェル実行を取得でき、これは通常 LLM プロバイダー API キーおよびバックエンドデータソースへのアクセス権も保持しています。
backend/chainlit/mcp.py の validate_mcp_command() は、攻撃者が指定した fullCommand 文字列内の実行可能ファイル名のみを config.features.mcp.stdio.allowed_executables に対してチェックし、残りの引数は未検査のまま StdioServerParameters に渡します。allowed_executables が未設定 (デフォルト) の場合、なしではなくすべての実行可能ファイルを許可するため、認証されていない呼び出し元が許可された実行可能ファイルと任意のシェルコマンドを実行するフラグを組み合わせたコマンドを送信できます。
Chainlit (Python 会話型 AI フレームワーク) 2.4.0rc0 – 2.11.x
Chainlit 2.12.0 にアップグレード、features.mcp.stdio.allowed_executables を明示的に設定および制限、MCP が必須でない場合は無効化、Chainlit 自身のセキュリティアドバイザリを参照してください。
Chainlit security advisoryIONIX Threat Center — CVE-2026-45018
ライブフィードで見る AIセキュリティとガバナンスの関連情報をさらに見る — 毎朝更新。
フィードを開く →