ClamAV get_unicode_name()单字节堆溢出漏洞

- AV AC AU C I A
发布: 2025-04-13
修订: 2025-04-13

BUGTRAQ ID: 32207 Clam AntiVirus是Unix的GPL杀毒工具包,很多邮件网关产品都在使用。 ClamAV中负责解析VBA项目文件的代码中存在单字节堆溢出漏洞,如果用户发送了带有恶意附件的邮件的话,就可能导致以clamd进程的权限执行任意指令。 具体来讲,向libclamav/vba_extract.c中的get_unicode_name()函数传送了特定的name缓冲区就可以触发这个溢出: 101 static char * 102 get_unicode_name(const char *name, int size, int big_endian) 103 { 104 int i, increment; 105 char *newname, *ret; 106 107 if((name == NULL) || (*name == '\0') || (size &lt;= 0)) 108 return NULL; 109 110 newname = (char *)cli_malloc(size * 7); 首先将name缓冲区的size乘以7用于分配目标缓冲区newname。如果name缓冲区仅包含有匹配特殊标准的字符(c &amp; 0x80 || !isprint(c)) &amp;&amp; (c &gt;= 10 || c &lt; 0)且设置了big_endian的话,以下循环每次在源缓冲区name中找到一个字符就会向所分配的目标缓冲区newname写入7个字符,这就可以完全填充目标缓冲区。在143行的循环后,就会写入终止NUL字节并覆盖堆上所分配的缓冲区。 143 *ret = '\0'; 144 145 /* Saves a lot of memory */ 146 ret = cli_realloc(newname, (ret - newname) + 1); 147 return ret ? ret : newname; 148 } ClamAV 0.94 ClamAV ------ 目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载: <a href=http://freshmeat.net/redir/clamav/29355/url_tgz/clamav-0.94.1.tar.gz...

0%
暂无可用Exp或PoC
当前有0条受影响产品信息