检查 AUR PKGBUILD 是否有恶意代码的便捷方法?

use*_*686 8 security package-management arch-linux

众所周知,从 AUR 安装软件包时应该小心,因为 PKGBUILD 可能不会按照您的预期运行并且可能是恶意的。因此,我从 AUR 安装和更新软件包的工作流程如下(使用 yaourt):

检查 PKGBUILD:

  • source=(...)部分是否仅包含来自预期来源的 URL?
  • package(){...}如果零件只执行通常的安装/复制操作,请快速扫描零件

我认为使用此过程与从源下载软件并手动安装一样安全。请注意,我不是在谈论要安装的软件本身是否安全,我想考虑软件包的附加安全问题。

问题是:

  • 这和我假设的一样安全吗?是否还有其他地方(在 PKGBUILD 或其他地方)可以进行攻击?
  • 在每次更新包时检查整个 PKGBUILD 非常不方便。在大多数情况下,仅更改版本号或 URL。是否有工具或简单的方法来展示/突出与上一个 PKGBUILD的差异
  • 是否有支持用户检查 PKGBUILD 文件的工具?

小智 4

问题解答

这像我想象的那样安全吗?是否有其他地方(PKGBUILD 中或其他地方)可以进行攻击?

只要您信任该软件,它对您来说就是安全的。如果没有软件编辑器,那么根据 [Arch Wiki],您所做的只是最少的事情,因为您没有真正检查可以输入恶意代码的下载源的源代码。

引用维基百科:

警告:仔细检查所有文件。仔细检查PKGBUILD和任何.install文件是否存在恶意命令。PKGBUILD 是包含要执行的函数的 bash 脚本makepkg:这些函数可以包含任何有效的命令或 Bash 语法,因此完全有可能由于 PKGBUILD作者的恶意或无知而包含危险命令。由于makepkg使用 fakeroot(并且永远不应该以 root 身份运行),因此存在一定程度的保护,但您永远不应该指望它。如果有疑问,请不要构建软件包并在论坛或邮件列表上寻求建议。


每次更新包时都检查整个 PKGBUILD 非常不方便。在大多数情况下,仅更改版本号或 URL。是否有工具或简单的方法来呈现/突出与上一个 PKGBUILD 的差异?

PKGBUILD每次更新时检查整体都不会不方便,因为:

奇怪的错误可能会做坏事

AUR包含Git,因此您可以检查从https://aur.archlinux.org/cgit/aur.git/log/?h=yourPackageNameHere.


是否有支持用户检查 PKGBUILD 文件的工具?

在我写这篇文章时,还没有工具可以做到这一点,但让我们看看未来会怎样!


检测/避免恶意

请认为以下内容并不完整,可以进行修改

如果没有对代码进行广泛的审核,您就无法真正检查 PKGBUILD,也无法在开箱即用的情况下观察它的运行情况,例如在使用虚拟机的帮助下。

没有工具也没有自动方法来查找恶意软件包,但您可以(不应该)借助以下内容来避免恶意代码。

  • 下载软件包及其源代码,解压但不安装。
  • 对解压的/源文件运行病毒检查。这将帮助您发现一些已知的问题或黑客行为。
  • 在使用它之前,将其安装到虚拟机中并检查它是否没有做任何错误,例如触摸不应该的文件或例如与服务器通信。使用 Rootkit 检测器应该可以自动检测此类内容。
  • 将其安装在受限制的环境中,例如 SELinux、chroot 监狱、虚拟机、单独的机器...