メジャーなDNSソフトウェア・パッケージで見つかった脆弱性により、攻撃者がユーザーを悪意のあるWebサイトに誘導したり、遠隔からデバイスが乗っ取られるような危険性が生じている。
この記事は、ESETが運営するマルウェアやセキュリティに関する情報サイト「Welivesecurity」の記事を翻訳したものである。
dnsmasqはDNSフォワーディングやキャッシュを扱うソフトウェアであり、スマートフォンやデスクトップ・コンピューター、サーバー、ルーター、あるいは他のIoT(Internet of Things)機器に広く用いられている。セキュリティ・ホールを発見した、イスラエルのセキュリティ企業JSOF社によると、dnsmasqに存在する7つの脆弱性により、無数のデバイスがDNS(Domain Name System)キャッシュ・ポイズニングやリモートコード実行の被害を受けるリスクがあるという。
DNSpooqと呼ばれる、このオープンソース・ライブラリで発見された脆弱性は、世界的なテクノロジー企業で製造されたものを含め、様々なデバイスやファームウェアに影響を与えている。
JSOF社は以下のように警告した。
「DNSpooqの幾つかの脆弱性によってDNSキャッシュ・ポイズニングの攻撃が可能になり、ある脆弱性はリモートコード実行を可能とし、多くの家庭用ルーターやその他のネットワーク機器が乗っ取られるリスクがある。数百万のデバイスに影響があり、その中でも百万以上のデバイスは、直接インターネットに接続されている。」
Shodanの情報によると、インターネット上に公開されているdnsmasqサーバーは120万ほどあり、内部ネットワークに閉じているものの、さらに脆弱なデバイスもあるという。
セキュリティ研究者は、少なくとも40以上のベンダーが、様々な製品のファームウェア、ソフトウェアでdnsmasqを用いていることを特定した。これには、Cisco、Asus、AT&T、Comcast、Siemens、Dell、Linksys、Qualcomm、Motorola、IBMなどの大手企業が含まれている。個々のデバイスがどの程度の影響を受けるかという点については、dnsmasqの使用方法による。
DNSpooqは、7つの脆弱性によって構成され、それらは2つのグループに分類される。まず、第一のグループに含まれる3つの脆弱性はDNSキャッシュ・ポイズニング攻撃に関わる。そして、第二のグループを構成する4つの脆弱性はバッファ・オーバーフローに関わっており、そのうちの1つはリモートコード実行やデバイスの乗っ取りを引き起こす可能性がある。
脆弱性の一覧
名称 | CVSS(共通脆弱性評価システム) | 説明 |
---|---|---|
CVE-2020-25681 | 8.1 | バージョン2.83以前のDnsmasqでは、DNSSECが用いられたとき、sort_rrset関数でヒープ・ベースのバッファ・オーバーフローが起こされる可能性がある。標的となったデバイスのメモリーに対し、攻撃者が遠隔で任意のデータを書き込めるようになるため、メモリーの破壊やデバイスの意図しない挙動につながってしまう。 |
CVE-2020-25682 | 8.1 | バージョン2.83以前のDnsmasqでは、DNSSECが用いられたとき、文字列の長さチェックが行われていないため、extract_name関数でバッファ・オーバーフローが起こされる可能性がある。標的となったデバイスが攻撃者によって遠隔からメモリー破壊されてしまう。 |
CVE-2020-25683 | 5.9 | バージョン2.83以前のDnsmasqでは、DNSSECが用いられたとき、sort_rrset関数でヒープ・ベースのバッファ・オーバーフローが起こされる可能性がある。正常なDNSリプライを生成できる遠隔の攻撃者は、この脆弱性を悪用し、メモリーのヒープ領域でオーバーフローを引き起こす。これはrfc1035.cファイルのextract_name関数で、文字列の長さチェックが行われていないことが原因だ。get_rdata関数の中で、memcpy関数を負のサイズで実行させることにより、dnsmasqを停止させ、DoS(Denial of Service)攻撃につなげる。 |
CVE-2020-25687 | 5.9 | バージョン2.83以前のDnsmasqでは、DNSSECが用いられたとき、sort_rrset関数で大きなサイズのmemcpy関数が実行され、ヒープ・ベースのバッファ・オーバーフローが起こされる可能性がある。正常なDNSリプライを生成できる遠隔の攻撃者は、この脆弱性を悪用し、メモリーのヒープ領域でオーバーフローを引き起こす。これはrfc1035.cファイルのextract_name関数で、文字列の長さチェックが行われていないことが原因だ。get_rdata関数の中で、memcpy関数を負のサイズで実行させると、dnsmasqを停止させ、DoS攻撃につなげる。 |
CVE-2020-25684 | 4 | バージョン2.83以前のDnsmasqでは、IPアドレスやポートの確認が適切に実装されていないため、パス外攻撃によって、reply_query関数でリプライを偽造するのが容易になっている。 |
CVE-2020-25685 | 4 | バージョン2.83以前のDnsmasqでは、PRNAMEのチェックが実装されていないため、遠隔の攻撃者がreply_query関数でDNSトラフィックをなりすませるようになり、DNSキャッシュ・ポイズニングにつながる。 |
CVE-2020-25686 | 4 | バージョン2.83以前のDnsmasqでは、同じリソースレコードに対する複数のDNSリクエストにより、誕生日攻撃(RFC 5452)の手法を使って、遠隔の攻撃者がDNSトラフィックのなりすましを行える。この脆弱性はDNSキャッシュ・ポイズニングにつながる。 |
DNSpooq脆弱性の概要(出典:JSOF社)
研究者は、「DNSキャッシュ・ポイズニング攻撃の影響により、様々な詐欺を誘発するリスクがある。ユーザーが、あるWebサイトを閲覧しているつもりが、実際は別のWebサイトへ転送されているかもしれないからだ。」と指摘した。さらに、DNSキャッシュ・ポイズニングの脆弱性がある各デバイスは、攻撃者によって乗っ取られる可能性もあるとしている。
脆弱性そのもののリスクは限定的であるものの、それらが組み合わされて悪用されることで、DDoS(Distributed Denial of Service)攻撃や、デバイス及びネットワークにマルウェアを拡散させる連鎖的な攻撃につながってしまう。
研究者は2020年8月に脆弱性を発見し、公表制限が解除された2021年1月、その詳細を発表した。DNSpooqに関するホワイトペーパーにおいて、複数の回避方法が強調されているが、JSOF社は、最適な防御手段として、dnsmasqをバージョン2.83に更新することを推奨している。一方で、幾つかのベンダーはそれぞれの注意点、リスク軽減策、回避方法、パッチを発表しており、カーネギーメロン大学のCERT Coordination CenterのWebサイトで公開されている。また、米国サイバーセキュリティ・インフラストラクチャセキュリティ局(CISA)も脆弱性のある製品を使用している組織に対し、勧告を出している。
なお、2020年6月、JSOF社はRipple20と総称される19の脆弱性を発見し、インターネットにつながった無数の機器に用いられているTCP/IPライブラリに影響することを報告している。