Moshiru

会社のセキュリティ教科書 第2部 2-12

DNSキャッシュポイズニング・セッションハイジャック・リプレイ攻撃とは|通信を狙う3つの攻撃と防ぎ方

公開:2026年10月15日/最終更新:同/Moshiru 岡﨑 悠太

こんなときに役立ちます

  • 「通信が盗聴される」「セッションが乗っ取られる」と言われて、何が起きるか知りたいとき
  • 自社サイトやECサイトのHTTPS化・ログインの作りを、制作会社に確かめたいとき
  • 社員が外出先のWi-Fiで仕事をしてよいか、ルールを決めたいとき

読み終えたあと、社内でこう言えます

「通信を狙う3つの攻撃と、うちの対策の有無を整理しました」

結論:3つは狙う場所が違います。DNSキャッシュポイズニングは「行き先の案内」をすり替え、偽のサイトへ連れて行きます。セッションハイジャックは「ログイン中の印」を奪い、本人になりすまします。リプレイ攻撃は「一度使われたやり取り」を写して再送し、正しい相手のふりをします。対策の軸は、DNSSECとHTTPSで「相手が本物か」を確かめること、ログインの印を推測も盗用もされにくくすること、一度きりの値や時刻で「今のやり取りか」を確かめることです。中小企業がまずやるのは、全ページのHTTPS化と、ログイン状態の扱いの確認です。

DNSキャッシュポイズニングは案内をすり替え、セッションハイジャックはログインの印を奪い、リプレイ攻撃はやり取りを再送する。DNSSEC、HTTPS、推測されにくいセッションID、一度きりの値と時刻で防ぐ

3つの攻撃は、狙う場所が違う

インターネットでサイトを見るとき、裏では3つの段階があります。名前から住所を調べる、相手とつながってログインする、ログインした状態でやり取りを続ける、の3つです。今回の攻撃は、それぞれの段階に入り込みます。

攻撃狙う所起きること主な対策
DNSキャッシュポイズニング名前から住所を調べる仕組み正しいURLを入れても偽のサイトに着くDNSSEC、DNSサーバーの更新、HTTPS
セッションハイジャックログイン中の印パスワードなしで本人になりすまされる推測されにくいID、HTTPS、ログイン後のID変更
リプレイ攻撃過去のやり取り写されたやり取りを再送され、通ってしまう一度きりの値、時刻、使い捨てのコード

「盗聴」は、この3つの多くの入口になります。暗号化されていない通信を盗み見られると、ログインの印ややり取りの中身がそのまま写されるからです。

DNSキャッシュポイズニング:案内所の住所録をすり替える

DNS(ドメイン名システム)は、「example.co.jp」のような名前を、機械が使う住所(IPアドレス)に変える仕組みです。毎回調べると時間がかかるため、途中の「キャッシュDNSサーバー」が答えを覚えておきます。駅の案内所が、よく聞かれる行き先をメモしておくようなものです。

キャッシュポイズニングは、このメモに偽の住所を書き込ませる攻撃です。.jpを管理するJPRSの解説によると、攻撃者は送信元を偽った偽の応答を、本物より先に届けます。覚えた偽の情報は本物として扱われ、利用者は偽のサイトに誘導されます。

2008年に、成功しやすい手口が見つかった

JPRSによると、2008年7月に研究者のダン・カミンスキー氏が、従来より効率よく偽の情報を覚えさせる手口を公表しました。DNSの問い合わせを見分ける番号は16ビット、6万5,536通りしかなく、それだけでは足りないことが分かりました。各ソフトの開発元は急いで修正を出しました。

.jpドメインでは、JPRSが2011年1月にDNSSECへの対応を終えています。自社ドメインで使えるかは、ドメインを管理している事業者の対応によります。

セッションハイジャック:ログイン中の印を奪う

サイトにログインすると、サーバーは「この人は確認済み」という印(セッションID)を発行し、ブラウザがCookieとして持ちます。セッションハイジャックは、この印を手に入れて本人になりすます攻撃です。パスワードを知らなくても、印さえあればログイン中として扱われます。

IPAの「安全なウェブサイトの作り方」は、印を狙う手口を3つに分けています。

手口中身作り側の対策
推測連番など、予想できる印を当てる予測しにくい乱数で作る。実績あるセッション管理の機能を使う
盗用盗聴やURLからの漏れで印を手に入れる印をURLに入れない。HTTPSのCookieにsecure属性を付ける
固定化攻撃者が用意した印のままログインさせるログインが成功したら新しい印に替える

