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-Host、X-Forwarded-Server、X-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