新型PyPI攻擊技術(shù)可能導(dǎo)致超2.2萬(wàn)軟件包被劫持
一種針對(duì) Python 軟件包索引(PyPI)注冊(cè)表的新型供應(yīng)鏈攻擊技術(shù)已在野外被利用,并且目前正試圖滲透到下游組織中。
軟件供應(yīng)鏈安全公司 JFrog 將其代號(hào)定為Revival Hijack,并稱這種攻擊方法可用于劫持 2.2萬(wàn)個(gè)現(xiàn)有 PyPI 軟件包,并導(dǎo)致數(shù)十萬(wàn)次惡意軟件包下載。這些易受攻擊的軟件包下載量已超過 10 萬(wàn)次,或已活躍超過 6 個(gè)月。
JFrog安全研究人員Andrey Polkovnychenko和Brian Moussalli在與《黑客新聞》分享的一份報(bào)告中說:"這種攻擊技術(shù)涉及劫持PyPI軟件包,一旦這些軟件包被原所有者從PyPI索引中刪除,就操縱重新注冊(cè)這些軟件包的選項(xiàng)。
這種被稱為“Revival Hijack”的技術(shù)利用了一項(xiàng)政策漏洞,允許攻擊者在原始開發(fā)人員將軟件包從PyPI中刪除后重新注冊(cè)并劫持軟件包名稱。
與傳統(tǒng)的域名搶注攻擊不同,Revival Hijack攻擊利用的是用戶拼寫錯(cuò)誤的軟件包名稱,而傳統(tǒng)域名搶注攻擊則利用了熱門軟件包的刪除和重新注冊(cè)。當(dāng)開發(fā)人員從PyPI中刪除他們的項(xiàng)目時(shí),軟件包名稱就會(huì)可供其他任何人注冊(cè)。然后,攻擊者可以上傳這些軟件包的惡意版本,毫無戒心的用戶可能會(huì)下載并安裝這些軟件包,并認(rèn)為它們是合法的。
JFrog 分享的統(tǒng)計(jì)數(shù)據(jù)顯示,平均每月約有 309 個(gè)軟件包被刪除。出現(xiàn)這些情況的原因有很多,比如:缺乏維護(hù)(即廢棄軟件)、軟件包以不同的名稱重新發(fā)布,或?qū)⑾嗤墓δ芤牍俜綆?kù)或內(nèi)置 API。
這也構(gòu)成了一個(gè)有利可圖的攻擊面,它比錯(cuò)別字搶注更有效,攻擊者可以利用自己的賬戶,以相同的名稱和更高的版本發(fā)布惡意軟件包,感染開發(fā)者環(huán)境。
雖然PyPI確實(shí)有防止冒充作者和搶注的措施,但JFrog的分析發(fā)現(xiàn),運(yùn)行 “pip list--outdated ”命令會(huì)將假冒軟件包列為原始軟件包的新版本,而前者對(duì)應(yīng)的是來自完全不同作者的不同軟件包。
更令人擔(dān)憂的是,運(yùn)行 “pip install -upgrade ”命令會(huì)將實(shí)際軟件包替換為虛假軟件包,而軟件包的作者卻沒有任何警告,這可能會(huì)讓不知情的開發(fā)者面臨巨大的軟件供應(yīng)鏈風(fēng)險(xiǎn)。
JFrog 表示,它采取的措施是創(chuàng)建一個(gè)名為 “security_holding ”的新 PyPI 用戶賬戶,用來安全地劫持易受攻擊的軟件包,并用空的占位符取代它們,以防止惡意行為者利用被刪除的軟件包。
此外,每個(gè)軟件包的版本號(hào)都被指定為 0.0.0.1,這與依賴關(guān)系混亂攻擊的情況正好相反,以避免在運(yùn)行 pip 升級(jí)命令時(shí)被開發(fā)人員調(diào)用。
更令人不安的是,Revival 劫持已經(jīng)在野外被利用,一個(gè)名為 Jinnis 的未知威脅行為者于 2024 年 3 月 30 日引入了一個(gè)名為 “pingdomv3 ”的軟件包的良性版本,而就在同一天,原所有者(cheneyyan)從 PyPI 中刪除了該軟件包。
2024 年 4 月 12 日,新的開發(fā)者發(fā)布了一個(gè)更新,其中包含一個(gè) Base64 編碼的有效載荷,該有效載荷會(huì)檢查是否存在 “JENKINS_URL ”環(huán)境變量,如果存在,則會(huì)執(zhí)行從遠(yuǎn)程服務(wù)器獲取的未知下一階段模塊。
JFrog認(rèn)為攻擊者可能推遲了攻擊的發(fā)送時(shí)間,或者將其設(shè)計(jì)得更有針對(duì)性,將其限制在特定的IP范圍內(nèi)。
新的攻擊行為表明,威脅行為者正盯上更大規(guī)模的供應(yīng)鏈攻擊,以刪除的 PyPI 軟件包為目標(biāo),從而擴(kuò)大攻擊范圍。建議企業(yè)和開發(fā)人員檢查他們的 DevOps 管道,以確保他們沒有安裝已經(jīng)從版本庫(kù)中刪除的軟件包。
JFrog安全研究團(tuán)隊(duì)負(fù)責(zé)人Moussalli表示:利用處理已刪除軟件包的漏洞行為,攻擊者可以劫持現(xiàn)有軟件包,從而在不改變用戶工作流程的情況下將其安裝到目標(biāo)系統(tǒng)中。
PyPI 軟件包的攻擊面正在不斷擴(kuò)大。盡管在此進(jìn)行了主動(dòng)干預(yù),但用戶仍應(yīng)始終保持警覺,并采取必要的預(yù)防措施來保護(hù)自己和 PyPI 社區(qū)免受這種劫持技術(shù)的侵害。