文件的内存扫描,最好使用ClamAV。

11

我们正在实施一个注重安全的企业应用程序,其中包括文件上传。这些文件需要进行病毒扫描,但也需要加密。

当前流程是上传文件,然后通过加密器流式传输到磁盘上的临时存储区域。然后调用病毒扫描器,并且文件在传输过程中动态解密,通过套接字流式传输到ClamAV,然后从套接字返回病毒状态。

问题在于ClamAV在扫描之前似乎会将数据写入磁盘上的临时区域,这意味着未加密的、可能敏感的数据存储在文件系统上。

是否有人知道如何解决这个问题?可能通过配置ClamAV仅在内存中扫描(我的Google搜索没有结果),或者提供一些替代建议?


你能否使用TrueCrypt容器挂载该文件系统呢?这样应用程序就可以将数据写入磁盘上的安全空间了。 - Thomas Jungblut
此外,除非您已加密交换空间,否则“内存”可能会被写入磁盘。攻击者可以冻结内存以获取其内容。 - Douglas Leeder
我认为内存方面也很重要。谢谢。实际上,我很感激大家的评论。谢谢你们所有人。 - Martin
3个回答

7

我假设您正在使用clamd,因为您是通过套接字与其通信而不是使用cli工具clamscan。

在这种情况下,您可以通过在clamd.conf中配置TemporaryDirectory指令来将其指向加密文件系统以进行临时存储,例如使用dm-crypt(https://help.ubuntu.com/community/EncryptedFilesystemHowto)- 希望这有所帮助。

引用自man 5 clamd.conf:

   TemporaryDirectory STRING
          Optional path to the global temporary directory.
          Default: system specific (usually /tmp or /var/tmp).

3

这里有一个很好的例子:

使用ClamAV杀毒软件的Java API检测病毒

http://nsinfra.blogspot.ca/2011/06/java-api-to-detect-virus-using-clamav.html

本文介绍了使用Java API扫描文件以检测木马、病毒、恶意软件和其他恶意威胁的方法。

以下内容已经涵盖: 关于ClamAV杀毒软件 在Linux机器上安装ClamAV杀毒软件的说明 使用ClamAV Java API扫描文件以检测病毒的方法


1

我能想到的最简单的方法就是使用RAM磁盘。

也许你应该检查一下ClamAV是否有更复杂的API来完成这样的任务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接