近日,深信服安全团队监测DNSmasq组件的DNSpooq漏洞的Poc被公开。漏洞编号:CVE--、CVE--、CVE--,漏洞等级:高危。该漏洞是由于使用了弱散列来标识DNS请求以及请求与响应匹配不严格,导致处理CNAME记录时允许欺骗CNAME记录链,攻击者可利用该漏洞,构造恶意数据执行DNS缓存中*攻击,导致破坏DNS查询功能。
漏洞名称:DNSmasqDNSpooq缓存中*漏洞
威胁等级:高危
影响范围:DNSmasq2.83
漏洞类型:DNS缓存中*
利用条件:1、用户认证:不需认证
2、前置条件:攻击者已知cacheserverip3、触发方式:远程
造成后果:破坏DNS查询功能
漏洞分析
1组件介绍
DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。主要用于在本地使用的域名配置。可能受漏洞影响的资产位于中国最多,中国(不含港澳台地区)省份中,辽宁、江苏、山东、广东、浙江等省市接近70%。
2漏洞描述
近日,深信服安全团队监测DNSmasq组件的DNSpooq漏洞的Poc被公开。漏洞编号:CVE--、CVE--、CVE--,漏洞等级:高危。该漏洞是由于使用了弱散列来标识DNS请求以及请求与响应匹配不严格,导致处理CNAME记录时允许欺骗CNAME记录链,攻击者可利用该漏洞,构造恶意数据执行DNS缓存中*攻击,导致破坏DNS查询功能。
3漏洞分析
3.1DNSpooq缓存中*漏洞
DNSmasq通过一个32bit的随机序列确认DNS请求的有效性,但是由于使用了弱散列识别DNS请求,并且采用了松散的请求和响应的匹配,实际上只需猜测19位随机序列,便可导致缓存中*。DNSmasq处理CNAME记录的方式使得攻击者可以欺骗CNMAE记录链并同时使9个DNS记录受影响。对不使用DNSmasq的缓存功能的设备,该漏洞的影响较小但不能完全免疫。
3.2PoC分析
Patch函数对DNSframe的第36-43个字节进行了替换,根据DNS标准可知,这些字节标识的是:目的端口,DNSID,校验和,可知是用于确保数据包是合法的DNS包。
然后对DNSmasq进行了次DNS查询,查询的是一个合法的域名,用于将cache填满。然后伪造从cache服务器发出的DNS包,连续发送两个恶意的DNSRR,前者查询后者的CNAME,后者查询恶意的IP,并将这个数据包序列化为字节流。
后面计算了一个查询的次数,值为id区间(1,)和源端口区间(,)的笛卡尔积,即次。每次发送一个经过patch的DNS数据包。当这个包返回了带有DNS资源记录数据时,则DNS缓存中*攻击成功。
影响范围
目前受影响的DNSmasq版本:DNSmasq2.83
解决方案
1官方修复建议
当前官方已发布最新版本,建议受影响的用户及时更新升级到最新版本。链接如下: