パソコンの利用者がよく使うWebサイトにアクセスしているとします。しかし、無意識のうちに偽のWebサイトに誘導されるかもしれません。
その脅威がDNSキャッシュポイズニング攻撃です。
DNSはドメイン名(本サイトであれば、three-wise-monkeys.comです)をIPアドレスに変換する役割を担っています(これはDNSの持つひとつの役割です)。たとえば、このサイトのドメイン名を「WHOIS情報検索」のサービスでIPアドレスを検索すると次のように表示されます。
すなわち、クライアントが指定したドメインからこのサイトにアクセスをするには、ドメイン名からIPアドレスに名前解決を行い、IPアドレスによってWebサーバーにアクセスします(下図)。
DNSサーバーはキャッシュサーバーと、コンテンツサーバーに分かれます。両者が連携してDNSサービスを実現しています。コンテンツサーバーはドメイン情報の原本を管理し、キャッシュサーバーはクライアントに代わってコンテンツサーバーに問い合わせを行うDNSサーバーです。コンテンツサーバーにドメイン情報の原本を問い合わせた結果を一時的に複製します。
DNSキャッシュサーバーで複製情報を保管していることで、コンテンツサーバーに問い合わせをする頻度が減り、名前解決も迅速に出来ます。ここでちょっとややこしい言葉なのですが、クライアントからDNSに問い合わせを行うことを「再帰的問い合わせ」と呼びます。そして、クライアントに代わってキャッシュサーバーがコンテンツサーバーに「再帰動作」と呼びます。
このややこしい「再帰」という言葉を補足します。再帰とは、あるものについて記述する際に、記述しているものそれ自身への参照が、その記述中にあらわれることをいいます。高校数学で習った漸化式は、各項がそれ以前の項の関数として定まります。これは数列を再帰的に定める等式です。
数列{𝑎n}が次の2つの条件を満たしているとします。
- 𝑎1=1
- 𝑎n+1=an+n(n=1,2,3…)
1をもとにして2においてnを1,2,3…とすると
- 𝑎2=𝑎1+1=1+1=2
- 𝑎3=𝑎2+2=2+2=4
- 𝑎4=𝑎3+3=4+3=7
となり、順次𝑎2,𝑎3,𝑎4…の値がただ1通りに定まります。したがって、数列{𝑎n}は、上に書いた1と2によってえ定められます。
~【参考:数学B(数学的帰納法)より/教研出版】
さて、DNSキャッシュポイズニング攻撃は攻撃者が再帰的問い合わせを行う際、コンテンツサーバーからの回答より先に偽の回答を行い、偽の複製をキャッシュサーバーに埋め込む攻撃です。
DNSキャッシュポイズニング攻撃により、クライアントからの再帰問い合わせによる名前解決は偽の複製から、偽のIPアドレスが回答されます。その情報により攻撃者の用意した偽のWebサーバーに誘導されます。