KeyTrapとは:DNSSEC設計の根幹に関わる脆弱性について

セキュリティ

・DNSSECにおける「KeyTrap」という最新の脆弱性に関する情報とその重要性を知りたい
・KeyTrapの攻撃手法や具体的な機能についての詳細を知りたい
・KeyTrap発生の根本原因となるDNSSECの設計の問題とは何か

今回は「DNSに対する最悪の攻撃」とも名高い脆弱性(CVE-2023-50387「KeyTrap」について紹介します。

DNSサーバはIPアドレスとドメインの対応関係を応答するサーバです。応答に際し、通信の真正性と完全性を保証することが重要でDNSSEC(ドメインネームシステムセキュリティ拡張機能)はその役割を果たします。

インターネットのセキュリティは常に進化する技術の競争であり、残念ながらサイバー攻撃もその進化に続いています。ドイツの国立応用サイバーセキュリティ研究センターATHENEは2024年2月13日、DNSSECの設計に重大な欠陥「KeyTrap」を発見しました。

Key Trap

冒頭にも書いたように「DNSに対する最悪の攻撃」とも名高い脆弱性とのこと。ではKeyTrapとは何かを以降で紹介します。

DNSSECの安全性を脅かす「KeyTrap」とは

簡単にいうと新しいDoS攻撃

KeyTrapは、新しい攻撃クラスとして名づけられました。一つのDNSパケットを使用してDNSSECからのレスポンスを利用して「Google Public DNS」やCloudflareのDNSなどを止めることができる、DoS攻撃の一種です。

「KeyTrap」に関する詳細は、以下が詳しいです。

具体的な攻撃手順

KeyTrapに関する情報はATHENEのテクニカルレポートにあるので、その内容をEdgeのCopilotで以下、要約させました。

KeyTrap 攻撃の具体的な内容は以下の通りです:

  1. 攻撃者は、脆弱なDNSリゾルバーに対して特定のDNSパケットを送信します。
  2. このDNSパケットには、DNSSEC署名されたリソースレコードセット(RRset)が含まれています。
  3. リゾルバーは、このRRsetを検証しようとしますが、DNSSECの設計により、リゾルバーはすべての可能なキーを試すまで検証が成功しない限り、失敗しないようになっています。
  4. 攻撃者は、RRsetに含まれるすべての可能なキーを試すことで、CPU命令数が約2,000,000倍に急増することができます。
  5. この攻撃により、リゾルバーは最長で16時間もの間停止する可能性があります。

この攻撃は、DNSSECの設計において欠陥があることを示しており、DNSベンダーやオペレーターは脆弱性の修正に向けて協力しています 。

COPILOT

つまりDNSSEC署名されたレコード付きのDNSパケットを一つ送ってリゾルバー1に検証させる、その検証はすべてのキーを試すまでループするのでDNSのリソースをつぶしてしまうといったところでしょうか。

ただ、これだけだと攻撃者とサーバの2者間の通信にしか見えないので、補足絵を足しました。

KeyTrapのイメージ

つまり攻撃者は悪意のあるネームサーバを用意します。攻撃対象のDNSサーバ2から悪意のあるネームサーバにリクエストを送るように仕掛けをして、当ネームサーバがDNSSEC署名したものを送り返します。

最終的にその署名を攻撃対象のDNSサーバがいろいろなキーを試して署名検証し続けるので、停止してしまうということです。

「KeyTrap」脆弱性の影響

KeyTrapを悪用するサイバー攻撃者は、DNSSECを検証するDNSリゾルバを利用する全てのシステムにおいて、インターネットアクセスを無効できるとされています。

2023年12月に全世界のWebクライアントの約31%がDNSSECを検証するDNSリゾルバを使用しています。そのためこの脆弱性を利用した攻撃を受けると、インターネットを使用するアプリケーションに深刻な影響があり、ウェブブラウジングやメール、インスタントメッセージなどが利用不能になります。

広告
 

原因は設計思想に関連!?

KeyTrapで悪用されている脆弱性の要件は、1999年に廃止されたDNSセキュリティ拡張の標準仕様である「RFC 2535」から既に存在していました。2012年にこの脆弱性はDNSSEC検証の実装要件である「RFC 6781」と「RFC 6840」にも持ち込まれたもようです。

RFC(Request For Comments)は、インターネット技術の標準化などを行うIETF(Internet Engineering Task Force)発行の技術仕様などの文書グループです。

発表によると、この脆弱性は少なくとも2000年8月からBIND9 DNSリゾルバに存在し、2007年8月にはDNSリゾルバ「Unbound」のコードに組み込まれていたとされています。

このように経緯をたどるとKeyTrapは要件に基づいて実装となっています。そのためDNSSECの25年で積み上げてきた設計思想に関連した根本的な問題なので、抜本的な解決が難しいものとなっています。

脆弱性に対する対策は?

研究者らは数か月にわたってベンダやDNSプロバイダと協力して、固有のパッチを作っています。最後のパッチは2024年2月13日にでています。

(緊急)BIND 9.xの脆弱性(過剰なCPU負荷の誘発)について(CVE-2023-50387) - バージョンアップを強く推奨 -

脆弱性に対する攻撃を防ぐために、BIND 9のパッチを早急に適用することが推奨されています。

しかしリスクを抑えるだけで、前述の通りDNSSECの設計に関わる問題なので完全ブロックは難しいと言われています。

広告

まとめ

KeyTrapはDNSSECを狙った新たな攻撃手法であり、DNSリゾルバーに重大なDoS攻撃をもたらす脆弱性として知られています。「DNSに対する最悪の攻撃」とも評されるこの問題は、インターネットアクセスの核心部分を脅かし、多数のウェブクライアントが影響を受ける可能性があります。

この脆弱性は歴史的なDNSSECの設計標準にその起源を持ち、多くのDNSリゾルバーに長年にわたって組み込まれてきました。根本的な解決が難しいとされているため、既存のパッチを速やかに適用することが重要です。ATHENEや関連組織は問題の深刻さを鑑み、対策としてパッチの開発と配布を行っています。

DNSSECの安全を脅かすKeyTrapという脆弱性に対応するため、セキュリティ意識の継続的な向上と迅速な行動が求められています。

参考文献

  1. DNSにおいてIPアドレスとドメインの名前解決するもの ↩︎
  2. キャッシュDNSサーバが対象です ↩︎

コメント

タイトルとURLをコピーしました