GitHub 竟成挖礦犯罪者天堂,駭客主攻「Action」漏洞暗植挖礦程式

github hacker mining

【我們為什麼挑選這篇文章】駭客居然把「挖礦」的歪腦筋動到 GitHub 身上了嗎?早在去年 11 月開始,便有工程師發現有人利用 GitHub 伺服器來「挖礦」!直到有一名法國工程師嘗試與駭客打攻防戰,才發現到原來駭客隱身於「GitHub Action」的漏洞。雖然 GitHub 官方出手打擊駭客,不過只要駭客辦了一個新帳號,仍然能輕鬆繞過系統漏洞,讓 GitHub 傷透腦筋。(責任編輯:孫敬)

本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請連繫出處

作者:   量子位

加密貨幣價格一路高漲,顯卡又買不起,怎麼才能「廉價」挖礦?

駭客們動起了歪心思——「白嫖」伺服器。

給 PC 植入挖礦木馬,已經無法滿足駭客日益增長的算力需求,如果能用上 GitHub 的伺服器,還不花錢,那當然是極好的。

github hacker mining

而且整個過程可能比侵入 PC 還容易,甚至都不需要工程師上當受騙。只需提交 Pull Request(PR),即使項目管理者沒有批准,惡意挖礦代碼依然能夠執行。

原理也很簡單,利用 GitHub Action 的自動執行工作流程功能,輕鬆將挖礦程式運行在 GitHub 的服務器上。

早在去年 11 月,就已經有人發現駭客這種行為,更可怕的是,半年過去了,這種現象依然沒得到有效制止。

GitHub 心裡苦啊,雖然可以封禁違規賬號,但駭客們玩起了「游擊戰術」,不斷更換馬甲號逃避「追捕」,讓官方疲於奔命。

就在幾天前,一位荷蘭的工程師還發現,這種攻擊方式依然存在,甚至代碼裡還出現了中文。

github hacker mining

那麼,這些駭客是如何植入挖礦程式的呢?一切要從發現異常的法國工程師 Tib 說起。

PR 異常讓工程師起疑心
去年 11 月,Tib 發現,自己在一個沒有參加的 repo 上收到了 PR 請求。而且在 14 個小時內就收到了 7 個,全是來自一個「y4ndexhater1」的用戶,沒有任何描述內容。

github hacker mining

令人感到奇怪的是,這並不是一個熱門項目,Star 數量為 0。

github hacker mining

打開項目主頁發現,內容是 Perl 項目的 github action、circle ci、travis-ci 範例代碼集合,整個 README 文檔一團糟,根本不像一個正經的開放原始碼項目。

github hacker mining

然而就是這個混亂又冷門的 repo,居然在 3 天裡被 fork 了 2 次。

一切都太不正常了,讓人嗅到了一絲不安的氣息。

嘗試「作死」運行
本著「作死」的精神,Tib 決定一探究竟。

經過那位可疑用戶的操作,Tib 所有的 action 都被刪除,在工作流程裡被加入了一個 ci.yml 文件,內容如下:

github hacker mining

當 Tib 看到 eval「"$(echo "YXB0IHVwZGF0ZSAt」這一行內容後,立刻從沙發上跳了起來,他意識到事情的嚴重性:有人在入侵他的 GitHub 個人資料!

這串看似神秘的字符,其實是 base 64 編碼,經過翻譯後,得到了另一段代碼:

github hacker mining

前面兩行不必解釋,有意思的地方從第三行開始,它會下載一個 prog 二進位文件。

為了安全起見,Tib 先嘗試獲取訊息而不是執行,得到了它的十六進位代碼。

github hacker mining

Tib 也考慮過反編譯,但是沒有成功。

不入虎穴,焉得虎子,Tib 決定嘗試運行一下。

要執行這一大膽而又作死的任務,防止「試試就逝世」,Tib 首先斷開了電腦的網絡鏈接,並選擇在 Docker 容器中運行。

答案終於揭曉,原來這個 prog 是一個名為 XMRig 的挖礦程式。

github hacker mining

當時 XMRig 的最新版恰好是 6.8.1,和上面的版本參數符合。不過用 SHA 256 檢測後發現,這個 prog 並不完全是 XMRig,Tib 預測它可能是一個修改版。

