首页 -> 安全研究

安全研究

安全漏洞
PFinger Syslog远程格式串溢出漏洞

发布日期:2002-12-16
更新日期:2002-12-23

受影响系统:
PFinger PFinger 0.7.8
PFinger PFinger 0.7.7
PFinger PFinger 0.7.6
PFinger PFinger 0.7.5
描述:
BUGTRAQ  ID: 6403

PFinger是一款开放源代码的可替代标准finger的守护程序。

PFinger对用户输入缺少正确过滤,远程攻击者可以利用这些漏洞进行格式字符串攻击,可能以PFinger进程在系统上执行任意指令。

格式字符串漏洞存在于log.c的log()函数中,其中使用了不安全的syslog()调用:

..
syslog(level, syslog_mem);
..


要利用这个漏洞需要通过在进行finger主机的DNS服务器中设置响应的恶意主机名,因为记录请求日志代码如下:

h_ent = gethostbyaddr((char *)&remaddr.sin_addr, sizeof(remaddr.sin_addr),
AF_INET);


if (h_ent)
conn.hostname = strdup(h_ent->h_name);
else
conn.hostname = "(remote)";


log(LOG_INFO, "Connection from %s
(%s)",conn.hostname,inet_ntoa(remaddr.sin_addr));

上面的代码对finger的主机进行域名查询,并记录连接信息。如果攻击者可以控制它们的DNS服务器,更改服务器设置,把主机名改为包含恶意格式字符串的名称,或提供伪造的DNS应答,就可能以任意值覆盖堆栈内存,精心构建主机名数据可能以PFinger进程在系统上执行任意指令。

<*来源:NGSSoftware Insight Security Research (nisr@nextgenss.com
  
  链接:http://www.ngssoftware.com/advisories/pfinger.txt
*>

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

*  把如下代码:

..
syslog(level, syslog_mem);
..


改成:

..
syslog(level,"%s", syslog_mem);
..

厂商补丁:

PFinger
-------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.xelia.ch/unix/pfinger

浏览次数:2648
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障