众所周知,从 AUR 安装软件包时应小心谨慎,因为 PKGBUILD 可能不会按照您的预期运行,并且可能是恶意的。因此,我从 AUR 安装和更新软件包的工作流程如下(使用 yaourt):
检查 PKGBUILD:
- 该
source=(...)
部分是否仅包含来自预期来源的 URL? package(){...}
如果仅执行常规安装/复制操作,则快速扫描该部件
我假设使用这种方法与从源代码下载软件并手动安装一样安全。请注意,我不是在谈论要安装的软件本身是否安全,而是要考虑软件包的附加安全问题。
问题是:
- 这是否像我想象的一样安全?还有其他地方(在 PKGBUILD 或其他地方)可以进行攻击吗?
- 每次更新软件包时都要检查整个 PKGBUILD,这非常不方便。大多数情况下,只有版本号或 URL 会发生变化。是否有工具或简单的方法来显示/突出显示差异来自最后的 PKGBUILD?
- 是否有一个工具可以帮助用户检查 PKGBUILD 文件?
答案1
问题解答
这是否像我想象的一样安全?还有其他地方(在 PKGBUILD 或其他地方)可以进行攻击吗?
只要您信任该软件,它对您来说就是安全的。如果没有软件编辑器,根据 [Arch Wiki],您所做的只是最低限度的,因为您实际上并没有检查下载源的源代码,因为恶意代码可能被输入其中。
引用维基百科:
警告:小心检查所有文件。仔细检查
PKGBUILD
和 任何.install
文件中是否存在恶意命令。PKGBUILD 是包含 执行函数的 bash 脚本makepkg
:这些函数可以包含任何有效命令或 Bash 语法,因此 完全有可能因PKGBUILD
作者的恶意或无知而包含危险命令。由于makepkg
使用 fakeroot(并且永远不应以 root 身份运行),因此存在一定程度的保护,但您永远不应依赖它。如果有疑问,请不要构建软件包并在论坛或邮件列表中寻求建议。
每次更新软件包时都要检查整个 PKGBUILD,这非常不方便。大多数情况下,只有版本号或 URL 会发生变化。是否有工具或简单的方法可以显示/突出显示与上一个 PKGBUILD 的差异?
PKGBUILD
每次更新时检查整体并没有什么不方便,因为:
平均房颤包括Git这样您就可以从中检查 AUR 存储库所做的更改https://aur.archlinux.org/cgit/aur.git/log/?h=yourPackageNameHere
。
是否有一个工具可以帮助用户检查 PKGBUILD 文件?
在我写这篇文章的时候,还没有这样的工具,但让我们看看未来会怎样!
检测/避免恶意
以下内容不完整,如有修改,恕不另行通知。
如果没有对代码进行广泛的审核并且没有在使用虚拟机等方式观察其实际运行的情况下,您就无法真正检查 PKGBUILD。
没有工具也没有自动化的方法来查找恶意软件包,但您可以(不应该)借助以下方法避免恶意代码。
- 下载软件包及其源代码,解压但不要安装。
- 对解压后的文件/源文件进行病毒检查。这将帮助您发现一些已知问题或黑客攻击。
- 在使用它之前,请将其安装到虚拟机中,并检查它是否做错了什么,例如触摸不该触摸的文件或与服务器通信。使用 rootkit 检测器应该可以自动检测这些事情。
- 将其安装在受限环境中,例如 SELinux、chroot jail、虚拟机、单独的机器……
答案2
关于自上次升级以来 PKGBUILD 的变更,AUR 助手的比较在 Arch wiki 中现在有一个标准差异视图,表示 AUR 助手是否能够显示 git 存储库中的差异(这还包括除 PKGBUILD 之外的其他文件,例如 .install 或 .patch 文件)。