コンテンツにスキップ

Index

HTTP Hostヘッダーのポイズニング

説明

HTTP Hostヘッダーは、HTTPクライアントがアクセスしたいドメイン名を指定します。これはHTTP/1.1標準の一部として必須です。

例えば、ドメイン www.ostorlab.co にアクセスするには、HTTPクライアントは Host ヘッダーを含む以下のリクエストを送信します。

http request GET / HTTP/1.1 Host: www.ostorlab.co

Host ヘッダーは、仮想ホストへのトラフィックのルーティングを可能にするために重要です。

Host ヘッダーを安全でない方法で処理するアプリケーションは、以下のような複数のクラスの脆弱性の影響を受けやすくなります。

  • サーバーサイドリクエストフォージェリ (SSRF)
  • Webキャッシュポイズニング
  • 安全でないリダイレクト

Host ヘッダーのポイズニングは、さまざまな方法で具体化する可能性があります。

  • 任意のHostヘッダーの反映
  • 重複したHostヘッダーのインジェクション
  • 絶対URLのインジェクションとHostヘッダー値の無視
  • 改行を追加することによるヘッダーインジェクション
  • X-HostX-Forwarded-ServerX-HTTP-Host-Override などの一般的なHost上書きヘッダーのインジェクション

推奨事項

Hostヘッダー攻撃に対する保護には、仮想ホストのサポート、リバースプロキシの使用、追加のルーティングヘッダーをサポートする特定のクラウド環境での存在など、アプリケーションのターゲットアーキテクチャに依存する複数のチェックが必要になります。

これらの攻撃から保護するための推奨事項は以下のとおりです。

  • アプリケーションロジックで Host ヘッダー値を使用しないようにする。
  • 許可された値のホワイトリストチェックを実装する。ほとんどのWebフレームワークは一般的にこれをサポートしています。
  • ホスト上書きヘッダーを無効にする。これは、アーキテクチャにデプロイされた中間コンポーネントに依存します。確認すべき一般的な場所は、リバースプロキシとKubernetes Ingressコントローラーです。

リンク

基準

  • PCI_STANDARDS:
    • REQ_6_2
    • REQ_6_3
    • REQ_6_4
    • REQ_11_3
  • HIPAA_CONTROLS:
    • SECURITY221
    • SECURITY212
    • SECURITY213