概要
脆弱性名(Ja) | HTTP Strict Transport Security ポリシーがありません |
脆弱性名(En) | Missing HTTP Strict Transport Security Policy |
ID | 98056 |
危険度 | Low |
ファミリー | HTTP Security Header |
説明
HTTP Strict Transport Security (HSTS)は、ウェブサーバーがクライアントに対してHTTPSのみを使用するよう強制するセキュリティポリシーを提供するHTTPヘッダーです。
このヘッダーを設定することで、ブラウザがHTTPS接続以外を許可せず、HTTPダウングレード攻撃や中間者攻撃(MITM)を防ぎます。
ブラウザが初めてサイトにアクセスすると、このポリシーが適用され、以降のアクセスはすべてHTTPSを経由します。
HSTSには「max-age」パラメータがあり、この時間内はブラウザがHTTP接続を許可しません。
また、includeSubDomains
オプションを使用することで、すべてのサブドメインにも同様のポリシーを適用できます。
リスク
HSTSが設定されていない場合、攻撃者はHTTP通信を悪用して中間者攻撃が行われ、ユーザーの通信内容を盗聴したり、改ざんされたりするリスクがあります。
特に、HTTPS通信が正しく使用されていないと、ユーザーのブラウザがHTTP接続を許可し、機密情報が漏洩する可能性があります。また、HTTPダウングレード攻撃により、HTTPSで保護されるべき通信がHTTPに切り替えられるリスクも生じます。
検出トリガー
- HTTPレスポンスの「Strict-Transport-Security」ヘッダーが存在しない
NG: <記載なし>
OK: Strict-Transport-Security: max-age=31536000
OK: Strict-Transport-Security: max-age=31536000; includeSubDomains
max-ageの値について
HSTSヘッダーの「max-age」パラメータは、ブラウザがHTTPS接続を強制する期間を秒数で指定します。
通常、1年以上の値が推奨されますが、1年未満の場合、tenableプラグイン(98715)Permissive HTTP Strict Transport Security ポリシー
が検出されました
が検出される可能性があります。
これは、HSTSポリシーが短すぎるため、攻撃者がその期間内に攻撃を試みる余地が残されるためです。より強力な保護をするためには、最低でも1年、理想的には2年以上の期間を設定することが推奨されます。
HSTS max-age の推奨値は参考サイトによって異なります。
・mdn web docs: 31536000秒 (1年)
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security
・HSTS Preload: 63072000秒 (2年)
https://hstspreload.org/
対策
Apacheの設定
Apacheサーバーで「Content-Type」ヘッダーにcharsetを追加するには、以下の行を「.htaccess」またはサーバー設定に追加します。preload
は、HSTSプリロードリストにドメインを追加する際に必要です。
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Nginxの設定
Nginxでcharsetを設定するには、以下の設定をNginxの設定ファイルに追加します。
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
HSTS Preloadの登録
さらにセキュリティを強固にする場合、HSTS Preload Listにドメインを登録することが推奨されます。
プリロードリストに登録されると、ユーザーが初めてサイトにアクセスする前からHTTPSが強制され、より高いセキュリティが確保されます。
関連リンク
危険度が脆弱性ツールによって異なる場合があります。