file工具本地缓冲区溢出漏洞
发布日期:2003-03-04
更新日期:2003-03-07
受影响系统:Christos Zoulas File 3.39
Christos Zoulas File 3.38
Christos Zoulas File 3.37
不受影响系统:Christos Zoulas File 3.41
描述:
CVE(CAN) ID:
CVE-2003-0102
file(1)是一款查看文件类型的工具。
file(1)命令存在一个缓冲区溢出漏洞,本地攻击者可以利用这个漏洞以执行用户权限在系统上执行任意指令。
问题存在于readelf.c中的587行tryelf()函数的doshn()调用中:
doshn(class, swap,
fd,
getu32(swap, elfhdr.e_shoff),
getu16(swap, elfhdr.e_shnum),
getu16(swap, elfhdr.e_shentsize));
doshn() 'elfhdr.e_shentsize'最后一个参数将在之后用于readelf.c 133行的read()函数中:
if (read(fd, sh_addr, size) == -1)
read()调用会拷贝'size'字节到readelf.c 92行定义的'sh_addr'变量中:
#define sh_addr (class == ELFCLASS32 \
? (void *) &sh32 \
: (void *) &sh64)
用于read()函数的缓冲区大小只有0x20 (32)字节,通过提供0x28 (40)字节的'size'参数可导致覆盖堆栈中的EBP和EIP寄存器而以其他用户权限执行任意代码。
用户可以构建恶意文件诱使其他用户来分析,导致发生缓冲区溢出,而以执行用户权限执行任意指令。
<*来源:iDEFENSE Security Advisory (
labs@idefense.com)
链接:
http://www.idefense.com/advisory/03.04.03.txt
*>
建议:
厂商补丁:
Christos Zoulas
---------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
ftp://ftp.astron.com/pub/file/file-3.41.tar.gz浏览次数:3101
严重程度:0(网友投票)