KeyTrap:1つのパケットでDNSサーバーを停止させる方法

「DNSに対する最悪の攻撃」とも言われるKeyTrapという脆弱性を悪用するDoS攻撃は、悪意のある単一のパケットでDNSサーバーを停止させることが可能です。

ドイツの国立応用サイバーセキュリティ研究センターは今月、DNSSEC(ドメインネームセキュリティ拡張)に関する設計上の重大な欠陥を発見したと発表しました。DNSSECは、DNSプロトコルのセキュリティを向上させ、主にDNSスプーフィングに対抗するために設計されたものです。

研究グループは、この脆弱性KeyTrapを悪用した攻撃を「KeyTrap攻撃」と新しく名付けました。この攻撃は、悪意のある単一のデータパケットを送信するだけで、DNSサーバーを停止させることが可能です。今回のブログではこの攻撃の詳細をご説明します。

KeyTrapの仕組みと危険性

DNSSECの脆弱性が公になったのは最近のことで、2023年12月に発見され、CVE-2023-50387が採番されました。CVSS 3.1のスコアは7.5で、深刻度は「高」です。この脆弱性とそれに関連する攻撃に関する完全な情報はまだ公表されていません。

KeyTrapの仕組みは次の通りです。攻撃者は、クライアントのリクエストに直接対応するサーバー、キャッシュDNSサーバーからのリクエストに悪意のあるパケットで応答するネームサーバーを設定します。次に攻撃者は、キャッシュサーバーに悪意のあるネームサーバーからDNSレコードをリクエストさせます。レスポンスとして送信されるレコードは、暗号署名された悪意のあるものです。これによって、攻撃されたDNSサーバーは、その署名を検証するために長時間CPUをフル稼働させることになります。

研究者らによりますと、このような悪意のあるパケットは単一で、DNSサーバーを170秒から16時間停止させることができます。KeyTrap攻撃は、標的となったDNSサーバーを使用しているすべてのクライアントのWebコンテンツへのアクセスを拒否するだけでなく、スパム保護、デジタル証明書管理(PKI)、セキュア・クロスドメイン・ルーティング(RPKI)など、さまざまなインフラサービスを妨害する可能性があります。

研究者は、KeyTrapを「これまで発見されたDNSに対する最悪の攻撃」と呼んでいます。それにしても、この攻撃を可能にしている署名検証ロジックの欠陥は、実は1999年に発表されたDNSSEC仕様の最も古いバージョンで発見されています。つまり、この脆弱性は25年もの間発見されていなかったことになります。

KeyTrapは、1999年に発表されたDNSSECの仕様であるRFC-2035からすでに存在している

KeyTrapは、1999年に発表されたDNSSECの仕様であるRFC-2035からすでに存在している

KeyTrapへの対処法

研究者は、すべての DNS サーバーのソフトウェア開発者および主要なDNSサービスプロバイダーに対して注意を促し、パッチを速やかに適用するよう推奨しています。CVE-2023-50387を修正するアップデートとセキュリティ勧告が、PowerDNSNLnet Labs UnboundInternet Systems Consortium BIND9で利用可能です。DNSサーバーの管理者であれば、常に最新のバージョンにアップデートをしておきましょう。

しかし、KeyTrapの脆弱性については、DNSSECの仕様を見直す必要があり、簡単には修正することはできません。この脆弱性が特定の実装ではなく、DNSSEC標準の一部であるため、DNSのソフトウェア開発者がリリースするパッチは、完全に問題を解決するわけではありません。リサーチャーは、「パッチを適用したリゾルバーに対してKeyTrapを起動すると、CPU使用率は100%になりますが、まだレスポンスすることができます。」と述べています。

この脆弱性が実際に悪用される可能性は依然として残っており、その結果、リゾルバーが予測不可能な障害を起こす可能性があります。このような事態に備え、企業のネットワーク管理者は、あらかじめバックアップDNSサーバーのリストを用意しておき、必要に応じて切り替えることで、ネットワークの正常な機能を維持し、ユーザーが必要なウェブリソースを支障なく閲覧できるようにしておくことを推奨します。

 

ヒント