Lucene search

K
seebugRootSSV:12174
HistorySep 02, 2009 - 12:00 a.m.

Dnsmasq TFTP服务远程堆溢出漏洞

2009-09-0200:00:00
Root
www.seebug.org
66

0.314 Low

EPSS

Percentile

96.5%

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


                                                /-----------

import sys
sys.stdout.write( '\x00\x01' + "A"*1535 + '\x00' + "netascii" + '\x00' )

- -----------/