Bug tracker

如果你发现ClamAV有漏洞,请先到SVN下载最新的源码。

如果还不行,到bug tracker 提交漏洞报告。

请不要向我们报告由”第三方”:/download/third-party-tools发布的基于ClamAV的软件的漏洞(例如:我们不直接维护的ports等)。请直接联系开发者,因为我们无法管理他们。

你向我们提供的漏洞报告请包含以下内容(这些很重要):

  • E-mail地址:一个正在使用的邮件地址,这样我们的开发人员可以联系你,可以从你这里获得更多的关于漏洞的信息,当漏洞修复了也可以第一时间通知你。
  • ClamAV版本:请运行
    clamconf -n
  • 操作系统:你的操作系统的详细情况,请运行
    uname -mrsp
  • 运行库版本:你的libc和zlib版本
  • 如何重现问题:如果仅仅是扫描某些文件时会出错,请附上这些文件。不要忘记压缩这些文件,否则可能会给你的和我们的邮件服务器带来问题! 例如:
    zip -P virus -e file.zip file.ext

我们会保密文件的内容,如果你的文件太大不能发邮件,你可以把它上传到一个密码保护的网站,然后把URL地址和访问方法发给我们。

  • clamscan调试信息:如果有可能的话,请将GNU调试器gdb的跟踪信息发给我们。

你可以按照下面的说明一步一步的去执行:

当你运行clamscan发生如下的错误:

$ clamscan --some-options some_file
Segmentation fault

首先让内核程序转储内存内容,bourne-like外壳,请运行(例如bash):

$ ulimit -c unlimited

C-like外壳(例如tcsh)请运行:

> limit coredumpsize unlimited

你现在应该看到core dumped信息:

$ clamscan --some-options some_file
Segmentation fault (core dumped)

在你的当前目录会产生一个core文件,将这个core文件加载到gdb中:

$ gdb -core=core --args clamscan --some-options some_file
(gdb)

你会看到gdb提示符,运行bt命令会显示详细的跟踪报告,将这些附到漏洞报告上一起发给我们。q命令退出gdb。

*clamd调试信息:

用ps命令获取clamd的PID号(左边的第一个数值):

$ ps -aux (or ps -elf on SysV)
clamav 24897 0.0 1.9 38032 10068 ? S Jan13 0:00 clamd

与gdb一起运行:

$ gdb /usr/sbin/clamd 24897

调整你clamd路径,将24897替换成你的clamd的pid,你会看到如下的gdb提示符:

(gdb)

如果你想让clamd一直运行直至出现segmentation fault错误,运行continue命令,然后等待错误出现,到时gdb会返回的提示符状态。
这时bt命令将给出当前线程的跟踪结果,info threads命令会告诉你有多少线程,thread n命令跳转到n线程,然后bt命令会给出跟踪报告。
简单的说,你需要这样做:

用info threads得到所有的线程和它们id号

对每个线程再运行:

thread id_number
bt

quit退出gdb,输入y确认退出。

  • Strace:如果你觉得有用,你也可以附上strace的跟踪结果(这里不详细叙述)。

*警告*:除非有特别提及,否则我们并不直接维护这些由第三方提供的安装包和ports,我们不对这些负责! 除非你是直接编译ClamAV源码的,否则我们不接受来自于某个安装包的漏洞报告。

我们会尽量更新中文版,最新内容请看英文版。