扫描Magento代码中恶意内容的工具


8

我们的客户非常关注在第三方模块中引入的恶意代码,尤其是来自Magento Connect的模块(或任何免费模块),他们希望使用其中一个模块,但希望确保该模块能够不包含允许黑客访问其Magento网站不同部分的代码。

我的问题是:有没有一种我们可以用来扫描代码内容的工具?像这样,但可能更深入。

function check($contents,$file) {
        $this->scanned_files[] = $file;
        if(preg_match('/eval\((base64|eval|\$_|\$\$|\$[A-Za-z_0-9\{]*(\(|\{|\[))/i',$contents)) {
            $this->infected_files[] = $file;
        }
}

甚至可以在Web服务器上运行的服务。

理想的情况是,如果有一个服务可以在代码进入存储库之前扫描每个提交,那将是理想的选择。


好问题。我天生偏执,在安装新模块时,我去检查代码以查看是否有可疑之处。我猜这个问题是针对那些不知道他们在寻找什么的人的。就像访问手机摄像头和/或麦克风的所有那些手电筒应用程序一样。您不知道为时已晚或认真查看要安装的内容。话虽如此,我希望有人能提出一个解决方案,或者说Magento Connect在允许的模块上变得更加艰巨。
SR_Magento 2015年

1
他们难道不付钱给您下载,然后在不使用Connect的情况下上传到商人站点之前进行代码审查吗?
Kristof在Fooman,2015年

Answers:


3

您是否考虑过运行clamav?- https://www.clamav.net/index.html -我在客户端的Ubuntu服务器上运行的Magento最近跑了这一点,它有两个受感染的文件回来-扫描速度令人印象深刻,如果你有SSH访问很容易地运行-您也可以通过Cron作业定期运行。

在Ubuntu上运行Clam AV

要安装ClamAV,请运行以下命令

apt-get update
apt-get install clamav

手动更新病毒数据库

freshclam

您将看到ClamAV更新过程已开始要手动扫描文件/文件夹中的病毒

clamscan -r --bell -i /

对于不在Ubuntu上的用户,可以在这里找到完整的说明https://www.clamav.net/doc/install.html


将其添加到Linux恶意软件检测程序中,该程序执行一个级别的扫描,然后与ClamAV绑定以完成清除php应用程序漏洞的尝试。
Fiasco Labs 2015年

FYI Clam无法检测到大多数最新的Magento恶意软件。另外,大多数恶意软件都隐藏在数据库中,尤其是在以下表格中:core_config_data,cms_blocks和cms_pages。因此,您应该将它们转储到文件中并进行扫描。
威廉

3

混淆代码的方法有很多,因此,这种简单的解决方案根本不是IMO的解决方案。如果您确实想锁定系统并防止恶意代码,我建议:

  1. 不允许通过Connect安装模块。使用git repo并首先安装在登台服务器上,并且仅在经过全面测试和检查后才通过git更新生产。

  2. 无论开发人员是谁,都决不允许使用带有混淆代码的模块。索要一份清晰的副本,或只看别处。我对希望防止盗版的扩展开发人员表示同情,但是如果您担心安全性,那将是一个大问题。

  3. 如果可能,请通过iptables限制出站流量。这很困难,因为要集成许多第三方API,并且它们可以随时更改其IP,但这是防止恶意代码(Magento或其他)入侵的最可靠方法。

  4. 安装一个工具来监视您的Web根目录中的文件更改。例如,当然,在正确配置后,ConfigServer防火墙和OSSEC的组件可以很好地完成此任务。

如果您偶然发现某个系统会在DNS记录更新时刷新iptables条目或AWS安全组,请告诉我,因为我尚未找到或自己构建一个。


感谢Colin,它实际上并没有回答问题:我们执行1和2。第三项是事实之后的内容,并且不涉及代码扫描。#4只是现有代码的比较。我们有clamAV和Sophus,但是错过了两个文件。
brentwpeterson 2015年


1

我创建了一个名为MB_ Callinghome的模块来完成此操作。该扩展非常简单,它观察管理员登录事件并使用find和grep搜索可配置的字符串。该扩展使用exec()使其仅在登台环境中可用,因为如果在prod中使用它可能会使站点受到攻击。


1

您也许可以考虑使用PHP_CodeSniffer或类似的编码标准工具。您当然需要对应该被视为安全的内容的内部运作有深刻的了解,但是您可以对其进行设置,以使代码嗅探器随后可以标记出有问题的文件。

我记得这里有一个问题,就是为什么这里的模块所使用的标准https://github.com/magento-ecg/coding-standard对诸如fopen和其他文件I / O操作之类的标签如此敏感。

使用它,您至少可以确定想要考虑的危险代码。但是,最终仍然需要对代码库进行审查。出于模块操作的目的,任何被标记的内容可能都有合法的代码。因此,不幸的是,您不能完全依靠自动测试来进行这种性质的测试。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.