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 ------------...
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