在上一篇《网络安全等保加固之Linux服务器恶意代码防范》,介绍的是笔者如何应用ClamAV这一Linux操作系统环境下几乎是必备的恶意代码防范手段。
网络上关于ClamAV安装使用的文章其实也不少,但我们今天来聊聊ClamAV的发展过程,基本上没人说这个事情。
笔者:国际认证信息系统审计师、软考系统分析师
要知道的是,ClamAV在前不久刚刚踏过了20周年(2002年5月-2022年5月),并且在当前发布最新的0.105版本的基础上,正在酝酿和接近发布社区期待已久的1.0版本。
ClamAV的初创者是波兰人Tomasz Kojm。他在2002年5月8日发布了这个开源反病毒引擎的第一个版本0.10。初衷主要是帮助用户从他们的电子邮件收件箱中过滤掉带有恶意软件的垃圾邮件,提高用户使用互联网的安全性。
初始版本释出后,出于条件限制,他直接在他(当时还是大学生)所在的大学和他读过的高中的WEB服务器上托管发布病毒数据库。
意想不到的是,由于ClamAV相当受欢迎,用户大量安装,导致获取病毒数据库的访问量大到对服务器甚至区域骨干网都形成了拒绝服务攻击(2002年的网络带宽普遍很低)。
Kojm自嘲是“It only took a few weeks for me to become ‘that guy who kills the internet,’”(我只过了几个星期就变成了‘那个扼杀互联网的人’)。
ClamAV原本打算命名为TurtleAV,Kojm后来觉得clam(蚌,蛤)这个单词更符合一个杀毒软件的特征:首先是第一感觉上要比turtle(龟)高效率,慢腾腾的杀毒软件谁用啊。其次是蚌或者蛤都是通过过滤方式进食的生物,而且对污染非常敏感,引申起来这就是杀毒软件所应有的特征。
所以当时ClamAV的LOGO就是一只蚌壳,也包括现在分支项目ClamWin的标志也是一只蚌壳。
在发布ClamAV的同时,Kojm还考虑了软件的易用性和更新问题。所以ClamAV 0.10版本发布的是一套比较完整的解决方案,不仅包括有病毒扫描引擎、数据库,有FreshClam这一病毒数据库更新工具,还包括有对Amavis(当时最流行的电子邮件内容过滤接口)的补丁,可以让用户通过Amavis调用ClamAV实现对电子邮件内容的查杀过滤。
由于ClamAV是前所未有的第一个开源病毒扫描引擎,所以一经发布就在开源社区实现了“病毒式传播”,这也是Kojm所没有预料到的。仅仅在发布几小时后,他就收到了许多关于ClamAV源代码的补丁和50多封电子邮件。
从0.10版本开始,ClamAV基于其开放性而不断拓展其功能边界,从一开始主要面向防范电子邮件恶意附件,发展到现在包括防范APT级别的勒索软件组织攻击,实际已经成为了开源领域恶意软件防范的主要基准措施。在NAS(网络存储)设备、网络边界设备、网络安全设备等领域被大量嵌入作为文件检查分析分类的重要手段。
在ClamAV20年的发展过程中,经过了多种不同的组织方式。在2007年8月,SourceFire公司基于完善其入侵检测防御系统Snort的目的而收购了ClamAV(从ClamAV项目的5个核心程序员处获得商标和版权),从而成为SourceFire公司旗下产品之一,并入Sourcefire VRT漏洞研究组。
2008年12月,ClamAV引入了启发式扫描,以应对当时比较流行的名为Swizzor的一种广告木马。由于Swizzor不断重组自身甚至模仿Windows本身自带的运行文件,4年间产生了多达1000种特征,ClamAV通过实现启发式扫描算法,大大提高了扫描检测有效性和降低了特征库的数量,这也是ClamAV发展历程上与闭源恶意代码检测技术保持并行的关键标志。
2009年3月,ClamAV为了提高邮件扫描功能的健壮性和开发性,重构了ClamAV-Milter,重点使得Sendmail和Postfix这两大开源邮件服务程序都能调用ClamAV实现邮件扫描杀毒,进一步稳定了ClamAV作为开源安全生态链上关键一环的地位。
https://blog.clamav.net/2009/01/new-clamav-milter-for-clamav-095.html
2010年9月,ClamAV引入了“字节码(Bytecode)”检测引擎,用于对付技术上越来越成熟也越来越难检测防范的变形恶意软件,也可以应用于解码经过加密混淆的可执行文件、解压特殊的压缩文件、甚至从具有特定结构的文件(比如PDF格式)提出部分内容进行检测等特殊情况。
https://blog.talosintelligence.com/2010/09/introduction-to-clamavs-low-level.html
https://blog.clamav.net/2011/11/bytecode-signatures-for-polymorphic.html
2012年6月,在被Sourcefire收购5年,也是ClamAV满10周年之际,ClamAV经历了一次较大的人员变动。四名主要开发人员,包括创始人Tomasz Kojm,认为ClamAV已经足够成熟,Sourcefire能成功维持ClamAV的后续运行发展而决定离开Sourcefire寻求新的发展。而Sourcefire也确实能有效地维持ClamAV继续往前,不断释出新版本。
可能很多人都会想,主创团队4人一次性全部离职,这里面应该有些什么大瓜,不过网络上并没有任何瓜能摘,而且在笔者看来,主创团队既然在被收购的时候已经拿到了报酬,那么找个新的方向实现更多想法,也是理所当然的。起码他们都还在Sourcefire工作了5年,而不是收购完成后就立即离开。
2013年9月,ClamAV在酝酿了半年后,释出了包含大量新功能特性的0.98版本,并且从这一版本开始,基于Linux Kernel 3.8开始提供的fanotify能力而实现了对正在被读写访问的文件的实时后台检查能力(结合clamd和clamonacc两个daemon程序而实现),这也使得ClamAV在Linux环境实现了和Windows环境下商业杀毒软件一样的实时查杀能力。
2013年10月,思科公司(Cisco)收购SourceFire,ClamAV跟随着Sourcefire VRT转为Cisco Talos的过程,成为Talos的一部分。
https://blog.clamav.net/2013/10/cisco-community-and-open-source.html
2014年~2015年,ClamAV团队不断完善ClamAV 0.98这一大版本,尤其在字节码检测引擎上进行了大量改善,提升检测能力,在2015年12月释出了0.99版本。这两年的表现证明了在思科公司收购后,ClamAV依旧能同时从公司和社区两端都获得支持和取得发展。
https://blog.clamav.net/2015/12/clamav-099-has-been-released.html
2016年,ClamAV继续发展,包括改善后端对恶意代码特征库的管理架构、完善实时检查能力,从基于操作系统fanotify函数的实现发展到支持inotify函数的实现。同年还成功举办了多次社区互动活动,良好地维持了开源软件成功的关键因素。
https://blog.clamav.net/2016/03/configuring-on-access-scanning-in-clamav.html
2017年,随着安全中心概念的兴起,ClamAV从0.99.3beta版本开始加入了对Prelude SIEM的支持,这也是ClamAV进一步地走进企业安全环境的举措。期间ClamAV继续进行内部完善和外部配套设施建设,比如实现了BASS Automated Signature Synthesizer自动签名合成器,BASS是一个框架,可以自动基于以前生成的恶意软件集群样本,生成新的基于模式识别而不是校验和方式的防病毒特征码,实现减少ClamAV资源占用和降低团队分析工作强度。
https://blog.clamav.net/2017/08/clamav-0993-beta-has-been-released.html
https://blog.clamav.net/2017/06/bass-automated-signature-synthesizer.html
2018年4月,ClamAV释出了0.100.0版本更新,检测能力和健壮性均得到进一步提升,在这一年对网站、BUG提交等前后端均进行了重构改良。
https://blog.clamav.net/2018/04/clamav-01000-has-been-released.html
2019年,ClamAV明显加快了版本释出的力度,版本号快速提升到0.102,并且加大了对ClamAV应用程序本身的安全问题的处理力度,并建议用户关注使用ClamAV的实时检查功能,即应用clamonacc程序。
https://blog.clamav.net/2019/10/clamav-01020-has-been-released.html
https://blog.clamav.net/2019/09/understanding-and-transitioning-to.html
2020年,ClamAV继续加大对自身安全性的关注,不断释出安全更新,并在9月释出了0.103大版本更新。
2021年,ClamAV持续重点发掘自身安全性问题,持续释出安全性补丁版本。同时,ClamAV开始注重版本更替关系,在释出0.104版本的同时,将0.103定义为LTS长期支持版本:
2022年,ClamAV重点改进字节码编译器,基于LLVM8、Clang8进行全面调整修正。
https://blog.clamav.net/2022/07/clamav-bytecode-compiler-release.html
从最近几年ClamAV的主要发展情况,可以看到ClamAV团队不仅致力于提高产品本身的功能、性能和安全性,还一直致力于提高其开放性和社区参与度。近四年来的各种改进更新大量来自于用户反馈和社区参与。ClamAV团队也通过譬如从Bugzilla迁往GitHub、创建Bug反馈模版、使用新的文档系统、启用Discord服务器等方式提高和社区的协作程度。
ClamAV在当前带头人、开源社区经理:Micah Snyder的带领下,正在进行尝试各种安全相关新设计和新功能特性,包括使用Rust语言提高软件健壮性和提高构建过程的灵活性、实现在扫描过程中使用应用程序沙箱等。
展望ClamAV达到25周年里程碑时,一定会有全新的样貌。
本站微信订阅号:
本页网址二维码: