お問い合わせはこちら

DNSキャッシュポイズニングとは?対策や最近の状況を解説

公開

2008年頃に発生したDNSキャッシュポイズニング(DNSキャッシュ汚染)問題が、最近また話題になっています。DNS(サーバー)のキャッシュが「汚染(毒)」されると何が問題で、どのように対策が取られて来たのでしょうか。この記事では、その概要や対策について解説しています。しっかり対応しないと、自社で提供するサービスの信頼を損なう恐れがあります。専門業者に相談し、対策は慎重に進めましょう。

DNSキャッシュポイズニングとは?

難しい用語が並んでいます。「DNS」と「キャッシュ」はサーバーやPCの動作で良く使われています。ポイズニング(poisoning)には「毒殺」など怖い意味がありますが、今回の場合ある機能を正常に動かないようにする働きと言い換えることができます。

DNS(Domain Name System)とは?

Webサイトを利用するときに使用する「ドメイン」(例:kagoya.jp)と、サーバー機器の識別番号の「IPアドレス」(例:203.142.206.81)を変換して、双方をつなぐ役割があります。これで利用者がWebサイトの場所を覚えやすくなり、出来る限り楽な操作で目的地に到達することができます。この変換機能にさらに「キャッシュ」の仕組みを備えたのが、DNSキャッシュサーバーと呼ばれています。

カゴヤのサーバー研究室では、DNSについて以下の記事でより詳しく解説しています。

【図解】DNSサーバーとは?設定・変更と確認方法

【図解】DNSサーバーとは?設定・変更と確認方法

DNS (Domain Name System) は、インターネットを支える大切な技術です。これがないと、Webサイトやメールの利用ができません。そもそも、ふだん使っている英数字のドメイン名と、Webやメールのサーバー機器にアクセスする番号 (IPアドレス) とは別物です。それらを変換する情報をDNSは保管して、提供するサービスを担当しています。この記事では、ドメイン名とIPアドレスを結びつけるこ…

FQDNとは?ドメイン名・ホスト名・IPアドレスとの違い

FQDNとは?ドメイン名・ホスト名・IPアドレスとの違い

FQDNとは、一般的にはドメイン名とホスト名をつなげた文字列です。実際には何を意味するのでしょうか。ドメイン名やホスト名、IPアドレスと混同して使われることもあり、分かりにくいですね。 この記事では、FQDNとドメイン名・ホスト名・IPアドレスとの違いを明らかにして、確認方法や応用事例を解説していきます。 FQDNとは? FQDNとは、Fully Qualified Domain Nameの略で、…

キャッシュ(cache)とは?

もともとの意味は貯蔵物や隠し場所です。サーバーなどに関連する用語では、データを一時的に保存する仕組みの意味に使われています。このキャッシュを活用すれば、Webサイトのデータがあるサーバーまで、利用者は毎回接続する必要はなくなります。その結果、利用者は目的のWebサイトをより速くブラウザに表示でき、サーバーの方も毎回対応が不要になり負担を減らす効果があります。このようにお金(キャッシュ – cash)のような価値を生み出していますが、同時に思わぬ弱点を突かれることになります。

何が「ポイズニング」されてしまうのか?

ずばりキャッシュです。これでドメインとIPアドレスの変換が正常にできなくなります。そうなるとブラウザにドメイン名を入力して表示されるWebサイトが、本物になりすました偽物になる可能性があります。もしこの嘘のWebサイトにある問い合わせフォームに、個人情報を入力し送信すれば、データは悪意をもった人に送信されます。その結果、悪用されて金銭的な被害につながります。

DNSサーバーの本来の役割は、あくまで指示に従った忠実な変換作業です。通常では、その指示内容の良し悪しまでは判断はしていません。そのため何らかの働きかけがあれば、IPアドレスを別のものに変換することで、本来のサーバーではない異なるサーバーにつながります。結果として、嘘のサーバー上にあるWebサイトが表示されることにつながります。

DNSキャッシュポイズニングが初めて発生した2008年以降、その対策は数多く実施されてきました。その後2020年になりSAD DNS(サドディーエヌエス)という手法が発見され、再びDNSキャッシュポイズニングが注目されるようになっています。SAD DNSについては次章で説明します。

DNSキャッシュポイズニングの被害

Webサイトでサービスを利用する側と提供する側に分けて説明します。

サービスの利用者として想定される主な被害

  • 金銭的な損害(クレジットカード情報の悪用などによるフィッシング詐欺)
  • 偽の問い合わせフォームに入力した重要な情報が盗み見られ悪用される
  • マルウェアに感染することでPCなどが使えなくなる

マルウェアについて、カゴヤのサーバー研究室では以下の記事でより詳しく解説しています。

【実用コラム】マルウェア対策のキホン!サーバーへの感染・拡大を防ぐために

【実用コラム】マルウェア対策のキホン!サーバーへの感染・拡大を防ぐために

マルウェアに感染して個人情報が流出した…などニュースでは聞いたことがあっても、どんな危険性があり、どう対策すればいいか分からない方も多いと思います。 企業で言えば、業務で使っている従業員各々のPCが狙われやすく、ここからネットワークを通じて基幹システムのサーバーや他PCに感染し、拡大していく危険性があります。 こちらの記事では、あらためてマルウェアについて概要と対策をまとめています。とくに対策では…

サービスの提供者として想定される主な被害

  • 正式なWebサイトにアクセスされないため、本来のサービスが提供できなくなる
  • サービスの利用時の被害状況から根拠のない風評被害を受け、事業に損失が出る

DNSキャッシュポイズニングの攻撃手法とその変化

前章で説明した基本的な攻撃手法に加えて、以下のような特徴のある手法について簡単にまとめています。

カミンスキー型攻撃(2008年)

攻撃対象に存在していないドメイン名を問い合わせ、偽のDNS「付加情報」に加えるため、DNSキャッシュサーバーは嘘の情報をキャッシュします。

DNS水責め攻撃(2014年)

ランダムサブドメイン攻撃とも呼ばれ、攻撃対象に適当なサブドメインを大量に問い合わせ、DNSキャッシュサーバーの機能を停止させる手法です。サーバーに設定しているキャッシュのデータサイズには限界があり、その制約を悪用しています。

SAD DNS(2020年)

DNSサーバーのソフトウェア設定で、ぜい弱性を突いた攻撃です。この場合、「ICMP」と呼ばれるエラーメッセージを報告する仕組みを利用しています。これでDNSキャッシュポイズニングがより成功しやすくなっています。

【参考サイト】
DNSキャッシュポイズニングの新たな手法「SAD DNS」、研究者が発見
https://japan.zdnet.com/article/35162418/
SAD DNS(サドディーエヌエス)
https://jprs.jp/glossary/index.php?ID=0270
増えるgTLDの登録数、NXNSAttackやSAD DNS攻撃など2020年の「ドメイン名ニュース」https://ascii.jp/elem/000/004/038/4038892/

DNSキャッシュポイズニングの基本的な考え方と対策事例

基本的な考え方

日本レジストリサービス(JPRS)の資料(2014年)によれば、対策について以下の三つの考え方があります。

  1. 偽の応答を注入されない(されにくくなる)ようにする
  2. 受け取った応答のチェックを厳重にする
  3. 攻撃を検知して対応する

これらは他の攻撃にも十分に応用が利き、流行に左右されない取り組み方と筆者は考えています。

【出典】
キャッシュポイズニング攻撃対策:キャッシュDNSサーバー運用者向け―基本対策編(11ページ)https://jprs.jp/tech/security/2014-04-30-poisoning-countermeasure-resolver-1.pdf

ソースポートランダマイゼーション(Source Port Randomization)の導入

問い合わせのポート番号を固定せずに、広い範囲の番号から無作為に選び、さらに別の要素(ID)と組み合わせることで、偽装を難しくする方法です。カミンスキー型攻撃に有効とされています。対策の対象は複数あるため、特定の場所だけを「ランダム」にすれば対策終了ではなく、決して万能ではありません。

【参考サイト】
DNSキャッシュポイズニング(2008年)
https://www.nic.ad.jp/ja/newsletter/No40/0800.html

DNSSEC (Domain Name System Security Extensions)の導入

