DNS キャッシュ ポイズニングは、ユーザーを悪意のある Web サイトに誘導するために、DNS キャッシュに偽または偽造されたエントリを挿入することです。
DNS キャッシュ ポイズニングは、犯罪者が偽造した DNS 応答を送信することを可能にする脆弱性によって発生し、その応答はドメイン ネーム サーバー (DNS) によってキャッシュに保存されます。
通常、侵害されたエントリは、ユーザーを偽の Web サイトにリダイレクトします。攻撃者は、この Web サイトを使用して、マルウェアの拡散や、クレジット カードの詳細、パスワード、財務データ、その他の機密個人情報の窃取などの犯罪行為を実行します。
DNSキャッシュポイズニングが発生すると、DNSキャッシュサーバーは攻撃者から提供された不正なアドレスを保管し、正規のWebサイトへのアクセスを要求するユーザーにそれを発行します。ほとんどの場合、これは本物の Web サイトと同じように見えるため、訪問者は何かが間違っていると疑いにくくなります。
DNSキャッシュポイズニングの影響
DNS スプーフィングとも呼ばれる DNS キャッシュ ポイズニングは通常、検出が難しく、特に多くの訪問者やユーザーがいる人気の Web サイトや Web アプリケーションに大きな悪影響を与える可能性があります。これは、特に銀行、医療、オンライン小売、電子商取引などの一部のデリケートな業界において、大きなリスクをもたらします。
たとえば、攻撃者が Amazon の DNS レコードと IP アドレスを変更できたとします。次に、攻撃者が制御または所有する偽の IP を持つ別のサーバーをポイントします。正規の Amazon Web サイトにアクセスしようとすると、間違ったアドレスにリダイレクトされ、機密情報を盗む悪意のあるプログラムが含まれている可能性があります。
Web サイト以外にも、攻撃者は電子メール サーバーや銀行アプリなどの他の Web アプリケーションに偽のアドレスを挿入する可能性があります。その結果、すべてのビジネス電子メール通信またはトランザクションが攻撃者のサーバーにリダイレクトされます。
DNS の変更は定期的にあるサーバーから別のサーバーに伝播するため、汚染されたキャッシュが他の DNS サーバーやシステムに広がり、多大な損害を引き起こす可能性があります。たとえば、偽造されたエントリは、ISP DNS サーバーなどの他のマシンに急速に拡散し、そのエントリがキャッシュに保存される可能性があります。ここから、コンピュータのブラウザ、携帯電話、ルーターなど、ユーザーの近くにある機器にさらに広がり、それらの機器のキャッシュにも不正な記録が保存されます。
DNS キャッシュ ポイズニングはどのように機能しますか?
犯罪者はさまざまな手法を使用して DNS キャッシュを汚染する可能性があります。
通常の運用中、DNS リクエストは通常、Web サイトのユーザーがリアルタイムでクエリできるデータベースに保存またはキャッシュされます。通常、DNS データベースには、インターネット名と対応する IP アドレスのリストが含まれています。これにより、非常に困難で混乱を招く可能性がある IP アドレスではなく、名前を使用して Web サイトを検索してアクセスすることが容易になります。
たとえば、DNS システムがなければ、ユーザーは訪問または再訪問したいすべての Web サイトの IP アドレスを構成する一連の数字を覚えておく必要があります。
残念ながら、DNS にはセキュリティ上の欠陥がいくつかあり、攻撃者が悪用して偽のインターネット ドメイン アドレス レコードをシステムに挿入する可能性があります。通常、犯罪者は偽造した応答を DNS サーバーに送信します。その後、サーバーはリクエストを行ったユーザーに応答し、同時に正規のサーバーが偽のレコードをキャッシュします。 DNS キャッシュ サーバーが偽のレコードを保存すると、侵害されたエントリに対する後続のすべてのリクエストは、攻撃者が制御するサーバーのアドレスを受け取ることになります。
DNS キャッシュ ポイズニングには、破損したエントリを DNS ネーム サーバー キャッシュ データベースに挿入することが含まれており、攻撃者が使用するさまざまな方法が存在します。これらには以下が含まれます。
- Web サイトまたは Web アプリのユーザーがブラウザーまたはオンライン ベースのアプリケーションを通じて特定のドメインのリクエストを送信すると、DNS サーバーはまずエントリがキャッシュに存在するかどうかを確認します。保存されていない場合は、権威 DNS サーバーに情報を要求し、応答を待ちます。しばらくの間、攻撃者はこの狭い待機時間を悪用し、一時的に発信元 DNS の役割を引き継ぎ、権威サーバーが本物のアドレスを送信する前に偽の応答を発行する可能性がありました。ただし、待機期間は通常非常に短いため、成功率は非常に低くなります。
- もう 1 つの方法では、正規の DNS サーバーになりすまして、偽造された応答を DNS サーバーから送信します。通常、DNS 情報は検証されないため、攻撃者はネーム サーバーにクエリを実行するときに、DNS リゾルバーからの応答を偽造する可能性があります。これは、DNS サーバーが TCP の代わりにユーザー データグラム プロトコル (UDP) を使用するという事実によっても可能になります。通常、DNS 通信は、UDP パケット内の暗号化されていない情報と認証の欠如により安全ではありません。これにより、攻撃者が応答を破損し、偽のアドレスを挿入することが容易になります。
攻撃者が悪用するDNSの脆弱性
特定の Web アプリケーションにセキュリティの脆弱性があり、DNS レコードの適切な認証が欠如しているため、サイバー犯罪者が DNS 応答を簡単に侵害し、検出されなくなる可能性があります。これらの脆弱性には次のようなものがあります。
検証と検証の欠如
DNS は信頼優先設計を採用しており、応答を送信する前に IP アドレスが本物であることを確認する検証を必要としません。 DNS リゾルバーはキャッシュ内のデータを検証しないため、手動で削除されるか TTL が期限切れになるまで、誤ったレコードがそこに残ります。
再帰的なDNSサーバーの脆弱性
再帰クエリがアクティブな場合、DNS サーバーはクエリを受信し、正しいアドレスを検索してユーザーに応答を送信するというすべての作業を実行します。キャッシュにレコードがない場合は、アドレスを取得してユーザーに返すまで、クライアントに代わって他の DNS サーバーにクエリを実行します。再帰クエリを有効にすると、攻撃者が DNS キャッシュ ポイズニングを実行するために悪用できるセキュリティ上の脆弱性が生じます。
サーバーはアドレスを探しているため、攻撃者にトラフィックを傍受して偽の応答を提供する機会を与えます。その後、再帰 DNS サーバーはユーザーに応答を送信し、同時に偽の IP をキャッシュに保存します。
暗号化の欠如
通常、DNS プロトコルは暗号化されていないため、攻撃者がそのトラフィックを簡単に傍受できます。また、サーバーはトラフィックの宛先となる IP アドレスを検証しないため、それが本物か偽物かを判断できません。
DNS キャッシュ ポイズニングを防ぐにはどうすればよいですか?
DNS データをリアルタイムで監視すると、異常なパターン、ユーザーのアクティビティ、または悪意のある Web サイトへのアクセスなどの行動が存在するかどうかを確認するのに役立ちます。 DNS キャッシュ ポイズニングを検出するのは困難ですが、DNS キャッシュ ポイズニングの発生を防ぐために企業やサービス プロバイダーが実行できるセキュリティ対策や実践方法がいくつかあります。 DNS キャッシュ ポイズニングを防ぐ対策には、DNSSEC の使用、再帰クエリの無効化などが含まれます。
信頼関係のレベルを制限する
DNS トランザクションの脆弱性の 1 つは、異なる DNS サーバー間の高い信頼関係です。これは、サーバーが受信したレコードの信頼性をチェックしないことを意味し、攻撃者が不正なサーバーから偽の応答を送信することさえ可能になります。
攻撃者によるこの欠陥の悪用を防ぐために、セキュリティ チームは、DNS サーバーが他のサーバーと持つ信頼関係のレベルを制限する必要があります。他の DNS サーバーとの信頼関係に依存しないように DNS サーバーを構成すると、サイバー犯罪者が DNS サーバーを使用して正規のサーバー上の記録を侵害することが困難になります。
DNS セキュリティ リスクをチェックするツールはたくさんあります。
DNSSEC プロトコルを使用します。
Domain Name System Security Extensions (DNSSEC) は、公開キー暗号化を使用して DNS レコードに署名するため、検証機能が追加され、システムがアドレスが正当かどうかを判断できるようになります。これは、リクエストとレスポンスを検証および認証するのに役立ち、それによって偽造を防止します。
通常の動作では、DNSSEC プロトコルは、一意の暗号化署名を CNAME や A レコードなどの他の DNS 情報に関連付けます。次に、DNS リゾルバーはこの署名を使用して、DNS 応答を認証してからユーザーに送信します。
セキュリティ署名により、ユーザーが受信するクエリ応答が正規のオリジン サーバーによって認証されることが保証されます。 DNSSEC は DNS キャッシュ ポイズニングを防ぐことができますが、複雑な展開、データの公開、以前のバージョンのゾーン列挙の脆弱性などの欠点があります。
ドメインで DNSSEC が有効になっているかどうかわからない場合は、 DNSSEC テスト ツールを使用してすぐにチェックアウトします。
最新バージョンの DNS および BIND (Berkeley Internet Name Domain) ソフトウェアを使用してください。
通常、BIND バージョン 9.5.0 以降には、暗号的に安全なトランザクション ID やポートのランダム化などの強化されたセキュリティ機能があり、DNS キャッシュ ポイズニングを最小限に抑えるのに役立ちます。さらに、IT チームは DNS ソフトウェアを最新の状態に保ち、それが最新かつ安全なバージョンであることを確認する必要があります。
上記以外にも、DNS キャッシュポイズニングを防ぐために次のような効果的な手段や実践方法があります。
- 要求されたドメインに関連する情報のみで応答するように DNS サーバーを構成する
- キャッシュ サーバーには、要求されたドメインに関連するデータのみが保存されるようにする
- すべてのトラフィックに対して HTTP の使用を強制する
- DNS 再帰クエリ機能を無効にする
結論
DNS キャッシュ ポイズニングにより、ドメイン ユーザーが意図したターゲットから離れた悪意のあるアドレスに誘導されます。攻撃者が制御するサーバーの中には、何も知らないユーザーを騙してマルウェアをダウンロードさせたり、パスワード、クレジット カード情報、その他の機密個人データを提供させたりする場合があります。これを防ぐには、セキュリティのベストプラクティスを採用することが重要です。