近日,深信服安全团队监测到以色列JSOF研究实验室公开了一则DNSmasq组件存在Dnspooq漏洞的信息,漏洞编号:
(CVE--/CVE--/CVE--/CVE--/CVE--/CVE--/CVE--)
漏洞等级:高危。该漏洞是由于使用了弱散列来标识DNS请求以及请求与响应匹配不严格,导致处理CNAME记录时允许欺骗CNAME记录链,攻击者可利用该漏洞,构造恶意数据执行DNS缓存中*攻击,导致破坏DNS查询功能。
漏洞名称:DNSmasqDnspooq缓存中*漏洞
威胁等级:高危
影响范围:DNSmasq2.83
漏洞类型:DNS缓存中*,缓冲区溢出
利用难度:未知
漏洞分析
1组件介绍
DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。DHCP服务器和DNS服务器结合,并且允许DHCP分配的地址能在DNS中正常解析,并支持静态和动态两种DHCP配置方式。
2漏洞描述
近日,深信服安全团队监测到以色列JSOF研究实验室公开了一则DNSmasq组件存在Dnspooq漏洞的信息,漏洞编号:(CVE--/CVE--/CVE--/CVE--/CVE--/CVE--/CVE--),漏洞等级:高危。该漏洞是由于使用了弱散列来标识DNS请求以及请求与响应匹配不严格,导致处理CNAME记录时允许欺骗CNAME记录链,攻击者可利用该漏洞,构造恶意数据执行DNS缓存中*攻击,导致破坏DNS查询功能。
3漏洞分析
3.1Dnspooq缓存中*漏洞
DNSmasq通过一个32bit的随机序列确认DNS请求的有效性,但是由于使用了弱散列识别DNS请求,并且采用了松散的请求和响应的匹配,实际上只需猜测19位导致缓存中*是可行的。DNSmasq处理CNAME记录的方式使得攻击者可以欺骗CNMAE记录链并同时有效的使9个DNS记录受影响。对不使用DNSmasq的缓存功能的设备,该漏洞的影响较小但不能完全免疫。
3.2Dnspooq缓冲区溢出漏洞
DNSmasq存在基于堆的缓冲区溢出漏洞,由于可以和DNS缓存中*漏洞结合使用,产生更严重的攻击,因此危险性有所提升。当将dnsmasq配置为使用DNSSEC安全功能时,该漏洞存在潜在的远程代码执行的可能,但目前只能导致拒绝服务。不使用DNSSEC安全功能的设备不受影响。
以下是漏洞清单:
名称
CVSS
描述
CVE--
8.1
使用DNSSEC时,2.83之前的DNSmasq版本容易受到sort_rrset()函数中基于堆的缓冲区溢出的影响。这可以使远程攻击者将任意数据写入目标设备的内存,这可能导致目标设备上的内存损坏和其他意外行为。
CVE--
8.1
启用DNSSEC时,由于缺少长度检查,2.83之前的DNSmasq版本易于在extract_name()函数中发生缓冲区溢出。这可以允许远程攻击者在目标设备上造成内存损坏。
CVE--
5.9
启用DNSSEC时,2.83之前的DNSmasq版本容易出现基于堆的缓冲区溢出。可以创建有效DNS回复的远程攻击者可以利用此漏洞在堆分配的内存中引起溢出。此缺陷是由rfc.c:extract_name()中缺少长度检查引起的,该长度检查可能被滥用以使代码以get_rdata()中的异常大小执行memcpy()并导致DNSmasq崩溃,从而导致拒绝服务。
CVE--
5.9
启用DNSSEC时,2.83之前的DNSmasq版本容易受到sort_rrset()中具有大memcpy的基于堆的缓冲区溢出的攻击。可以创建有效DNS回复的远程攻击者可以利用此漏洞在堆分配的内存中引起溢出。此缺陷是由rfc.c:extract_name()中缺少长度检查引起的,该长度检查可能被滥用以使代码在sort_rrset()中以负大小执行memcpy()并导致DNSmasq崩溃,从而导致拒绝服务。
CVE--
4
在2.83版本的DNSmasq中缺少适当的地址/端口检查,reply_query函数使伪造对路径外攻击者的答复变得更加容易。
CVE--
4
缺少在2.83Reply_query功能之前在DNSmasq的版本中实现的查询资源名称检查,使远程攻击者可以欺骗可能导致DNS缓存中*的DNS通信。
CVE--
4
2.83之前版本的DNSmasq版本对同一资源名称的多个DNS查询请求允许远程攻击者使用生日攻击(RFC)欺骗DNS通信,这可能导致DNS缓存中*。
影响范围
目前受影响的DNSmasq版本:DNSmasq2.83
解决方案
1官方修复建议
当前官方已发布最新版本,建议受影响的用户及时更新升级到最新版本。链接如下: