解决ClamAV恶意代码库重复问题及对扫描期间异常情况的分析

作者:Sender Su  来源:原创内容  发布日期:2023-02-18  最后修改日期:2023-02-18

时至今日,按网络安全等级保护要求,对 Linux 服务器部署使用 ClamAV 去防范恶意代码(杀毒),这个措施应该已经常态化了。

article banner

笔者:国际认证信息系统审计师、软考系统分析师

但手头的CentOS 7服务器部署完用起来了发现,通过 freshclam 更新ClamAV的恶意代码检测数据库后,每次运行 clamscan 进行杀毒,clamscan 就会告警:

LibClamAV Warning: Detected duplicate databases /var/lib/clamav/bytecode.cvd and /var/lib/clamav/bytecode.cld, please manually remove one of them
LibClamAV Warning: Detected duplicate databases /var/lib/clamav/main.cvd and /var/lib/clamav/main.cld, please manually remove one of them

提示发现有重复的恶意代码检测数据库文件,应删除其中一个。

这个问题的原因,是通过 yum 或者 dnf 安装 clamav 软件包时,软件包内包括有 clamav-data 这个单独的 RPM 组件包,可以通过 rpm 命令观察:

[root@vm ~]# rpm -qa | grep clamav
clamav-0.103.7-1.el8.x86_64
clamav-data-0.103.7-1.el8.noarch
clamav-filesystem-0.103.7-1.el8.noarch
clamav-update-0.103.7-1.el8.x86_64
clamav-lib-0.103.7-1.el8.x86_64

clamav-data组件包是clamav的恶意代码检测数据库,由以下三个文件组成:

[root@vm ~]# rpm -q --filesbypkg clamav-data
clamav-data               /var/lib/clamav/bytecode.cvd
clamav-data               /var/lib/clamav/daily.cvd
clamav-data               /var/lib/clamav/main.cvd

当运行 freshclam 之后,clamav-update会从网络上下载最新的恶意代码检测数据库,也就是和clamav-data在功能上相同的三个文件,但文件的扩展名是 cld,并不会覆盖原有的 cvd 文件,因此就会导致提示重复。

解决问题的办法也很简单,如果 freshclam 运作良好,能更新,那么就可以单独卸载掉 clamav-data 组件包,从而避免恶意代码检测数据库重复。

操作上就是:

yum remove clamav-data

在 clamscan 使用期间,它有时会对扫描内容给出一些信息,比较常见的,以及所对应的原因如下:

1、iconv错误的警告:
LibClamAV Warning: cli_codepage_to_utf8: iconv error: An invalid multibyte sequence has been encountered in the input.

提示在输入(扫描的内容)中遇到了一个无效的多字节字符序列。

iconv()是用于转换文本的字符编码的函数。clamav通过iconv函数转换扫描内容(比如html文件)的字符集,这样统一化字符集后,可以容易检测出用非UTF8的多字节字符集(比如CJK,MBCS之类)去隐藏的恶意代码。

这个提示是iconv()的转换过程碰到了处理不了的多字节字符序列,向用户示意可能会有隐藏得更加深的恶意代码没有被 clamscan 检查出来。

如果对涉及的文件没有疑问,直接忽略这个提示便可。但如果确实可疑,应将涉及的文件单独进行检查,比如通过 virustotal.com 这一在线检查工具对可疑文件作深入检查。

iconv相关还有其它一些告警信息,道理都是相似的。

2、不完整的媒体文件的警告:
LibClamAV Warning: PNG: Unexpected early end-of-file.

图片文件(比如PNG)虽然不是可以执行的文件,但由于处理图片的函数库可能存在缺陷,使得图片文件也是恶意代码的可能载体。

clamscan 对图片文件进行结构解析和检查是否存在恶意代码。如果图片文件结构不完整,就会给出这样的提示。

处理的方式同上,如果可疑,就扔到 virustotal.com 作进一步的深入检查。

另外,也可以通过 --alert-broken-media=no 参数关闭告警。类似的参数可以通过 clamscan --help 观察获得。

3、压缩文件过大的告警
LibClamAV Warning: cli_scanxz: decompress file size exceeds limits - only scanning 27262976 bytes

clamscan 支持对压缩文件解压查杀,但由于解压查杀对计算机的性能可能会产生极大影响拖累,所以 clamscan 默认只解压26MB的数据,这对于大多数情况是足够了,但使用者的系统内还是会有大压缩包存在的,所以就给出告警提示。

可以通过 --max-scansize=#n 去设定不同的大小限制,类似的最大限制参数还有其它一些,可以自行观察。

4、文件读不到数据的告警:
LibClamAV Warning: fmap_readpage: pread fail: asked for 4073 bytes @offset 23, got 0

这种情况是因为扫描了比如 /sys 这种特殊的文件系统位置。因此必须指定 clamscan 的扫描目标,不应该闭上眼从根开始扫。

clamav trademark

本栏目相关
  •  2022-05-11 CIS-CAT 配置评估工具介绍及操作实践
  •  2022-03-16 Windows 系统安全基线及软件工具介绍
  •  2022-03-11 安装RHEL/CentOS时如何选择配置安全策略?
  •  2022-08-28 网络攻防中的色彩象征
  •  2022-03-17 详细了解微软安全合规工具包(SCT)
  •  2022-03-25 从甲方角度介绍“CIS互联网安全中心”
  •  2022-03-28 如何应用CIS互联网安全中心发布的《CIS关键安全控制措施集》之一:总览
  •  2023-01-06 MSSQL数据库自动备份和自动复制转移备份
  •  2022-05-19 网络安全日志收集甲方基础实践
  • 微信订阅号二维码

    本页网址二维码: