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 <= 0)) 108 return NULL; 109 110 newname = (char *)cli_malloc(size * 7); 首先将name缓冲区的size乘以7用于分配目标缓冲区newname。如果name缓冲区仅包含有匹配特殊标准的字符(c & 0x80 || !isprint(c)) && (c >= 10 || c < 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...
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 <= 0)) 108 return NULL; 109 110 newname = (char *)cli_malloc(size * 7); 首先将name缓冲区的size乘以7用于分配目标缓冲区newname。如果name缓冲区仅包含有匹配特殊标准的字符(c & 0x80 || !isprint(c)) && (c >= 10 || c < 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 target=_blank>http://freshmeat.net/redir/clamav/29355/url_tgz/clamav-0.94.1.tar.gz</a>