Lucene search

K
seebugRootSSV:3178
HistoryApr 17, 2008 - 12:00 a.m.

ClamAV libclamav库PeSpin堆溢出漏洞

2008-04-1700:00:00
Root
www.seebug.org
9

0.141 Low

EPSS

Percentile

95.1%

BUGTRAQ ID: 28784
CVE(CAN) ID: CVE-2008-0314

Clam AntiVirus是Unix的GPL杀毒工具包,很多邮件网关产品都在使用。

ClamAV中负责解压用PeSpin加密所包装的PE库的代码存在堆溢出漏洞,攻击者可能通过诱使用户处理畸形文件控制用户系统。

以下为libclamav/spin.c中的有漏洞代码段:

417 key32 = cli_readint32(ep+0x2fee);

427 cli_dbgmsg("spin: Resources (sect%d) appear to be compressed\n\tuncompressed
offset %x, len %x\n\tcompressed offset %x, len %x\n", j, sections[j].rva, key32 -
sections[j].rva, key32, sections[j].vsz - (key32 - sections[j].rva));
428
429 if ( (curr=(char )cli_malloc(sections[j].vsz)) != NULL ) {
430 memcpy(curr, src + sections[j].raw, key32 - sections[j].rva); /
Uncompressed part /
431 memset(curr + key32 - sections[j].rva, 0, sections[j].vsz - (key32 -
sections[j].rva)); /
bzero */

在417行从文件中读取了32位的值到key32变量中,然后使用429行的sections[j].vsz值分配堆缓冲区,在430行memcpy调用将数据拷贝到了新分配的缓冲区。由于没有对key32、sections[j].raw和sections[j].rva值执行验证便在内存拷贝操作中使用,因此可能导致堆溢出。

ClamAV 0.92.1
临时解决方法:

  • 禁止扫描PE文件:

    如果在使用clamscan的话,以–no-pe选项运行clamscan。
    如果在使用clamdscan的话,在clamd.conf文件中将ScanPE选项设置为no。

厂商补丁:

ClamAV

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

<a href=“http://www.clamav.net/” target=“_blank”>http://www.clamav.net/</a>