この記事は学習用です。ChatGPT と GitHub Copilot を使っています。
1. 中間者攻撃とは
中間者攻撃(Man-in-the-Middle Attack、以下 MITM 攻撃)は、通信の途中に攻撃者が介入し、送受信されるデータを盗聴・改ざん・なりすましを行う攻撃手法である。
「利用者とサーバーの間に“第三者”が割り込む」という構造からこの名称が付けられている。
典型的な例
- 公衆 Wi‑Fi に接続した利用者の通信を盗聴する
- 偽の DNS 応答を返して別サイトに誘導する
- HTTPS 証明書を偽装して暗号通信を解読する
MITM 攻撃は「通信経路を制御できる環境」が前提条件であり、ネットワーク層・アプリケーション層の双方で発生しうる。
2. 攻撃の流れと技術的仕組み
MITM 攻撃の典型的な流れを図に示す。
攻撃の主な技術手法
攻撃手法 | 概要 | 攻撃対象層 |
---|---|---|
ARP スプーフィング | 偽の ARP 応答を送信して通信経路を乗っ取る | データリンク層 |
DNS ポイズニング | 偽の DNS 応答を返して偽サイトに誘導する | アプリケーション層 |
SSLストリッピング(HTTPS ストリッピング) | HTTPS へのリダイレクトを妨害し、HTTP にダウングレードさせる | アプリケーション層 |
セッションハイジャック | Cookie やトークンを奪取して認証を乗っ取る | アプリケーション層 |
3. 暗号化と MITM の関係
HTTPS(Hypertext Transfer Protocol Secure)は、TLS(Transport Layer Security)によって通信内容を暗号化する。
しかし、TLS を使用していても次のような状況では MITM が成立する。
- 偽の証明書を信頼してしまう場合
- 攻撃者が独自のルート証明書を端末にインストールする。
- SSL インスペクション機器を悪用する。
- 中間プロキシによる解析・改ざん
- 組織内プロキシや VPN ゲートウェイで通信内容を解析可能な構成である場合。
- 古い TLS バージョン・暗号スイートの利用
- TLS 1.0/1.1 は現在非推奨であり、既知の脆弱性があるため攻撃に弱い。
4. 実際の MITM 攻撃例
4.1 公衆 Wi‑Fi 経由の盗聴
攻撃者はオープン Wi‑Fi を設置し、接続した利用者の通信を中継する。
DNS や HTTP リクエストを傍受し、ログイン情報を収集する。
4.2 SSLストリッピング(HTTPS ストリッピング)
利用者が http://example.com
にアクセスした際、攻撃者が https://example.com
へのリダイレクトを削除し、暗号化通信に移行させない。
この状態でパスワードを入力すると、HTTP 平文で送信される。
4.3 HSTS ストリッピング
攻撃者が初回アクセス時の HSTS ヘッダーを除去・改ざんしたり、HSTS プリロードが未対応のドメインを狙って HTTPS 強制を無効化する。
対策として、HSTS(includeSubDomains; preload)とプリロードリスト登録を組み合わせる。
5. 防御策:MITM 攻撃を防ぐ技術と運用
防御は「通信経路の安全化」と「信頼性の検証」の 2 点が中心となる。
技術的対策
対策項目 | 内容 | 有効範囲 |
---|---|---|
HTTPS の常時化 | 全ページで TLS 通信を使用 | アプリケーション層 |
HSTS(HTTP Strict Transport Security) | HTTP から HTTPS へのダウングレードと HSTS ストリッピングの抑止(preload 推奨) | ブラウザー層 |
DNSSEC | DNS 応答に署名を付与し改ざんを検知 | ネットワーク層 |
VPN 利用 | 通信全体を暗号トンネル化 | ネットワーク層 |
証明書ピンニング | 特定の公開鍵のみを信頼 | アプリケーション/モバイル層 |
運用的対策
- 公衆 Wi‑Fi では VPN 接続を義務化
- 不審な証明書警告を無視しない教育
- サーバー証明書の自動更新(Let's Encrypt など)
6. 開発者視点での防御実装
Web アプリケーションやモバイルアプリ開発者は、以下の設定を明示的に行う必要がある。
HTTPS 強制(例:Nginx)
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
証明書ピンニング(例:モバイルアプリ)
アプリ側に公開鍵ハッシュを埋め込み、サーバー証明書と一致しない場合に通信を拒否する。
Cookie 設定
Set-Cookie: sessionid=abc123; Secure; HttpOnly; SameSite=Strict
これにより、セッション情報を平文で送信しない。
7. よくある誤解と注意点
誤解 | 実際 |
---|---|
HTTPS なら完全に安全 | 証明書偽装・古い暗号スイートには脆弱性がある |
VPN を使えば万全 | 信頼できない VPN や VPN サーバーは危険な場合がある |
社内 LAN なら安心 | ARP スプーフィングは LAN 内部でも起きうる |
開発・運用・利用のすべての層で防御を多層的に行うことが重要である。
8. まとめ
中間者攻撃は、通信経路を悪用してデータを盗聴・改ざんする代表的なサイバー攻撃である。
現代の Web 通信では TLS が標準となったが、運用設定や利用者教育を怠ると防御効果は限定的となる。
「暗号化」だけでなく、「正しい認証と検証」を組み合わせることが MITM 対策の本質である。
A. 参考サイト
- https://developer.mozilla.org/ja/docs/Web/Security/Types_of_attacks#中間者攻撃
- https://www.ipa.go.jp/archive/security/vuln/programming/web/chapter3/3-3.html
コメント