IPAは、Cookieの有効期限を必要以上に長くしないことも、被害を抑える対策として挙げています。最近は、偽のログイン画面で多要素認証を通らせ、発行された印を奪う手口も増えています。仕組みと防ぎ方はAitB攻撃とはにまとめています。

リプレイ攻撃:一度通ったやり取りを再送する

NIST(米国国立標準技術研究所)は、リプレイ攻撃を「正当な利用者と確認する側のやり取りを写しておき、再送して相手になりすます攻撃」と定義しています。中身を読めなくても、そのまま送り直すだけで通ってしまう点が特徴です。

防ぎ方は「そのやり取りが今のものか」を確かめることです。

  1. 一度きりの値(ナンス):確認する側が毎回違う値を出し、その値を使った答えだけを受け付けます。NISTは、こうした仕組みを持つ方式はリプレイ攻撃に強いとしています。
  2. 時刻(タイムスタンプ):Kerberos認証の仕様(RFC 4120)では、メッセージに時刻を入れ、ずれが許容範囲を超えたものや、同じものが二度来たものを拒否します。
  3. 使い捨てのコード:NISTは、ワンタイムパスワードは有効期間中でも一度しか受け付けてはならないとしています。

逆に、毎回同じものを送るパスワードは、リプレイ攻撃に強くありません。NISTもこの点を明記しています。HTTPSで通信を暗号化し、写されにくくすることも合わせて効きます。

中小企業がやること:まずHTTPSとログインの作り

3つの攻撃は仕組みが違っても、守り方は重なります。たとえば社員30人の卸売業(架空の例)で、取引先向けの受発注サイトを制作会社に任せている、とします。次の表を、制作会社やホスティング会社への確認項目として使えます。

確かめることなぜ効くか
全ページがHTTPSか。HTTPで開くとHTTPSへ移るか盗聴で印ややり取りを写されにくくなります。偽のサイトへ誘導されても、証明書の警告で気づける場面が増えます。
HSTSを設定しているかブラウザに「このサイトは必ずHTTPSで開く」と覚えさせる仕組みです(RFC 6797)。
ログインのCookieにsecure属性があるかHTTPの通信で印が流れないようにします。
ログインのたびに新しいセッションIDになるか固定化を防ぎます。
ログイン状態が何日続くか印を盗まれたときに使える期間を短くします。
社内のルーターやDNSサーバーが更新されているか古いDNSの実装は、キャッシュポイズニングに弱いことがあります。

社員の外出先の仕事では、公衆無線LANにも気をつけます。総務省の資料は、暗号化されていない無線区間の盗み見や、本物を装ったアクセスポイントへの接続をリスクに挙げています。HTTPSやVPNで通信を守るのが基本です。

チェックシートではこう聞かれる

よくある設問答え方の例
外部に公開しているWebサイトは、すべてSSL/TLSで暗号化していますか。はい。全ページをHTTPSで提供し、HTTPでの接続はHTTPSへ転送しています。
社外から社内システムやクラウドへ接続するとき、通信を暗号化していますか。はい。クラウドはHTTPSのみ、社内システムへはVPN経由に限っています。
Webアプリケーションのセッション管理について、脆弱性への対策を行っていますか。はい。制作会社に、ログイン後のセッションID変更とCookieのsecure属性を確認し、記録を残しています。
公衆無線LANの利用についてルールを定めていますか。はい。業務での利用はVPN接続時に限ると社内規程で定めています。

試験ではここが問われる

SG・支援士・Security+ 2・CISSP 4

  • DNSキャッシュポイズニング:キャッシュDNSサーバーに偽の応答を覚えさせる攻撃。対策はDNSSEC(電子署名で応答を検証)、送信元ポートのランダム化、オープンリゾルバの停止。
  • DNSSECが守るもの:応答の出どころと改ざんの有無(完全性)。通信を暗号化して隠すものではない、と区別する。
  • セッションハイジャックの3類型:推測・盗用・固定化。固定化の対策は「ログイン成功後に新しいセッションIDを発行」。
  • リプレイ攻撃の対策:ナンス(一度きりの値)、タイムスタンプ、シーケンス番号、ワンタイムパスワード。暗号化だけでは、写したものの再送は防げないことがある。
  • 紛らわしい対:セッションハイジャックは「印を奪う」、リプレイ攻撃は「やり取りを写して再送する」。

確認問題

問1 DNSキャッシュポイズニングへの対策として、最も適切なものはどれですか。

  1. ア ログイン成功後に新しいセッションIDを発行する
  2. イ DNSの応答に電子署名を付けて、受け取った側で検証できるようにする
  3. ウ パスワードの文字数を増やす
  4. エ メールの送信元を確かめる仕組みを入れる
答えと解説
正解:イ DNSSECの説明です。アはセッション固定化の対策、ウはパスワード推測への対策、エはなりすましメールの対策で、DNSの応答のすり替えは防げません。

問2 リプレイ攻撃への対策として、最も適切なものはどれですか。

  1. ア 毎回同じパスワードを送るようにする
  2. イ 認証のたびに一度きりの値や時刻を使い、古いやり取りを受け付けない
  3. ウ Webサーバーを2台に増やす
  4. エ 受信したメールの添付ファイルを開かない
答えと解説
正解:イ 写したやり取りを再送されても、値や時刻が古ければ拒否できます。アは毎回同じものを送るため、かえって再送に弱くなります。ウは可用性、エはマルウェアへの対策です。

問3 社員25人の工務店が、施主向けの見積もり確認サイトを制作会社に作ってもらいました。ログイン前に発行されたセッションIDが、ログイン後もそのまま使われていることが分かりました。このままだと起きやすい攻撃と、その対策の組み合わせとして最も適切なものはどれですか。

  1. ア DNSキャッシュポイズニング/DNSSECを使う
  2. イ セッション固定化/ログイン成功後に新しいセッションIDを発行する
  3. ウ DDoS攻撃/CDNを使う
  4. エ リプレイ攻撃/パスワードを定期的に変える
答えと解説
正解:イ 攻撃者が用意したIDのままログインさせると、そのIDで本人になりすませます。ログイン後にIDを替えれば、攻撃者の知っているIDは使えなくなります。ア・ウ・エは、この状況の原因に合っていません。

よくある質問

HTTPSにすれば、この3つはすべて防げますか?
盗聴による印の盗用や、やり取りの写し取りには大きく効きます。ただし、ログイン後にIDを替えない作りや、偽のログイン画面で利用者自身が入力してしまう手口は、HTTPSだけでは防げません。作りの確認と組み合わせます。
DNSSECは、自社で何か設定が要りますか?
自社ドメインに署名を付けるかは、ドメインやDNSを管理している事業者の対応によります。管理画面の項目や事業者の案内を確かめ、分からなければ事業者に文面で問い合わせます。
社員がカフェのWi-Fiで仕事をするのは禁止すべきですか?
一律に禁止するより、VPNを使う、HTTPSのサイトだけ使う、スマートフォンのテザリングを使う、といった条件を決める方が守られやすくなります。決めた条件はチェックシートの回答にもそのまま使えます。

暗号化の設定確認は任せて、結果を報告に使う

Moshiruは、打合せなしでテキストだけでお受けします。無料スキャンでは、対象のURLと許可をいただき、証明書の期限や古い暗号方式、HSTSなどのセキュリティヘッダを外から確かめ、重要度ごとの件数を文字でお返しします。

無料スキャンを申し込む対象のURLと許可だけメニューにないことを頼む文面で合意するまで料金はかかりません

参考にした資料

  1. JPRS トピックス&コラム No.009「新たなるDNSキャッシュポイズニングの脅威 ~カミンスキー・アタックの出現~」(2011年2月時点の情報)
  2. JPRS トピックス&コラム No.013「DNSSECの概要と今後の展開」(2011年4月時点の情報)
  3. JPRS「JPRS Deploys DNSSEC in the JP Domain Name Service」(2011年1月)
  4. IPA「安全なウェブサイトの作り方 - 1.4 セッション管理の不備」
  5. NIST CSRC Glossary「replay attack」(出典:NIST SP 800-63-4、SP 800-53 Rev. 5)
  6. NIST CSRC Glossary「session hijack attack」(出典:NIST SP 800-63-4)
  7. NIST SP 800-63B-4「Digital Identity Guidelines: Authentication and Authenticator Management」
  8. IETF「RFC 4120: The Kerberos Network Authentication Service (V5)」(2005年7月)
  9. IETF「RFC 6797: HTTP Strict Transport Security (HSTS)」(2012年11月)
  10. 総務省「公衆無線LANのセキュリティの現状について」(2017年11月)