JSOF 研究人员在开源DNS 转发软件dnsmasq 中发现了7个安全漏洞,漏洞影响使用dnsmasq的约40个厂商和产品。
Dnsmasq
Dnsmasq是用来缓存DNS响应的一款非常流行的软件。本地保存之前收到的DNS请求响应可以加速DNS解析过程。Dnsmasq广泛应用于网络设备和小型网络中。Dnsmasq还可以提供DNS服务来支持WiFi热点、企业级访客网络等。
DNSpooq漏洞
DNSpooq漏洞可以分为两种类型:
- DNS 缓存投毒漏洞,可以引发DNS缓存投毒;
- 缓存溢出漏洞,可以引发远程代码执行。
DNS缓存投毒漏洞
DNS缓存投毒攻击可以破坏使用dnsmasq的企业或设备的DNS查询。也就是或,攻击者可以路由到特点网站的通信。DNSpooq 缓存投毒漏洞的CVE编号为CVE-2020-25686、CVE-2020-25684和CVE-2020-25685。
漏洞会减少TXID或源端口的熵。本来应该是随机化的和提供32位的熵,但是由于使用弱哈希来识别DNS查询,以及请求和响应的宽松匹配,熵值大量减少,只有约19位需要猜测,使得缓存投毒成为可能。Dnsmasq处理CNAME 记录的方式也使得攻击者可以伪造CNAME 记录链,同时对9个DNS记录有效投毒。为了执行该攻击,攻击者需要进行一些比较复杂的设备。对缓存投毒来说,不使用Dnsmasq 缓存特征的设备的影响比较小。
缓存溢出漏洞
4个缓存溢出漏洞分别是CVE-2020-25687、CVE-2020-25683、CVE-2020-25682和CVE-2020-25681。最严重的漏洞会引发有漏洞的设备上的远程代码执行,但是缓存溢出漏洞的作用非常有限,一旦与缓存投毒漏洞相结合就会引发潜在的攻击方式。
缓存溢出漏洞中含有一个高危的基于堆的缓存溢出漏洞,在dnsmasq配置为使用DNSSEC时可能会引发远程代码执行。该漏洞存在于DNSSEC 验证的早期阶段,使得DNSSEC的防御对于DNS无效。在DNSSEC使用时,其他基于堆的缓存溢出漏洞只能引发DOS攻击。
攻击场景
目前有大约100万的dnsmasq服务器是互联网可访问的,通过互联网的攻击是非常容易的。根据设备配置情况可能会引发许多可能的攻击场景:
(1) DNS缓存投毒:路由设备DNS转发服务器的DNS缓存投毒可能会引发不同类型的欺诈,因为用户可能会被路由到一个恶意网站。
可能被破坏的流量包括普通的互联网流量,也包括邮件、SSH、远程桌面、RDP视频和音频通话、软件更新等流量。
(2) 设备接管:除了缓存投毒外,每个可以进行DNS缓存投毒的设备都可能会被攻击者接管。比如对路由器设备,攻击者可以完全控制进出网络的所有流量。
此外,攻击者还有可能会发起其他攻击,比如:
(A) 大规模DDOS攻击:到攻击者控制的网站的大量web流量可以用来生成大量基于JS的DDOS攻击。
(B) 反向DDOS: 攻击者可以防止特定用户访问网站或登陆特定域名。
(C) 蠕虫攻击:攻击者可以在无需用户交互的情况下在有漏洞的设备中传播。之前在使用受感染的dnsmasq 服务器的网络中的移动设备会接收到一个恶意的DNS记录。当设备进入新的网络后,就会感染新的网络。
总结
近年来,研究人员发现了DNS中的许多漏洞,DNSpooq 证明DNS的实现仍然是不安全的。虽然也开发了许多的DNS的安全增强价值,但DNSSEC这样的安全机制仍然美元大规模部署。
完整技术报告参见:
https://www.jsof-tech.com/wp-content/uploads/2021/01/DNSpooq_Technical-Whitepaper.pdf
本文翻译自:https://www.jsof-tech.com/disclosures/dnspooq/