后来从 3 个 AUR 包中发现并删除了恶意代码acroread
,blaz
以及minergate
(例如:acroread PKGBUILD 详细信息)。它是在恶意用户通过更改孤立 AUR 包的所有者并包含恶意curl
命令而发布的提交中发现的。
该curl
命令将下载主 bash 脚本x
,然后是第二个脚本u
( u.sh
),以创建 systemd 服务并使用函数收集一些系统数据(非敏感数据),但攻击者可以修改脚本以按顺序上传。
实际上,由于某些原因(需要一些知识,需要更多时间等),并非所有用户都能够在他们的系统上构建任何软件包之前检查 PKGBUILD。为了了解它是如何工作的,我在这个 pastbin 页面上下载并上传了 2 个 bash 脚本。
检查 AUR 包中是否存在恶意代码的最简单方法是什么?
关键是对于没有经验的用户来说检查源代码可能不是那么容易。然而,从自然的对立面来看,Arch Linux 并不是最适合没有经验的用户的 Linux 发行版。
Arch wiki(s)、AUR 助手和大多数在线论坛警告此类存储库/AUR 的危险,并且不能盲目信任它们。一些助手还警告您应该在安装 PKGBUILD 之前阅读它们。
作为建议,始终建议使用trizen或
aurman
(或类似的实用程序)而不是yaourt
(列为有问题/已停产),因为它们为用户提供了检查包/差异列表的机会。它还有助于在获取或更新包时查看贡献的历史记录。当你有官方二进制包作为替代时,临时用户不应该使用这些存储库作为他们主要的包来源。如果您必须使用 AUR,您可以搜索 Arch 论坛和/或邮件列表以获取问题报告。然而,虽然这是一个过于乐观的观点,但 Arch 社区似乎定期检查包,就像这里的情况一样。
您也可以尝试使用
maldetect
在下载的源代码中搜索已下载的源代码以查找已知的恶意软件签名,但是使用自定义代码捕获某些内容的概率为零。maldetect
通常更适合在 PHP 代码中捕获恶意软件。PS 在我上一份工作中,我使用了一小段时间
dhcpd
从源代码编译的软件包,并且多年来一直使用从源代码编译的 FreeRadius 软件包(因为 Debian 版本已过时)。在第一种情况下,我对 github 上的源代码做了一些粗略的检查,我下载了几次。在第二种情况下,我积极关注了FreeRadius用户论坛、github论坛和代码更新。我也有一个测试/隔离环境。(我什至设法提交了在我的测试环境中发现的重要错误报告)。
言归正传,如果您对源代码安装包进行任何认真的工作,它通常比发行版提供的官方编译包涉及更多的工作。
PS2。通常,任何经验丰富的 Unix 管理员都会告诉您直接运行直接来自的脚本/源代码,
curl
而无需进行任何视觉检查,从安全的角度来看,这是一个非常糟糕的主意。