キヤノンMJ/サイバーセキュリティ情報局

DNSフォワーディングやキャッシュを扱うソフトウェア「dnsmasq」に潜む脆弱性

  • この記事をはてなブックマークに追加
  • 本文印刷

本記事はキヤノンマーケティングジャパンが提供する「サイバーセキュリティ情報局」に掲載された「デバイスをDNSキャッシュ・ポイズニングの危険にさらす「DNSpooq」とは」を再編集したものです。

 dnsmasqはDNSフォワーディングやキャッシュを扱うソフトウェアであり、スマホやデスクトップ・コンピューター、サーバー、ルーター、あるいは他のIoT(Internet of Things)機器に広く用いられている。セキュリティ・ホールを発見した、イスラエルのセキュリティ企業JSOF社によると、dnsmasqに存在する7つの脆弱性により、無数のデバイスがDNS(Domain Name System)キャッシュ・ポイズニングやリモートコード実行の被害を受けるリスクがあるという。

 DNSpooqと呼ばれる、このオープンソース・ライブラリで発見された脆弱性は、世界的なテクノロジー企業で製造されたものを含め、様々なデバイスやファームウェアに影響を与えている。

 JSOF社は以下のように警告した。

「DNSpooqの幾つかの脆弱性によってDNSキャッシュ・ポイズニングの攻撃が可能になり、ある脆弱性はリモートコード実行を可能とし、多くの家庭用ルーターやその他のネットワーク機器が乗っ取られるリスクがある。数百万のデバイスに影響があり、その中でも百万以上のデバイスは、直接インターネットに接続されている。」

 Shodanの情報によると、インターネット上に公開されているdnsmasqサーバーは120万ほどあり、内部ネットワークに閉じているものの、さらに脆弱なデバイスもあるという。

DNS attacks: How they try to direct you to fake pages

 セキュリティ研究者は、少なくとも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  バージョン2.83以前のDnsmasqでは、IPアドレスやポートの確認が適切に実装されていないため、パス外攻撃によって、reply_query関数でリプライを偽造するのが容易になっている。 
CVE-2020-25685  バージョン2.83以前のDnsmasqでは、PRNAMEのチェックが実装されていないため、遠隔の攻撃者がreply_query関数でDNSトラフィックをなりすませるようになり、DNSキャッシュ・ポイズニングにつながる。 
CVE-2020-25686  4 バージョン2.83以前のDnsmasqでは、同じリソースレコードに対する複数のDNSリクエストにより、誕生日攻撃(RFC 5452)の手法を使って、遠隔の攻撃者がDNSトラフィックのなりすましを行える。この脆弱性はDNSキャッシュ・ポイズニングにつながる。 

DNSpooq脆弱性の概要(出典:JSOF社)

 研究者は、「DNSキャッシュ・ポイズニング攻撃の影響により、様々な詐欺を誘発するリスクがある。ユーザーが、あるウェブサイトを閲覧しているつもりが、実際は別のウェブサイトへ転送されているかもしれないからだ。」と指摘した。さらに、DNSキャッシュ・ポイズニングの脆弱性がある各デバイスは、攻撃者によって乗っ取られる可能性もあるとしている。

 脆弱性そのもののリスクは限定的であるものの、それらが組み合わされて悪用されることで、DDoS(Distributed Denial of Service)攻撃や、デバイス及びネットワークにマルウェアを拡散させる連鎖的な攻撃につながってしまう。

 研究者は2020年8月に脆弱性を発見し、公表制限が解除された2021年1月、その詳細を発表した。DNSpooqに関するホワイトペーパーにおいて、複数の回避方法が強調されているが、JSOF社は、最適な防御手段として、dnsmasqをバージョン2.83に更新することを推奨している。一方で、幾つかのベンダーはそれぞれの注意点、リスク軽減策、回避方法、パッチを発表しており、カーネギーメロン大学のCERT Coordination Centerのウェブサイトで公開されている。また、米国サイバーセキュリティ・インフラストラクチャセキュリティ局(CISA)も脆弱性のある製品を使用している組織に対し、勧告を出している。

 なお、2020年6月、JSOF社はRipple20と総称される19の脆弱性を発見し、インターネットにつながった無数の機器に用いられているTCP/IPライブラリに影響することを報告している。

[引用・出典元]

DNSpooq bugs expose millions of devices to DNS cache poisoning by Amer Owaida 20 Jan 2021 - 10:12 PM
https://www.welivesecurity.com/2021/01/20/dnspooq-bugs-devices-dns-cache-poisoning/