Bleeping Computer 網(wǎng)站披露,一個(gè)化名“neskafe3v1”的網(wǎng)絡(luò)攻擊者“黑進(jìn)” PHP 軟件包集中式存儲(chǔ)庫(kù) Packagist 中 ,獲取了四個(gè)不太活躍賬戶的訪問(wèn)權(quán)限,劫持十四個(gè)軟件包。據(jù)悉,這些軟件包累計(jì)安裝已超數(shù)億次。
有意思的是,包“劫持”事件發(fā)生后,這名網(wǎng)絡(luò)攻擊者聯(lián)系了 Bleeping Computer 并表示之所以發(fā)動(dòng)此次網(wǎng)絡(luò)攻擊活動(dòng),是想通過(guò)劫持軟件包,找到一份工作。
Packagist 是一個(gè) PHP 軟件包的集中式存儲(chǔ)庫(kù),為開發(fā)人員提供了一個(gè)快捷的方式來(lái)分享和安裝 PHP 軟件包,開發(fā)人員可以將自己的 PHP 軟件包上傳到 Packagist,并通過(guò) Composer 進(jìn)行安裝和依賴管理。
(資料圖)
被劫持包的名稱主要包括:
值得一提的是,該名攻擊者還向 Bleeping Computer 提供了材料,證明被劫持包的 Packagist 頁(yè)面已經(jīng)修改成了指向自己的(偽造的)鏈接,取代了此前指向合法 GitHub 存儲(chǔ)庫(kù)的鏈接。
例如,下面截圖中 acmepp 包 Packagist 頁(yè)面的 GitHub 鏈接,已經(jīng)從 GitHub.com/acmehp/acmephp 改為研究人員的 repo。
acmepp 劫持軟件包列表頁(yè)面(Bleeping Computer)
Packagist 的發(fā)布過(guò)程與 npm 或 PyPI 等開源 repos 的發(fā)布過(guò)程略有不同,與直接將二進(jìn)制文件或軟件版本上傳到 Packagist.org 相反,開發(fā)人員只需創(chuàng)建一個(gè) Packagistorg 帳戶,并提交一個(gè)鏈接到特定包的GitHub 回購(gòu),Packagist 的爬蟲隨后訪問(wèn)所提供的 repo,并聚合所有數(shù)據(jù)以顯示在該包的 Packagist 頁(yè)面上。
當(dāng)開發(fā)人員使用“install”或“update”命令運(yùn)行 Composer 時(shí), Composer 實(shí)例首先在本地查找包的存在,如果找不到,則默認(rèn)在 Packagist 上搜索此包,并檢索為該包列出的 GitHub URL。之后,從該包的 Packagist 頁(yè)面上列出的 GitHub 回購(gòu)中下載該包的內(nèi)容。也就是說(shuō),Packagist 直接從服務(wù)器托管和分發(fā)軟件版本,這種方式與 npm 或 PyPI 的工作方式形成了鮮明對(duì)比。
通過(guò)修改每個(gè)包的 Packagist 頁(yè)面,網(wǎng)絡(luò)攻擊者有效地劫持了 Composer 環(huán)境中使用的安裝工作流。開發(fā)人員現(xiàn)在可以從 neskafe3v1 的 GitHub 回購(gòu)中獲取包的內(nèi)容,而不是從項(xiàng)目的存儲(chǔ)庫(kù)中獲取。
網(wǎng)絡(luò)攻擊者簡(jiǎn)單地將 composer.json 文件更改為類似于應(yīng)用程序清單的文件,在這些包中讀取”由neskafe3v1……И?ураборунапозиции應(yīng)用安全、滲透測(cè)試人員、網(wǎng)絡(luò)安全專家提供。“等內(nèi)容。
更改了 composer.json 文件以演示黑客攻擊:
網(wǎng)絡(luò)攻擊者通過(guò)分叉原始項(xiàng)目存儲(chǔ)庫(kù),修改 composer.json 中 的“description”字段,并將更改提交到自身的分叉存儲(chǔ)庫(kù)中,但沒有將更改合并回原始存儲(chǔ)庫(kù)。(這樣做需要額外的訪問(wèn)權(quán)限,并且可能會(huì)引起維護(hù)人員的仔細(xì)檢查)。當(dāng) Bleeping Computer 要求網(wǎng)絡(luò)攻擊者分享劫持包裹使用的確切技術(shù)時(shí),沒有獲得答案,反而收到了”我正在找工作,在被某家公司聘用后會(huì)披露一份報(bào)告,沒有獲得取工作之前,沒有什么可談的。”一段話。
標(biāo)簽: