セキュアコーディング SSL Stripの攻撃と対策

こんにちは!私の名前はロックです。
私はベトナム出身で、現在メディアフュージョン株式会社でシステムエンジニアリングの製品開発に携わっています。
私はプログラミングとシステムセキュリティに情熱を持っており、同じ分野に興味のある人々と私の知識やノウハウを共有し、一緒に成長したいと考えています。一緒に働けることを楽しみにしています!
ウェブサイトのアドレスバーに🔒の鍵マークを見たことがあるでしょう。これは「安全なサイト」を示しています。しかし、HTTPSが有効だからといって必ずしも安全とは限りません。もしサイトの設定が不十分であれば、攻撃者は簡単に接続をHTTPに「ダウングレード」し、あなたの情報を盗み見ることが可能です。
この攻撃手法はSSL Stripと呼ばれ、10年以上前から存在するものの、今なお多くのシステムに脅威を与えています。
🕵️ SSL Stripはどう動くのか?

まず、HTTPSとは何かを理解しましょう。HTTPS(Hypertext Transfer Protocol Secure)は、HTTPの安全版であり、SSL/TLS証明書を用いてブラウザとサーバー間の通信を暗号化します。これにより、通信内容が盗聴や改ざんされるリスクが大幅に減少します。
しかし、多くのユーザーは「https://」を省略してドメイン名だけを入力します。例えば「example.com」と入力すると、ブラウザは最初に暗号化されていないHTTPで接続を試みます。
この「最初の接続」が攻撃者の絶好の隙となります。
攻撃者はWiFiなどのネットワークを掌握し、あなたとウェブサイトの間に入り込む(MITM攻撃:Man-in-the-Middle)。ユーザーがHTTPで接続しようとすると:
- ブラウザの自動的なHTTPSリダイレクトを妨害し、
- 攻撃者は本物のサーバーへは安全なHTTPSで接続しつつ、
- ユーザーにはHTTPのまま偽のページを返します。
結果、ユーザーは安全なサイトを見ていると錯覚しますが、通信は暗号化されておらず、入力したIDやパスワードが盗まれてしまいます。
🧠 なぜ今もSSL Stripが通用するのか?
「今どきHTTPSは当たり前なのに?」と思うかもしれません。しかし、以下の理由でSSL Stripは依然として強力です:
- ユーザーは「https://」をわざわざ入力しない習慣がある。
- ブラウザは初期接続でHTTPを使う仕様が多い。
- 多くのウェブサイトがHSTS(HTTP Strict Transport Security)を有効化していない。
- HTTPからHTTPSへのリダイレクトが攻撃者に妨害される可能性がある。
- HTTPSページ内にHTTPで読み込まれるコンテンツ(Mixed Content)が存在し、脆弱性が残る。
🛡️ SSL Stripを防ぐには?
SSL証明書を入れるだけでは不十分です。以下3点を確実に実施しましょう。
✅ 1. HTTPからHTTPSへ強制リダイレクトを設定する
サーバーでHTTPアクセスをすべてHTTPSに恒久的(301リダイレクト)に転送します。
例:Nginx
server {
listen 80;
return 301 https://$host$request_uri;
}
例:Apache
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
✅ 2. HSTSを有効にする
HSTSヘッダーはブラウザに「今後このサイトは必ずHTTPSで接続しろ」と命令します。これにより、ユーザーがHTTPを指定しなくても強制的にHTTPS接続になります。
例:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
- max-age=31536000(1年間有効)
- includeSubDomains(サブドメインにも適用)
- preload(ブラウザのHSTSプリロードリストに登録)
✅ 3. Mixed Contentを完全に排除する
HTTPSページ内にHTTPのスクリプト、画像、CSSが混在すると攻撃リスクが残ります。すべてHTTPSで読み込むよう修正してください。
誤:
<script src="https://example.com/app.js"></script>
正:
<script src="https://example.com/app.js"></script>
🧪 SSL Stripを学ぶには?
セキュリティ技術者や学生は、実験環境でSSL Stripの動作を学ぶのが非常に有効です。以下ツールがおすすめです:
- sslstrip(オリジナルツール)
- Bettercap(強力なMITMフレームワーク)
- mitmproxy(使いやすいCLIツール)
Kali LinuxやWiresharkと組み合わせて通信解析を行うと、攻撃の全貌が理解できます。
※必ず自己の実験環境内でのみ実施し、他者への攻撃は禁止です。
🧩 まとめ
対策 | 目的 |
HTTP → HTTPSリダイレクト(301) | ブラウザにHTTPS接続を強制 |
HSTS | ブラウザのHTTPアクセスを根本から排除 |
HSTS preload | 初回アクセスから安全を保証 |
Mixed Content排除 | HTTPSページ内の非暗号化コンテンツを排除 |
✅ 最後に
SSL Stripは、「HTTPSをただ導入しただけ」では防げません。正しく設定し、運用しなければユーザーの大切な情報は簡単に盗まれます。
- 301リダイレクトを必ず設定する。
- HSTS(できればプリロードも)を必ず有効にする。
- サイト全体のコンテンツをHTTPSに統一する。
攻撃者の視点を理解し、堅牢な防御体制を築きましょう。
📚 参考資料