Sucuriはこのほど、「What is HSTS: HTTP Strict Transport Security」において、攻撃者がWebサイトとその利用者との間のトラフィックを改竄または傍受することを困難にするポリシーである「HTTP Strict Transport Security(HSTS)」について解説した。このポリシーを理解することは、Webサイトおよびその利用者を脅威から保護するのに役立つという。

  • What is HSTS: HTTP Strict Transport Security

    What is HSTS: HTTP Strict Transport Security

HTTP Strict Transport Security(HSTS)とは、ブラウザにHTTPS経由でのみ接続するよう指示するWebサーバディレクティブの一つ。このポリシは2012年に「RFC 6797 - HTTP Strict Transport Security (HSTS)」で標準化されている。

Sucuriによると、HTTPSには技術的な問題があり中間者攻撃(MITM: Man-in-the-middle attack)に対して脆弱になる可能性があるという。Webサイトの利用者がHTTP経由で接続したのちサーバからの指示でHTTPSに切り替えた場合、SSLストリッピングと呼ばれる中間者攻撃により接続がハイジャックされる可能性があるとされる。次の図のように攻撃者は利用者との通信をすべてHTTPでやり取りし、サーバとはHTTPSで通信して双方を中継することですべての通信を傍受、改竄することが可能とされる。

  • SSLストリッピング攻撃のイメージ - 提供:Sucuri

    SSLストリッピング攻撃のイメージ 引用:Sucuri

これに対し、サーバ側でHTTP Strict Transport Security(HSTS)が有効となっている場合は、次のような手順でHTTPS接続が行われるため、SSLストリッピング攻撃を回避できるとされる。

  1. ブラウザのHSTSプリロードリストにWebサイトの登録があるか確認し、登録がある場合はHTTPSで接続する
  2. 以前のアクセスでHSTSが指定されており、有効期限内の場合はHTTPSで接続する
  3. 上記を満たさない場合はHTTPでアクセスを行うが、サーバは301リダイレクトでHTTPSアクセスを求める
  4. ブラウザがHTTPSでアクセスするとサーバはHSTSとその有効期限を応答する。ブラウザはHSTSの情報をキャッシュに保存し、次回以降、上記2の条件に従いはじめからHTTPS接続を行う

HSTSプリロードリストとは、事前に登録されたHTTPS接続を要求するWebサイトの一覧のこと。Webサイトは一定の要件を満たしている場合に、「HSTS Preload List Submission」から登録を申請することができる。申請に必要な要件については同申請サイトに解説がある。

Sucuriは、Apache、NGINX、Sucuriファイアウォールのそれぞれについて、サーバ側でHTTP Strict Transport Security(HSTS)を有効にする設定を詳しく解説している。この解説では有効期限を1年としてしているが、動作確認が完了するまでの間は短い時間を指定して様子を見ることが推奨される。また、設定が有効かどうかをテストする方法についても紹介している。

Sucuriは、HTTP Strict Transport Security(HSTS)の利用によりWebサイトおよび利用者を保護できるとして活用を促している。ただし、HTTP Strict Transport Security(HSTS)はプライベートブラウジング時のプライバシのリスクや、一部の高度な攻撃に効果がないとされる。このため、HTTP Strict Transport Security(HSTS)の利点と制限を理解し、必要に応じて追加の処置を講じて適切な構成で運用することが望まれている。