CVE:CVE-2003-1092
CNNVD:CNNVD-200312-187
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寄存器而以其他用户权限执行任意代码。
用户可以构建恶意文件诱使其他用户来分析，导致发生缓冲区溢出，而以执行用户权限执行任意指令。
solution:Upgrade christos_zoulas file_1 to a higher version than 3.28,3.30,3.32,3.33,3.34,3.35,3.36,3.37,3.39,3.40,and avoid the version 3.28,3.30,3.32,3.33,3.34,3.35,3.36,3.37,3.39,3.40