BUGTRAQ ID: 36121
CVE(CAN) ID: CVE-2009-2957
Dnsmasq是可方便配置的轻型DNS转发器和DHCP服务器。
dnsmasq在启用了TFTP服务(--enable-tftp命令行选项或在/etc/dnsmasq.conf中启用enable-tftp)的时候存在堆溢出漏洞。如果所配置的tftp-root足够长,且远程用户发送的请求中包含有超长的文件名,dnsmasq就可能崩溃或以dnsmasq服务的权限(通常为非特权的nobody用户)执行任意代码。
tftp_request对daemon->namebuff调用strncat,其预定义大小为MAXDNAME字节(默认1025)。
/-----------
else if (filename[0] == '/')
daemon->namebuff[0] = 0;
strncat(daemon->namebuff, filename, MAXDNAME);
- -----------/
由于daemon->namebuff可能已经包含有数据,也就是通过配置文件传送给守护程序的daemon->tftp_prefix,因此这可能触发堆溢出。
/-----------
if (daemon->tftp_prefix)
{
if (daemon->tftp_prefix[0] == '/')
daemon->namebuff[0] = 0;
strncat(daemon->namebuff, daemon->tftp_prefix, MAXDNAME)
- -----------/
默认的前缀是/var/tftpd,但如果使用了更长的前缀,就可能执行任意代码。
Simon Kelley Dnsmasq 2.4x
厂商补丁:
RedHat
------
RedHat已经为此发布了一个安全公告(RHSA-2009:1238-01)以及相应补丁:
RHSA-2009:1238-01:Important: dnsmasq security update
链接:https://www.redhat.com/support/errata/RHSA-2009-1238.html
Simon Kelley
------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.thekelleys.org.uk/dnsmasq/doc.html
暂无评论