題 方便的方法檢查AUR PKGBUILD惡意代碼?


眾所周知,從AUR安裝軟件包時應該注意,因為PKGBUILD可能無法達到您的預期並且可能是惡意的。出於這個原因,我從AUR安裝和更新軟件包的工作流程如下(使用yaourt):

檢查PKGBUILD:

  • 是嗎? source=(...) 部分只包含預期來源的網址?
  • 快速掃描 package(){...} 部分,如果它只進行通常的安裝/複製操作

我假設使用此過程與從源下載軟件並手動安裝一樣安全。請注意,我不是在談論要安裝的軟件本身是否安全,我想考慮一個軟件包的額外安全問題。

問題是:

  • 這是否像我假設的那樣安全?是否有其他可以放置攻擊的地方(在PKGBUILD或其他地方)?
  • 在每次更新包時檢查整個PKGBUILD是非常不方便的。在大多數情況下,僅更改版本號或URL。是否有工具或簡單的方式來呈現/突出顯示 分歧 從上一個PKGBUILD?
  • 是否有支持用戶檢查PKGBUILD文件的工具?

5
2017-09-22 10:09


起源




答案:


問題的答案

這是否像我假設的那樣安全?是否有其他可以放置攻擊的地方(在PKGBUILD或其他地方)?

只要您信任該軟件,它對您來說是安全的。 如果沒有軟件編輯器,那麼根據[Arch Wiki],你所做的是最低限度,因為你並沒有真正檢查下載源的源代碼,可以輸入惡意代碼。

引用維基:

警告:小心 檢查所有文件。仔細檢查 PKGBUILD 和任何 .install 惡意命令的文件。 PKGBUILD是包含要執行的函數的bash腳本 makepkg:這些函數可以包含任何有效的命令或Bash語法,因此完全可以使用 PKGBUILD 通過作者的惡意或無知來控制危險的命令。以來 makepkg 使用fakeroot(並且永遠不應該以root身份運行),有一定程度的保護,但你永遠不應該依賴它。如果有疑問,請不要在論壇或郵件列表上構建軟件包並尋求建議。


在每次更新包時檢查整個PKGBUILD是非常不方便的。在大多數情況下,僅更改版本號或URL。有沒有工具或簡單的方法來呈現/突出與上一個PKGBUILD的差異?

檢查整體並不是不方便 PKGBUILD 每次更新都是因為:

奇怪的錯誤 可以做 壞事

AUR 包括 混帳 這樣您就可以檢查從AUR存儲庫中所做的更改 https://aur.archlinux.org/cgit/aur.git/log/?h=yourPackageNameHere


是否有支持用戶檢查PKGBUILD文件的工具?

在我寫這篇文章時,沒有任何工具,但讓我們看看未來會是什麼!


檢測/避免惡意

請將以下內容視為不完整且可以修改

如果沒有對代碼進行廣泛的審核,你就無法真正檢查PKGBUILD,並在開箱即用的情況下觀察它,例如在使用虛擬機的幫助下。

沒有工具也沒有自動方式來查找惡意軟件包,但您可以(不應該)借助以下內容來避免惡意代碼。

  • 下載軟件包及其來源,解壓縮但不安裝。
  • 對解壓縮/源文件運行病毒檢查。這將幫助您找到一些已知問題或黑客。
  • 在使用它之前,將其安裝到虛擬機中並檢查它是否沒有做任何錯誤,例如觸摸它不應該的文件或例如與服務器通信。 rootkit檢測器的使用應該自動檢測這些事物。
  • 將它安裝在受限制的環境中,例如SELinux,chroot jail,虛擬機,獨立機器......

1
2017-07-25 09:28



實際上是AUR的助手 yaourt 支持顯示最後一個PKGBUILD的差異而不是整個(選項 AURUSEGIT=1 和 AURSHOWDIFF=1)。如上所述 這裡 這有助於減少審計工作。您可能想要更新您的答案。 - user905686
@ user905686我沒有 - 而且我認為沒有人應該 - 因為以下原因而使用yaourt 比較表 ... - funilrys
好點子。我想答案可能包括暗示哪些AUR助手可以支持判斷安全性(當然需要信任該工具)。可能這些助手中的一些也能夠顯示PKGBUILD差異。 - user905686