问题标签 [clam]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
83 浏览

sockets - 可以依靠 Clamd 来解压 RFC-822 格式的 .eml 文件吗?它似乎做到了

我正在使用 ClamAV,通过 Unix 套接字进行通信,例如https://github.com/Elycin/php-clamav/。到目前为止所有工作。

我的应用程序从文件夹中提取文件。每个文件都包含符合 RFC822 的内容(有时您会看到这些带有扩展名 .eml)。

我打算编写代码将 .eml 文件解压缩为单独的正文和多个附件。然而,快速测试表明,如果我只是将整个 .eml 文件写入clamd套接字,例如 EICAR 测试文件作为附件,则会clamd扫描并报告“受感染”文件。

我想知道这是否可以依赖,即 clamd 是否总是彻底解压并检查嵌入的 MIME 部分电子邮件附件,还是我只是在测试中“走运”?我不想相信运气。

0 投票
1 回答
1005 浏览

php - CentOS 7 无法连接 clamd.sock 文件(权限被拒绝错误)

我正在尝试使用 clamAV 扫描 PHP 服务器上上传的文件。我已经在我的服务器(Centos 7)上安装了 ClamAV。目前,我使用的是 PHP 7,所以我使用 Clamd 套接字连接来扫描上传的文件。我启用了 PHP 套接字,clamd.sock 文件存在于/var/run/clamd.scan/具有 apache 所有者的文件夹中。

我的 Socket 连接代码 -

当我尝试在浏览器上运行上述代码时,我收到错误消息socket_connect(): unable to connect [13]: Permission denied,但是如果我通过命令行以 root 用户身份运行 PHP 代码,它工作正常。

我知道 Centos 的 SELinux 策略存在一些问题,就好像我禁用了 SELinux 策略一样,浏览器中的一切都正常工作。我已经检查过httpd_can_network_connect --> onantivirus_can_scan_system --> on两者都打开了。

问题在于/var/run/为用户访问文件夹内的任何内容apache,SELinux 有一些东西(一些策略)正在阻止 apache 连接到 clamd 套接字文件。有任何想法吗?

0 投票
0 回答
1032 浏览

clam - 套接字上的 ClamAV clamd INSTREAM 的间歇性问题

我有一个运行 NodeJS 代码的 AWS Lambda 函数,可以将文件从 S3 流式传输到在 EC2 实例上运行的 ClamAV。

通常(大约 75% 的时间)系统可以工作,但通常(尤其是从不同的 Lambda 容器扫描多个文件时)clamd线程会卡在INSTREAM.

一旦线程进入INSTREAM25-30 秒,它似乎就无法恢复。当它已经QUEUEDSINCE350 秒时,它被杀死。我无法弄清楚这些数字中的任何一个与我的配置中的任何值有何关系。

我很难在日志中找到任何错误迹象 - INSTREAM 请求的数量与完整扫描的数量相匹配:

...好吧,现在我对日志进行了更深入的研究,扫描一些日志只需要更长的时间。当我处理一批 16 个文件时,Lambda 并发限制为 7 个,前 7 个文件在几秒钟内被扫描。下一个文件很快开始扫描,在一秒钟内到达“块完成”,但在“扫描线程:连接关闭”之前需要 23 秒。从这里开始变得更糟 - 1:24、1:45……然后第三批 7 个文件需要 3 多分钟才能扫描。

AWS m3.medium 上的性能

如果我给系统几分钟的时间来安定下来,所有的线程都会死掉,同样的文件需要 3 分钟以上,现在大约需要 5-7 秒。

如果我在更快的机器上运行相同的测试,性能会提高,但问题仍然存在:

AWS m4.xlarge 上的性能

当线程卡住时,INSTREAM我可以看到文件仍然存在:

0 投票
1 回答
189 浏览

malware - Clamav 逻辑签名生成

我正在尝试为我拥有的恶意软件数据集生成 clamav 签名。

最初,我已经识别出一些在一类恶意软件中很突出的字符串,因此,考虑了这些字符串,并使用以下方法生成了一个 ldb 签名。

签名的名称,引擎版本,目标为 0。我们还有“x”个子签名,这里 x 是 100,每个都有逻辑或。所有字符串都转换为十六进制表示。下面是生成的示例。

ramnit.Signature;引擎:0-500,目标:0;0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17| 18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42| 43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67| 68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92| 93|94|95|96|97|98|99;636f6e6e6;686b65795;363530393;52656c656;633a5c5c7;436f6e766;313937313;6c6f63616;576169744;363337363;686b65795;353238363;736c65657;633a5c5c7;636f6e6e6;686b65795;633a5c5c7;737663686; 363030363;633a5c5c7;313935353;633a5c5c7;636f6e6e6;6765746d6;536574437;313933393;686b65795;633a5c5c7;323232363;353537363;686b65795;686b65795;686b65795;686b65795;686b65795;686b65795;686b65795;686b65795;353130363;64656c657;633a5c5c7;633a5c5c7;686b65795; 53656e644;6b7975666;6c6f63616;494d41474;686b65795;686b65795;686b65795;696573716;737663686;313237303;363033353;363039383;686b65795;686b65795;633a5c5c7;686b65795;333139313;686b65795;437265617;686b65795;476574546;353631323;633a5c5c7;686b65795;496e74657;686b65795;686b65795;686b65795;686b65795;3f7365745;633a5c5c7;476574537;527063426;686b65795;686b65795; 566572517;353630353;686b65795;4f70656e5;353138343;4c6f6f6b7;633a5c5c7;476574546;363139393;633a5c5c7;686b65795;353638333;676574707;6f6c65333;5065656b4;343230353;536574576;5c5c3f3f5;5265674f7;633a5c5c7;686b65795;686b657955065656b4;343230353;536574576;5c5c3f3f5;5265674f7;633a5c5c7;686b65795;686b657955065656b4;343230353;536574576;5c5c3f3f5;5265674f7;633a5c5c7;686b65795;686b65795

