安全研究
安全漏洞
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(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载 绿盟科技给您安全的保障 |