2.78之前的dnsmasq中基于堆的缓冲区溢出允许远程攻击者通过精心设计的DNS响应导致拒绝服务(崩溃)或执行任意代码。是一个堆溢出漏洞,存在RCE的风险。不过其在相关博客中只给出了PoC脚本,测试步骤和相关的报错asan,需要我们自己分析过程中的调用流程,进一步有可能开发出RCE的exp脚本。 攻击流程可分为三步: 1.攻击者运行PoC脚本,伪造成为dnsmasq的上游DNS服务器。 2.攻击者在客户端向dnsmasq发送PTR请求,dnsmasq不存在相应PTR记录便向上游DNS查询,然后获得PTR的查询结果缓存并应答客户端。 3.攻击者再次在客户端向dnsmasq发送PTR请求,dnsmasq便解析展开之前的PTR记录,由于数据包的构建都在堆上,而且上游的恶意的PTR相应记录的大小超过了堆上分配的内存空间,最后造成了堆溢出。
解决:
1. 更新yum资源列表
yum clear all
yum makecache
2. 更新dnsmasq
yum update dnsmasq