在构建过程中扫描病毒

我想将病毒扫描结合到Java / Maven / Hudson构建过程中。 不幸的是,我在这种构建步骤的专用工具上找不到任何资源。 我的构建环境是基于Linux的。

我的问题是: 如何将防病毒扫描整合到基于Maven和Hudson的构建过程中?

什么是最佳做法?

  • 扫描步骤是否应与正常构建分开,例如预构建步骤甚至是单独的构建作业?
  • 扫描是否应该在包装的后期进行,在所有的文物被打包到jar文件之后或者在过程的早期?
  • 是否每个发布的人工制品都包含一个扫描仪日志文件,用于确定正在使用的防病毒工具,病毒定义文件的版本和日期?

使用哪种防病毒软件超出了本问题的范围。 (例如,我想使用商业供应商支持像ClamAV这样的免费工具)

病毒来自哪里?

我还没有看到可以修改源代码的病毒,因此源代码可能是安全的(好吧,除非你不相信你的开发人员)。

因此病毒可以隐藏在其中一个构建工具中并尝试修改JAR。 这里的工具是tripwire :它将为所有文件创建校验和,并且构建工具不应该更改(除非您安装新版本;然后您必须再次运行tripwire)。

如果构建工具是安全的,您只需要一个保护操作系统的AV工具(因此打开和写入文件等function是安全的)。 请使用贵公司的标准AV。

要使整个过程非常紧凑,您可以在构建新版本之前再次构建最后一个版本。 旧版本的校验和不应更改(但要注意文件中的时间戳)。

最佳做法是在不常被病毒攻击的平台(即操作系统)上运行构建。

最佳做法是在构建平台上的操作系统级别运行防病毒扫描程序。

最佳做法是与您的操作系统补丁保持同步,锁定防火墙,并且不要安装可能已在家庭网络上受感染的USB密钥等。

我从来没有听说过“感染”源代码,.class文件或JAR文件的病毒。 我认为它们是可能的,但商业AV产品很有可能不会注意到它们,因为它们不常见。 当然,AV产品无济于事是该病毒专门针对您/您的公司。

但假设您确实有一个您认为可行的AV产品,您可以在旋转“发布版本”之前进行AV扫描。 我不知道有什么插件可以自动完成这项工作,但是让Maven运行“某些批处理文件”并不难发生通过命令行调用病毒检查程序。

您需要一个可编写脚本的防病毒程序。

如果你有这个,应该很容易添加一个“扫描我刚建立的”步骤。

我相信McAfee有一个Linux版本可能正是您所需要的。

如何将防病毒扫描整合到基于Maven和Hudson的构建过程中?

如果真的这是一个问题,我认为你的安全团队应该强迫你(和maven)通过运行某种防病毒的代理。 这将是正确的做事方式。

但是,在我看来,从存储库中获取恶意代码的可能性接近于零,特别是对于广泛使用的库(有这么多用户,我怀疑在你获得该代码之前没有人会注意到问题)我敢打赌被(网络)邮件,USB密钥,下载软件感染的概率要高得多。 我知道这不是一个答案,但严重的是,安全政策有时是荒谬的。