DNSの仕組みを根底から揺るがすカミンスキー攻撃にどう備える?
0
会員になると、いいね!でマイページに保存できます。
共有する
インターネットにおいて、名前解決を行っているのが「DNS(Domain Name System )」だ。このシステムに問題が発生すると、パケットは正しい経路をたどることができず、インターネットそのものが成り立たなくなってしまうおそれすらある。このDNSが攻撃を受けると、ユーザーは正しいドメイン名にアクセスしているつもりでも、まったく偽のサイトに誘導され、フィッシング被害を受けることになる。このようなDNSに対する攻撃に対応するために進んでいる取り組みが「DNSSEC」である。今回は、この具体的な内容と最新動向を解説していく。
古くから存在していたDNSへの脅威
DNS(Domain Name System)は、インターネット上でドメイン名を利用するための必要不可欠なシステムであり、DNSへの攻撃や乗っ取りが行われてしまうと、インターネットそのものが利用できない、という最悪の事態に陥る可能性がある。
現在のDNSの仕組みが考案されたのは、今から20年以上も前に遡る。DNSはIPアドレスとドメイン名を利用した名前解決の仕組みとして1983年に公表され、インターネットの「名前解決」の基盤として利用されてきた。この仕組みは、まだインターネットがどのように発展するかもわからない時代に設計されたものだが、基本的な構造は現在も変わってはいない。
その反面、DNSサーバに対する脅威は高まる一方である。たとえば、大量のパケットを複数の拠点から送り込み、DNSサーバを麻痺させようとする「DDoS(サービス拒否)攻撃」や、DNSサーバを乗っ取って偽のIPアドレスを仕込む「DNSキャッシュポイズニング」といった不正行為は、インターネットが世界的に広まった2000年代前半頃には既に問題となっていた。
中でも昨今特に大きな問題となっているのがこの「DNSキャッシュポイズニング」だ。この攻撃を受けたDNSサーバは、攻撃者が仕込んだIPアドレスを返答してしまうため、フィッシングなどのおとりサイトへ誘導されてクレジットカードなどの個人情報が盗まれたり、なりすまし犯罪、データの盗聴などが行われる危険がある。
DNSキャッシュポイズニングを巡る攻防
DNSキャッシュポイズニングは、実は新手の攻撃手法ではなく、比較的古くから知られている伝統的な手法だ。
DNSサーバは、実際にドメイン名とIPアドレスの情報を持つ「権威サーバ(コンテンツサーバ)」とともに、ユーザーや他のDNSサーバからの問い合わせ/応答情報を一定期間保存する「キャッシュサーバ」で構成される。同じ問い合わせに対してはキャッシュサーバが代理応答するので、権威サーバの負荷を減らすことができる(
図1 )。
※クリックで拡大
図1 DNSキャッシュサーバの仕組み
この際、DNSでは問い合わせごとに異なる16ビットの識別子(トランザクションID)を付加し、送信元のIPアドレスとポート番号、トランザクションIDの全てが一致しないと、キャッシュサーバは権威サーバからの正しい応答として認めない仕組みを備えている。
しかし、事前に偽のDNS問い合わせを行って送信元IPアドレスとポート番号を割り出した上で、トランザクションIDを自動的に総当たりで試行すれば、トランザクションIDが一致した段階で正規の応答になりすまし、偽の情報をキャッシュサーバに仕込むことができる(
図2 )。IDの値は16ビット(65536通り)なので、総当たりでの試行もさほど難しくはない。
※クリックで拡大
図2 伝統的なキャッシュポイズニング攻撃の手法
とはいえ、この攻撃を防ぐ方法はすぐに見つかった。キャッシュサーバに保存する情報が有効な期間は「TTL(生存期間)」というパラメータで制御できる。このTTLを長く設定しておけば正当な情報がキャッシュされたままとなり、生存期間を過ぎるまでは偽の情報は仕込めない。
またこれまで、もっともインターネットでよく利用されているDNSサーバ「BIND」や、Windowsサーバ向けのDNSサーバ「Windows DNS」など、DNSサーバソフト自体にキャッシュポイズニング攻撃を可能とするようなセキュリティホールがたびたび発見されたが、パッチの適用やソフトウェアのバージョンアップによってそれを凌いでいた。
関連タグ