现在,问题是如果有 <=65 个子签名,那么一切正常,但是,如果它们增加超过此值,则会导致以下错误。

是不是 ldb 签名仅限于 65 个条件?如果不是,是什么原因导致此问题以及如何解决?

0 投票
1 回答
2264 浏览

javascript - Azure:如何在传入的 blob/文件进入 blob 存储之前对其进行扫描?

我目前正在创建一种病毒扫描功能。

我正在尝试做的事情:当文件上传到指定的 blob 存储容器时,会触发 Azure 函数。该功能将扫描文件中的病毒,如果干净,则将文件移动到另一个 blob 存储容器。

我创建了一个在创建 blob 时触发的 Azure 函数(即上传文件时),但我不知道如何将病毒扫描集成到混合中。

我尝试使用ClamAV.js,但无法正常工作。我不确定如何安装 ClamAV(守护程序),以便它可以被 Azure 函数使用,所以这可能是它无法正常工作的原因。另外,我不确定如何安装 npm 包(在 Azure 函数中),所以我必须将实际的 js 文件从包上传到函数,然后再导入。不确定这是否有效......

我曾尝试使用AttachmentScanner,但我无法在 Azure 函数中使用它(更具体地说,我无法让该函数发送 POST 请求)。

我面临的一个主要问题是我认为我无法解决:如何在 Azure 函数中使用 npm 包?我可以在某个地方安装它们吗?我可以只下载包并手动将 js 文件上传到 Azure Function 并以这种方式导入吗?

这是我使用 AttachmentScanner 的尝试:

这会产生一个错误:Exception: ReferenceError: XMLHttpRequest is not defined

使用以下函数,我可以检测 blob 并打印有关它的信息:

任何帮助表示赞赏!

0 投票
2 回答
3833 浏览

out-of-memory - Azure 函数主机因 OutOfMemoryException 而死,但未触发

快速版:为什么我的功能主机在 5 分钟后没有做任何事情就自动杀死它?

我有一个 Azure 函数,它使用 nClam 扫描 blob 文件中的病毒。它似乎工作得很好,但突然间它会在触发任何 blob 之前自行杀死它!它会在 5 分钟后以 OutOfMemoryException 关闭:

下面是我的扫描 blob 触发功能:

更新 1:主机在 5 分钟后因 OutOfMemoryException 而死亡。我试图延长功能超时,这没有什么区别。在此期间,该进程将持续使用 5-8% 的 cpu,并且在它死亡之前,该进程将使用超过 1500 MB 的内存。

更新 2:如果我从函数中删除所有代码,只留下一个 log.info() 语句,主机仍然会在 5 分钟后以 OutOfMemoryException 自行杀死它

0 投票
2 回答
4370 浏览

node.js - 使用 lambda 扫描 AWS S3 存储桶中的文件以查找病毒

我们需要扫描用户上传的文件,检查是否有病毒,然后将其标记为受感染。我检查了一些博客和其他 stackoverflow 答案,并知道我们可以使用冷静扫描。

但是,我对 clamscan 配置中病毒扫描的路径感到困惑。另外,有没有教程可以参考。我们的应用程序后端位于 Node.js 中。

我也对其他图书馆/服务开放

0 投票
0 回答
78 浏览

php - PHP 和 ClamAV 套接字编程

我对 ClamAV 和 PHP 套接字编程真的很陌生。

并且需要创建 ClamAV 守护程序将侦听的套接字文件。

我真的不知道如何连接到 ClamAV 或从哪里开始任何帮助都会很棒。

0 投票
1 回答
971 浏览

centos - 如何在 Centos 8 上将 Clamd 作为服务运行

我已经下载了 clamd(和 clamav),我想使用 systemctl 将 clamd 与按访问扫描作为服务运行。这在 Centos 8 上是否可行?如果没有,是否有一个 anticirus 替代方案可以让我在访问时扫描文件?

0 投票
1 回答
196 浏览

c# - nClam - 如何将 linux 服务器路径传递给 ScanFileOnServer

我已经设置 ClamAv 在 Ubuntu VM (VirtualBox) 内的 docker 容器中运行。我已经编写了以下 C# 程序(从我的 Windows 主机运行)并且能够成功扫描我的 Windows 机器中的本地文件(SendAndScanFileAsync),因为 192.168.0.103:3310(Guest Ububtu 中的 ClamAv)可以从主机 Windows 访问。

我想使用 ScanFileOnServerAsync 方法扫描 Linux 服务器的 Downloads 文件夹中的文件,但我无法这样做,因为我不确定如何在以下代码中指定 Linux 路径。请帮忙。

要扫描的 Linux 服务器路径:/home/{user}/Downloads

无论我指定的路径格式是什么,我总是会收到此错误 - “下载:lstat() 失败:没有这样的文件或目录。错误”