CVE:CVE-2008-0314
CNNVD:CNNVD-200804-231
Clam AntiVirus是Unix的GPL杀毒工具包，很多邮件网关产品都在使用。
ClamAV中负责解压用PeSpin加密所包装的PE库的代码存在堆溢出漏洞，攻击者可能通过诱使用户处理畸形文件控制用户系统。
以下为libclamav/spin.c中的有漏洞代码段：
417key32 = cli_readint32(ep+0x2fee);
...
427cli_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
429if ( (curr=(char *)cli_malloc(sections[j].vsz)) != NULL ) {
430memcpy(curr, src + sections[j].raw, key32 - sections[j].rva); /* Uncompressed part */
431memset(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值执行验证便在内存拷贝操作中使用，因此可能导致堆溢出。
solution:Upgrade clam_anti-virus clamav to a higher version than 0.92.1,and avoid the version 0.92.1