【漏洞通告】Dnsmasq多个安全漏洞

发布时间 2021-01-20

0x00 漏洞概述

Dnsmasq是广泛使用的开源App,可提供DNS转发、缓存以及DHCP服务器功能,它在物联网(IoT)和其它嵌入式设备中很常见。

2021年01月19日,以色列安全咨询企业JSOF披露了7个Dnsmasq漏洞(统称为DNSpooq),受 DNSpooq 影响的设备不仅会遭遇DNS 缓存中毒,还可被用于远程代码实行、以及拒绝服务攻击。

 

0x01 漏洞详情

image.png

 

由于DNSSEC处理代码的边界检查错误,Dnsmasq中存在4个缓冲区溢出漏洞。当Dnsmasq被配置为使用DNSSEC时,远程攻击者可以使用恶意设计的DNS响应来触发DNSpooq中的缓冲区溢出漏洞,最终导致拒绝服务、信息泄露及远程代码实行。

Dnsmasq缓冲区溢出漏洞(CVE-2020-25681)

使用DNSSEC时,2.83之前的Dnsmasq版本在sort_rrset()中容易发生基于堆的缓冲区溢出,其CVSS评分8.1。这可以使远程攻击者将任意数据写入目标设备的内存中,可能导致目标设备上的内存损坏和其它意外行为。 

Dnsmasq缓冲区溢出漏洞(CVE-2020-25682)

启用DNSSEC时,由于缺少长度检查,2.83之前的Dnsmasq版本在extract_name()函数中容易发生缓冲区溢出,其CVSS评分8.1。这可能导致远程攻击者在目标设备上造成内存损坏。

Dnsmasq缓冲区溢出漏洞(CVE-2020-25683)

启用DNSSEC时,由于rfc1035.c:extract_name()中缺少长度检查,2.83之前的Dnsmasq版本容易出现基于堆的缓冲区溢出,其CVSS评分5.9。远程攻击者可以通过利用此漏洞在堆分配的内存中引起溢出,并且可以通过滥用长度检查来导致 dnsmasq 崩溃,最终造成拒绝服务。

Dnsmasq缓冲区溢出漏洞(CVE-2020-25687)

启用DNSSEC时,由于rfc1035.c:extract_name()中缺少长度检查,2.83之前的Dnsmasq版本在sort_rrset()中容易出现基于堆的缓冲区溢出,其CVSS评分5.9。远程攻击者可以通过利用此漏洞在堆分配的内存中引起溢出,并且可以通过滥用长度检查来导致 dnsmasq 崩溃,最终造成拒绝服务。

 

此外,在DNS响应验证中还存在DNSpooq漏洞中的其它3个,其CVSS评分均为4.0。这些漏洞可能导致DNS缓存中毒(或DNS欺骗),使得攻击者可以替换设备上的合法DNS记录、破坏DNS缓存并将用户重定向到任意站点、实行网络钓鱼攻击、盗窃凭据或散布恶意App等。

研究人员的报告表示,通过利用这些漏洞能够破坏常规的Internet浏览以及其它类型的流量,比如电子邮件、SSH、远程桌面、RDP视频、语音呼叫和App更新等,甚至可能导致分布式拒绝服务攻击(DDOS)、反向DDOS、蠕虫攻击等。

Dnsmasq缓存中毒漏洞(CVE-2020-25684)

在Dnsmasq 2.83之前版本中的reply_query函数中,缺乏适当的address/port检查,这导致reply_query函数更容易伪造回复给路径外的攻击者。

Dnsmasq缓存中毒漏洞(CVE-2020-25685)

dnsmasq在2.83之前的版本中实现的reply_query函数缺乏查询资源名(RRNAME)检查,允许远程攻击者欺骗DNS流量,从而导致DNS缓存中毒。

Dnsmasq缓存中毒漏洞(CVE-2020-25686)

2.83之前Dnsmasq不检查是否存在相同名称的待处理请求,而是转发新请求,从而使攻击者可以实行“Birthday Attack” (RFC 5452) 来欺骗DNS流量,从而导致DNS缓存中毒。

 

影响范围

Dnsmasq <2.83

 

研究人员表示,利用DNSpooq漏洞进行攻击非常容易,可以在几秒钟或几分钟内完成,且不需要任何复杂的技术或工具。以下是DNS欺骗的流程图:

image.png

目前暂不清楚受DNSpooq漏洞影响的所有企业,JSOF在其报告中着重列出了40个供应商,其中包括Android / 谷歌、Comcast、Cisco、Redhat、Netgear、Qualcomm、Linksys、Netgear、IBM、D-Link、Dell、HUAWEI和Ubiquiti等。

截止目前,Shodan搜索显示 ,目前Internet上有超过100万个Dnsmasq服务器公开,其中中国分布的Dnsmasq为397246,位列第一:

image.png

 

 

0x02 处置建议

为了防止DNSpooq漏洞的攻击,建议将DnsmasqApp更新到2.83版本。

临时措施

针对无法马上更新Dnsmasq的用户,建议使用临时措施:

l  如非必要,请将dnsmasq配置为不侦听WAN接口。

l  使用选项”--dns-forward-max= “减少允许转发的最大数量,其默认值为150。

l  暂时禁用DNSSEC验证选项,直到安装补丁为止。

l  使用为DNS提供传输安全性的协议(如DoT或DoH),这将减轻Dnspooq漏洞攻击的影响,但可能会带来其它安全隐患,请慎重实行此操作。

l  减少EDNS消息的最大大小可能会缓解某些漏洞,但尚未经过测试,且违背了RFC5625。

 

0x03 参考链接

https://www.jsof-tech.com/disclosures/dnspooq/

https://www.jsof-tech.com/wp-content/uploads/2021/01/DNSpooq_Technical-Whitepaper.pdf

https://www.bleepingcomputer.com/news/security/dnspooq-bugs-let-attackers-hijack-dns-on-millions-of-devices/

https://threatpost.com/dnspooq-flaws-allow-dns-hijacking-of-millions-of-devices/163163/

 

0x04 时间线

2021-01-19  JSOF披露漏洞

2021-01-20  VSRC发布安全通告

 

0x05 附录

 

CVSS评分标准官网:http://www.first.org/cvss/

image.png