LLMエージェントによる初の自律型サイバー攻撃(BadHost CVE-2026-48710):Starletteホストヘッダー脆弱性がAIインフラを脅かす
LLMエージェントが「自律的に」サイバー攻撃を実行した——そんな報告が2026年5月下旬に相次いでいる。原因はStarlette(FastAPIの基盤となるASGIフレームワーク)に存在したHostヘッダー処理の脆弱性 CVE-2026-48710(通称 BadHost)だ。 この脆弱性は、従来の「手動攻撃」とは異なり、LLMエージェントが自ら脆弱性を発見・悪用する可能性を示した点で、AIセキュリティ史上初めての事例として注目されている。 脆弱性の概要 Starlette 1.0.0以前では、request.url を構築する際にクライアントから送られてくる Host ヘッダーをそのまま使用していた。この処理に問題があり、攻撃者が細工したHostヘッダーを送信することで、request.url.path の値と実際にルーティングされるパスが乖離する状態を作り出せた。 具体的には、以下のようなリクエストを送ることで認証ミドルウェアを欺くことが可能だった: GET /admin/users HTTP/1.1 Host: example.com/health?x= このリクエストに対し、Starletteは内部で request.url を http://example.com/health?x=/admin/users のように再構築してしまう。一部のミドルウェアが request.url.path を信頼してアクセス制御を行っていた場合、/health が許可リストに含まれていれば /admin/users へのアクセスが通ってしまう。 AIインフラへの影響が特に深刻な理由 この脆弱性がAIエージェント基盤に特に危険な理由は3つある。 1. MCP(Model Context Protocol)の設計思想との相性 MCPサーバーはOAuth discoveryエンドポイントを公開することが仕様上求められる。これらのエンドポイントは意図的に認証なしでアクセス可能に設計されているため、BadHost攻撃の「スケルトンキー」として機能しやすい。 2. ミドルウェアの一般的な実装パターン 多くのAIフレームワーク(FastAPI、vLLM、LiteLLM、BentoMLなど)で、以下のようなパターンが一般的だった: from starlette.middleware.base import BaseHTTPMiddleware class AuthMiddleware(BaseHTTPMiddleware): async def dispatch(self, request, call_next): if request.url.path in self.public_paths: return await call_next(request) # 認証処理... このパターンがBadHost攻撃の標的になる。 3. 325M週次ダウンロードという爆発的な普及 Starletteは2026年時点で週325百万回のダウンロードを記録している。AIエージェントのほとんどがこのフレームワークの上に構築されているため、影響範囲が極めて広い。 実践的な対策 即時対応(優先度高) Starletteを1.0.1以上にアップデート 公式パッチでHostヘッダーの検証が強化された scope["server"] へのフォールバック処理が追加 request.url.path ではなく scope["path"] を使用 ASGIスコープから取得したパスはHTTPリクエストラインから来るため、Hostヘッダーによる汚染を受けない リバースプロキシの導入 nginx、Caddy、TraefikなどでHostヘッダーを検証・正規化する RFC準拠のプロキシは不正なHostヘッダーを拒否する コード例(FastAPI + MCPサーバー向け) # 推奨パターン from starlette.requests import Request @app.middleware("http") async def secure_path_check(request: Request, call_next): # 悪い例: request.url.path を使用 # path = request.url.path # 良い例: scopeから直接取得 path = request.scope["path"] if path in PUBLIC_PATHS: return await call_next(request) ... まとめ BadHostは「AIエージェントが自律的に攻撃を実行する」時代が到来したことを象徴する脆弱性だ。従来のセキュリティ対策が「人間の攻撃者」を前提としていたのに対し、今後は「LLMエージェントが自ら脆弱性を発見・連鎖させる」シナリオを想定した防御設計が必要になる。 ...