偽装されていないかチェックを厳重にするために、電子署名の仕組みを導入しています。おおまかな仕組みは、ふだん利用しているSSLと同様です。DNSキャッシュサーバーは単独で動作せず、それらを管轄する「権威DNSサーバー」に問い合わせをします。DNSSECの導入により本来の権威DNSサーバーからの応答かどうか、偽装されていないかを点検することができます。

【参考サイト】
DNSSECとは(2008年)
https://www.nic.ad.jp/ja/basics/terms/dnssec.html
DNSSEC(2009年)
https://www.nic.ad.jp/ja/newsletter/No43/0800.html
権威サーバー(権威DNSサーバー)
https://jprs.jp/glossary/index.php?ID=0145

キャッシュの有効期限の設定値を見直す

この場合TTL(Time To Live)という数値で設定をします。例えば1時間有効の場合は、3600(秒)の数値です。この設定した時間内はキャッシュが有効なため、たとえ外部から書き換えするよう指示があっても書き換えは失敗します。TTLが長ければ長いほど正しい状態が続くため、一般的にはDNSキャッシュポイズニングには有効とされてきました。それでも、カミンスキー型攻撃では偽の情報で上書きされる方法が見つかり、DNSキャッシュポイズニング対策が無効となることがあります。

【参考サイト】
DNSキャッシュ
https://www.nic.ad.jp/ja/newsletter/No51/NL51_0800.pdf
新たなるDNSキャッシュポイズニングの脅威 ~カミンスキー・アタックの出現~(2011年)
https://jprs.jp/related-info/guide/009.pdf

設定値を見直す作業は専門的で難しいため、サーバーの管理者が行うことがほとんどです。一般の利用者が設定状況を確認できるWebサイトはありますが、こちらも難解です。不明点はサーバーを管理している業者などに問い合わせ、疑問を解消し対策をしていきましょう。

SSLの導入

理屈では、WebサイトのSSL証明書が正規であることが確認できれば、DNSキャッシュポイズニングには心配しなくてもいいことになります。それにもかかわらず、「正規」なSSL証明書を「不正」に取得されてしまうと、この方法では対処が困難です。例えば、無料で利用できる「Let’s Encrypt」のようなドメイン検証 (DV) 型の証明書に相当します。

【参考サイト】
DNSキャッシュポイズニング(2014)
https://eset-info.canon-its.jp/malware_info/term/detail/00073.html
DNSの完全性を守るためにすべきこと:IIJ DNSプラットフォームサービスのスゴいところ(第3回)(2020)
https://eng-blog.iij.ad.jp/archives/5735

SSLサーバー証明書の種類について、カゴヤのサーバー研究室では以下の記事で詳しく解説しています。

【図解】SSL/TLSとは何か?その違いや仕組み・導入方法についてわかりやすく解説します

【図解】SSL/TLSとは何か?その違いや仕組み・導入方法についてわかりやすく解説します

インターネット上で個人情報を守るためには、SSL/TLSを導入することが必要不可欠です。今回は、そのSSL/TLSとは何か?SSL通信とTLS通信との違い、仕組みや導入方法(無料含む)について初心者に向けてわかりやすく解説します。 SSL/TLSとは?暗号通信の仕組み SSLとはSecure Sockets Layerの略で、送受信しているデータを暗号化する通信手順です。実際にSSL化されているか…

DNSキャッシュポイズニングに不安があれば専門家に相談しましょう

インターネットやサーバーの仕組みを活用して事業を行う際、無数の脅威に囲まれていることはいつも感じている方が良いと考えます。今発生していることはもちろん、過去にあった多くの攻撃も知った上で、必要な対策を随時更新していくのが理想です。有り余る予算と時間があれば、独自で対応することもできるでしょう。ただその継続には労力がかかります。そのため専門会社が運営するサービスを利用したり、ふだんお付き合いをしているサーバー会社に相談することがより現実的です。

カゴヤ・ジャパンでは、DNSキャッシュポイズニングの不安など相談にお応えしています。一例では「マネージドサービス」を提供し、ウイルスや障害などの脅威に備える対策を、常駐の管理者が24時間365日対応しています。たとえ障害が起こったときでも、対応を専門家に任せることができます。