實際上,可能被攻擊的不止 GitHub,安全公司 Aqua 推測,像 Docker Hub、Travis CI、Circle CI 這些 SaaS 軟體開發環境,都可能遭受這類攻擊。

在這個攻擊過程中,會派生一個合法的 repo,負責將惡意的 GitHub Action 添加到原始代碼。然後,駭客再向原始 repo 提交一個 PR,將代碼合併回原始 repo。

下載的挖礦程式會偽裝成 prog 或者 gcc 編譯器,通過提交 PR 在項目執行自動化工作流,此時服務器將運行偽裝後的挖礦程式。

github hacker mining

這些攻擊者僅一次攻擊就可以運行多達 100 個挖礦程式,從而給 GitHub 的服務器帶來了巨大的計算量。

據 Aqua 估計,僅在三天的時間裡,挖礦駭客就在 GitHub 上有超過 2.33 萬次 commit、在 Docker Hub 上 5.8 萬次 build,轉化了大約 3 萬個挖礦任務。

可以防範但很難根除
這種攻擊甚至不需要被攻擊的倉庫管理者接受惡意 Pull Request。

只要在 .github / workflows 目錄裡面的任意 .yml 文件中配置了在收到 Pull Request 時執行,來自駭客的 Action 就會自動被執行。

如果你沒有使用這個功能,那就不用擔心啦,駭客大概也不會找上你。

需要用到這個功能的話,可以設置成只允許本地 Action 或只允許 Github 官方及特定作者創建的 Action。

github hacker mining

將情況回應給客服後,GitHub 會對惡意帳號進行封號和關閉相關 Pull Request 的操作。

但惡意攻擊很難被根除,駭客只需要註冊新的帳號就可以繼續白嫖伺服器資源。

攻擊還在繼續
我們從最近一次攻擊中發現,駭客將挖礦程式上傳到 GitLab 並偽裝成包管理工具 npm。

github hacker mining

打開這個可疑的 nani.bat,可以看到:

github hacker mining

這一次駭客挖的是烏龜幣「TurtleCoin」,可使用 CPU 計算。按當前價格挖出四千多個幣才值 1 美元。

github hacker mining

Github Actions 的免費伺服器可以提供英特爾 E5 2673v4 的兩個核心,7 GB 內存。

大致估算單台運行一天只能獲利幾美分,而且駭客的挖礦程式通常只能在被發現之前運行幾個小時。比如 Docker Hub 就把自動 build 的運行時間限制在 2 個小時。

不過蚊子再小也是肉,駭客通過尋找更多接受公開 Action 的倉庫以及反覆打開關閉 Pull Request 就能執行更多的挖礦程式。

github hacker mining

正如 Twitter 用戶 Dave Walker 所說的,如果你提供免費的計算資源,就要做好會被攻擊和濫用的覺悟,挖礦有利可圖的情況下這是不可避免的。

github hacker mining

據報導,受害的不止 GitHub,還有 Docker Hub、Travis CI 以及 Circle CI 等提供類似服務的持續整合平台。

這一亂像不知何時才能結束,唯一的好消息可能就是,挖礦的駭客似乎只是針對 GitHub 提供的服務器資源,而不會破壞你的代碼。

但是 GitHub Action 的漏洞不止這一個。還有方法能使駭客讀寫開發者的倉庫,甚至可以讀取加密的機密文件。

github hacker mining

去年 7 月,Google Project Zero 團隊就已向 GitHub 通報漏洞,但在給出的 90 天修復期限 + 延長 14 天后,GitHub 仍未能有效解決。

對此,我們的建議是,不要輕易相信 GitHub 市場裡的 Action 作者,不要交出你的密碼。

(本文經 AI 新媒體量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈黑客用 GitHub 服務器挖礦,三天跑了 3 萬個任務,代碼惊現中文 〉;首圖來源:Unsplash。)

更多資安相關議題

網路安全等同你的人身安全》資訊時代,你需要的各種資安基本功

轉戰電商的成本控制心法,墊腳石用「訂閱制資安」打造專家級的資安威脅防護

42 個「資訊安全」與「人工智慧」領域的學習資源,從論文到開源碼通通免費!


點關鍵字看更多相關文章: