Clam AntiVirus是Unix的GPL杀毒工具包,很多邮件网关产品都在使用。 ClamAV的jpeg解析代码中存在递归栈溢出漏洞。如果用户扫描到了恶意的jpeg文件或文件缩略图,就会在没有检查递归限制的情况下调用有漏洞的cli_check_jpeg_exploit函数,触发栈溢出。以下是clamav-0.94\libclamav\special.c文件中的有漏洞代码段: int cli_check_jpeg_exploit(int fd) <-- fd to jpeg file { ... if ((retval=jpeg_check_photoshop(fd)) != 0) { return retval; } ... } ... static int jpeg_check_photoshop(int fd) { ... retval = jpeg_check_photoshop_8bim(fd); ... } ... static int jpeg_check_photoshop_8bim(int fd) { ... retval = cli_check_jpeg_exploit(fd); <-- calls cli_check_jpeg_exploit() again without any recursive checks ! ... }
Clam AntiVirus是Unix的GPL杀毒工具包,很多邮件网关产品都在使用。 ClamAV的jpeg解析代码中存在递归栈溢出漏洞。如果用户扫描到了恶意的jpeg文件或文件缩略图,就会在没有检查递归限制的情况下调用有漏洞的cli_check_jpeg_exploit函数,触发栈溢出。以下是clamav-0.94\libclamav\special.c文件中的有漏洞代码段: int cli_check_jpeg_exploit(int fd) <-- fd to jpeg file { ... if ((retval=jpeg_check_photoshop(fd)) != 0) { return retval; } ... } ... static int jpeg_check_photoshop(int fd) { ... retval = jpeg_check_photoshop_8bim(fd); ... } ... static int jpeg_check_photoshop_8bim(int fd) { ... retval = cli_check_jpeg_exploit(fd); <-- calls cli_check_jpeg_exploit() again without any recursive checks ! ... }