首页 -> 安全研究

安全研究

安全漏洞
CFingerD 缓冲区溢出漏洞

发布日期:2001-06-20
更新日期:2001-07-03

受影响系统:

Martin Schulze cfingerd 1.4.3
Martin Schulze cfingerd 1.4.2
   - S.u.S.E. Linux 7.2
   - S.u.S.E. Linux 7.1
   - S.u.S.E. Linux 7.0
描述:

BUGTRAQ  ID: 2914
CVE(CAN) ID: CAN-2001-0735

cfingerd 一个安全的finger守护程序。它由cfingerd开发小组维护。

它被发现存在一个缓冲区溢出漏洞。由于没有检查用户提供数据的长度,如果用户提供的
数据长度超过80字节,就可能使一个内部缓冲区发生溢出,攻击者可能改变程序执行流程,
并执行任意代码。

问题在util.c第181-182行附近:
...

  while((line[pos] != ' ') && (!done)) {
      command[newpos] = line[pos];

...
这段代码没有检测缓冲区command[]是否已经到了末尾。

由于cfingerd通常是以root身份启动的,因此本地用户可能利用这个漏洞获取root权限。

<*来源: Steven Van Acker (deepstar@ulyssis.org) *>


测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!


Steven Van Acker (deepstar@ulyssis.org)提供了下列测试代码:

将下列代码写入~/.nofinger文件中:
$<80 chars><displine><5*sizeof(int)><ebp><eip>


然后finger该用户,将触发缓冲区溢出。


建议:

临时解决方法:

修改util.c中相应位置的代码:

在line 181:
  while((newpos < 80) && (line[pos] != ' ') && (!done)) {
        ^^^^^^^^^^^^^^^^^

在 line 301:
  printf("%s",displine);
         ^^^^^

然后重新编译cfingerd.

厂商补丁:

目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商
的主页以获取最新版本:
http://www.infodrom.ffis.de/projects/cfingerd/


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