本篇文章探討的也是資安系列問題,而這次的目標主角則是 MAC 系統上廣為流傳的 Homebrew 系統。
結論:
作者透過觀察 Homebrew 的 Github Action 流程,成功得上傳一個會列印一行的程式碼到 iterm2 套件中,讓所有安裝的使用者都會於 Terminal 上看到一行作者客製化的訊息。
本次的漏洞是作者刻意從 Homebrew 的 Vulnerability Disclosure Program 專案中去嘗試尋找可能的問題,所有的操作都有跟官方專案的人探討過流程,並且一切的 PoC 都是單純證明該攻擊的可行性,所以有興趣研究的人請遵循一樣的想法去做,不要認真的想攻擊。
原因:
1. Homebrew 透過 Github Action 執行 CI/CD 動作
2. Homebrew 撰寫了一個自動合併 Pull Request 的 Action
3. CI 內會透過一個Ruby的 Git Diff 第三方函式庫來驗證,只要符合下列條件就可以自動合併
- Modifying only 1 file
- Not moving/creating/deleting file
- Target filepath matches \ACasks/[^/]+\.rb\Z
- Line count of deletions/additions are same
- All deletions/additions matches /\A[+-]\s*version "([^"]+)"\Z/ or - -\A[+-]\s*sha256 "[0-9a-f]{64}"\Z
- No changes to format of versions (e.g. 1.2.3 => 2.3.4)
作者一開始想要從該規則下手,找尋有沒有可能塞入惡意攻擊並且騙過系統讓其自動合併,然而這些規則看起來沒有什麼太多問題,於是作者轉往其他領域去找尋問題,其中一個想法就是到底該 Ruby 的 Git Diff 是如何實作,也許從實作下手更有辦法去欺騙這一切。
很順利的是,作者真的於該函式庫中找到問題,對於一個 Git Diff 的結果來說,該函式庫會透過 +++ "?b/(.*) 這樣的正規表達式來判別檔案路徑的資訊而並非程式修改內容,譬如下列 diff
```
diff --git a/source file path b/destination file path
index parent commit hash..current commit hash filemode
--- a/source file path
+++ b/destination file path
@@ line information @@
Details of changes (e.g.: `+asdf`,`-zxcv`)
```
作者就開始思考,如果讓程式碼可以符合 +++ "?b/(.*) 的規則,是否有辦法讓程式碼不被視為一個檔案的修改,因此就可以修改多行程式碼但是讓 CI 系統認為只有一行程式碼於是進行自動合併
作者最初的想法如下,第一行用來放惡意程式碼,第二行用來偽裝檔案路徑,經過一番嘗試後作者真的成功塞入了類似 PRINTF 的程式碼到環境中並觸發自動合併。接者各地使用者透過 brew 安裝 iterm 版本都會看到使用者塞入的程式碼。
```
++ "b/#{Arbitrary codes here}"
++ b/Casks/cask.rb
```
原文還有更多作者的思路過程,有興趣的不要錯過
原文:
https://blog.ryotak.me/post/homebrew-security-incident-en/#fn:7
測試用PR:
https://github.com/Homebrew/homebrew-cask/pull/104191
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「iterm2」的推薦目錄:
- 關於iterm2 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
- 關於iterm2 在 นายอาร์ม Facebook 的最讚貼文
- 關於iterm2 在 iThome Security Facebook 的最讚貼文
- 關於iterm2 在 コバにゃんチャンネル Youtube 的最讚貼文
- 關於iterm2 在 大象中醫 Youtube 的最佳解答
- 關於iterm2 在 大象中醫 Youtube 的最讚貼文
- 關於iterm2 在 Day04【Git與GitHub】幫你的iTerm2化妝 - iT 邦幫忙 的評價
- 關於iterm2 在 透過在Mac 上安裝iTerm2 活潑你的終端機- Dustin's murmur 的評價
- 關於iterm2 在 04 - macOS 開發者必安裝的終端機- iTerm2 的評價
- 關於iterm2 在 iTerm2 is a terminal emulator for Mac OS X that does ... - GitHub 的評價
- 關於iterm2 在 How to use iTerm2 in a server - Stack Overflow 的評價
- 關於iterm2 在 What is the difference between iTerm2 and Terminal? - Apple ... 的評價
iterm2 在 นายอาร์ม Facebook 的最讚貼文
นี่คือถ้ามันเวิร์คก็จะไม่มีเหตุผลให้ซื้อ Mac อีกต่อไป...
(สำหรับผมที่ใช้ terminal ตลอดเวลา iTerm2 คืออะไรที่จำเป็นมากๆ ถ้า Windows Terminal ใช้งานได้พอๆกันนี่โคตรแจ่มแมว)
ไม่ต้องอ้อน manager เพื่อขอ macbook มาทำงานละ
ใครลองแล้วมารีวิวหน่อยดิ
iterm2 在 iThome Security Facebook 的最讚貼文
【10/10~10/16】一周資安新聞回顧
1⃣Imperva資料外洩原因出爐:AWS API金鑰被盜
2⃣Linux的sudo指令遭爆含有可取得最高權限的安全漏洞
3⃣Windows版iTunes零時差漏洞遭濫用,散布BitPaymer勒索軟體
4⃣LastPass:已有57%企業採用多因素認證
5⃣BSI和SGS核發的ISO 27001證書,暫時不能掛上全國認證基金會TAF標誌
6⃣macOS終端模擬器iTerm2存在重大漏洞
7⃣Office 2010一年後就會終止延伸支援,不再提供安全性更新
8⃣HP電腦預安裝軟體出現可被接管系統的漏洞
9⃣臺越警方合作破獲跨境電信詐騙機房,美國華人移民是主要受害者
iterm2 在 コバにゃんチャンネル Youtube 的最讚貼文
iterm2 在 大象中醫 Youtube 的最佳解答
iterm2 在 大象中醫 Youtube 的最讚貼文
iterm2 在 透過在Mac 上安裝iTerm2 活潑你的終端機- Dustin's murmur 的推薦與評價
Iterm2 是可以取代Mac OSX的預設 Terminal 的套件,提供了比terminal更多樣化的功能,透過安裝 zsh shell及zsh的管理套件 oh-my-zsh ,讓我們可以輕鬆 ... ... <看更多>
iterm2 在 04 - macOS 開發者必安裝的終端機- iTerm2 的推薦與評價
在macOS Mojave 上安裝iTerm2 終端機,用不慣macOS 原生的終端機嗎?可以試試iTerm2,並且 ... ... <看更多>
iterm2 在 Day04【Git與GitHub】幫你的iTerm2化妝 - iT 邦幫忙 的推薦與評價
#程式碼高亮(Syntax Highlighting). 在iTerm2 中輸入這段 brew install zsh-syntax-highlighting ,下載Syntax Highlighting. 然後要打開 ZSH ... ... <看更多>