Spin Framework の脆弱性 CVE-2024-32980 が FIX:サンドボックス・エスケープの恐れ

Critical Spin Framework Flaw: Sandbox Escape Vulnerability Exposed (CVE-2024-32980)

2024/05/09 SecurityOnline — 先日に Spin Project が発表したのは、WebAssembly を使用して安全で高速なクラウド・マイクロサービスを構築/実行するために設計された、オープンソースの Spin Framework におけるキュリティ勧告である。それは、深刻な脆弱性 CVE-2024-32980 (CVSS:9.1) であり、きわめて高いリスクが懸念されるものだ。この脆弱性は、特別にコンフィグレーションされた Spin アプリケーションにおいて、ネットワーク・サンドボックス・エスケープの可能性を生じるものだ。


脆弱性 CVE-2024-32980 は、アプリケーションが URL 権限を指定せずに内部リクエストを行うという、特定の条件下において Spin アプリケーションに影響を及ぼす。攻撃者は Host HTTP ヘッダーを操作し、対象アプリケーションが任意のホストにリクエストを行うよう誘導することで、この脆弱性を悪用できる。この脆弱性の影響を受けるシステムは、不正なデータ・アクセスやサービスの中断などのセキュリティ侵害にさらされる可能性がある。

アプリケーションは、以下の状況で脆弱になる:

  • URL ベースのルーティング:Spin のランタイムをホストする環境は、Host ヘッダーではなく、 リクエスト URL に基づいてリクエストをルーティングする必要がある。
  • allowed_outbound_hostsの設定:リクエストを処理するアプリケーションのコンポーネントは、”allowed_outbound_hosts” リストに “self” を含む必要がある。
  • 送信リクエストの処理: インバウンド・リクエストを受け取ると、影響を受けるコンポーネントは、URL にホスト名やポートが含まれていないアウトバウンド・リクエストを発行するかもしれない。

これらの条件がすべて満たされ、ホスト名が明示的に提供されない場合には、 Spin は受信リクエストの Host ヘッダーを、送信リクエストの UR Lの権威部分として、誤って使用してしまう。

サーバーレス製品である Fermyon の Fermyon Cloud でホストされているアプリケーションが、この脆弱性の影響を受けない点は注目に値する。Fermyon Cloud のコンフィグレーションと運用モデルは、このような悪用シナリオを本質的に防いでいる。

Spin は、バージョン 2.4.3 をリリースし、この脆弱性に迅速に対応した。Spin Framework のユーザーは、潜在的な悪用からアプリケーションを保護するために、最新バージョンへのアップデートを急ぐ必要がある。

直ちにアップグレードできない場合を想定して、Spin プロジェクトは、いくつかの回避策を用意している:

  • Host ヘッダーのサニタイズ:リクエストがルーティングされるアプリケーションと一致するよう、Host ヘッダーが適切にサニタイズされていることを確認する。
  • URL にホスト名を明示: URL にホスト名を常に含めるよう、発信リクエストを修正し、”allowed_outbound_hosts” リスト “self” ではなく、このホスト名を使用する。
  • アプリケーション内サービスチェーン: 特に Spin バージョン 2.4 の環境では、アプリケーション内リクエストの処理に、アプリケーション内サービスチェーンを利用する。