六種最常見的軟件供應(yīng)鏈攻擊
軟件供應(yīng)鏈攻擊已成為當(dāng)前網(wǎng)絡(luò)安全領(lǐng)域的熱點話題,其攻擊方式的多樣性和復(fù)雜性使得防御變得極為困難。以下我們整理了六種常見軟件供應(yīng)鏈攻擊方法及其典型案例:
一、入侵上游服務(wù)器
攻擊者入侵上游服務(wù)器或代碼倉庫,并在其中注入惡意代碼。這種攻擊方式的危險之處在于,惡意代碼會被快速分發(fā)到大量用戶,從而放大了攻擊的影響范圍。
典型案例:
- Codecov攻擊:攻擊者通過獲取Docker鏡像創(chuàng)建過程中的憑據(jù),篡改在其CI環(huán)境中使用的BashUploader腳本,收集從客戶的CI/CD環(huán)境上傳的環(huán)境變量并竊取在環(huán)境變量中的敏感信息,如服務(wù)、數(shù)據(jù)庫的憑據(jù)和密鑰。
- SolarWinds攻擊:在這次影響全球的攻擊中,攻擊者成功入侵了SolarWinds的Orion產(chǎn)品開發(fā)系統(tǒng),并在源代碼中植入惡意代碼,進而發(fā)動了大規(guī)模的網(wǎng)絡(luò)攻擊。
- Node.jsevent-stream事件:攻擊者通過對開源庫event-stream的維護權(quán)進行社會工程攻擊,成功將惡意代碼發(fā)布到了npm,影響了大量使用該庫的項目。
二、入侵中間環(huán)節(jié)發(fā)送惡意更新
攻擊者入侵軟件供應(yīng)鏈中間環(huán)節(jié)的軟件升級功能或CI/CD工具。這種攻擊方式的狡猾之處在于,它可以在不直接修改源代碼庫的情況下,通過修改升級流程來實施攻擊。
典型案例:
- Passwordstate攻擊:攻擊者入侵了Passwordstate企業(yè)密碼管理器的“就地升級功能”,向用戶分發(fā)包含惡意代碼的更新。這種攻擊方式使得攻擊者能夠竊取用戶的密碼和其他敏感信息。
- ASUSLiveUpdate攻擊:攻擊者入侵了ASUSLiveUpdate工具,并通過它分發(fā)了包含后門的惡意更新。這使得攻擊者能夠在全球范圍內(nèi)感染成千上萬的ASUS計算機用戶。
- M.E.Doc軟件攻擊:烏克蘭的財務(wù)軟件M.E.Doc被攻擊者入侵,通過軟件更新功能分發(fā)了NotPetya勒索軟件。這導(dǎo)致了全球范圍內(nèi)的大規(guī)模網(wǎng)絡(luò)中斷。
三、依賴性混淆攻擊
這種攻擊方式利用了開源生態(tài)系統(tǒng)中的設(shè)計弱點。攻擊者可以在公共倉庫中注冊一個與私有依賴項同名的依賴項,然后通過提高版本號來使其被軟件構(gòu)建拉取。這種方法幾乎不需要人工干預(yù),可以自動化地進行攻擊。
典型案例:
- AlexBirsan的研究成果:安全研究員AlexBirsan通過創(chuàng)建和上傳與私有包同名的公共包,成功實施了依賴性混淆攻擊,影響了包括蘋果和微軟在內(nèi)的多家知名公司。
- PyTorch攻擊:在這起攻擊中,攻擊者利用依賴性混淆方法對機器學(xué)習(xí)庫PyTorch進行了攻擊,影響了使用該庫的開發(fā)者和項目。
- node-ipc攻擊:node-ipc是另一個受到依賴性混淆攻擊的例子,攻擊者通過這種方法影響了使用該庫的各種應(yīng)用和服務(wù)。
四、濫用SSL和代碼簽名證書
SSL/TLS證書的泄露會威脅到用戶的在線通信安全。而代碼簽名證書的泄露則可能導(dǎo)致惡意軟件被偽裝成由知名公司簽名的合法軟件或更新。
典型案例:
- SolarWinds攻擊:在這起廣泛報道的供應(yīng)鏈攻擊中,攻擊者使用了被盜的代碼簽名證書,使得惡意代碼看起來像是合法的SolarWinds更新。
- Plead惡意軟件:攻擊者使用被盜的數(shù)字證書簽名Plead后門惡意軟件和密碼竊取組件,這些惡意軟件主要在東亞地區(qū)的攻擊中被使用。
- NVIDIA證書被盜:攻擊者盜取了NVIDIA的代碼簽名證書,并用它來簽名CobaltStrikebeacon、Mimikatz、后門和遠(yuǎn)程訪問木馬等惡意軟件。
五、針對開發(fā)者的CI/CD基礎(chǔ)設(shè)施
在這種攻擊中,攻擊者會利用CI/CD自動化基礎(chǔ)設(shè)施,這種攻擊方式的獨特之處在于,它可以在不直接修改代碼的情況下,通過濫用CI/CD基礎(chǔ)設(shè)施來實施攻擊。
典型案例:
- 濫用GitHubActions挖掘加密貨幣。Sonatype最近觀察到一次多重軟件供應(yīng)鏈攻擊,該攻擊不僅向用戶的GitHub項目引入惡意拉取請求,還濫用GitHub的CI/CD自動化基礎(chǔ)設(shè)施GitHubActions來挖掘加密貨幣。這種攻擊雙管齊下:它會誘騙開發(fā)人員接受惡意拉取請求,如果失敗,它就會濫用現(xiàn)有的自動化CI/CD基礎(chǔ)設(shè)施來進行惡意活動。
- 聯(lián)合國網(wǎng)站數(shù)據(jù)泄露。攻擊者利用聯(lián)合國網(wǎng)站暴露的Git目錄(.git)和“git-credentials”文件,獲得Git憑證訪問權(quán)限,不僅可以克隆私有Git存儲庫,還可能在上游(環(huán)境署的源代碼庫)引入惡意代碼以觸發(fā)供應(yīng)鏈攻擊。此事件導(dǎo)致過10萬條聯(lián)合國環(huán)境規(guī)劃署(UNEP)工作人員記錄泄露。
六、社會工程攻擊
這種攻擊方式通常涉及到人的因素。攻擊者可能會利用開發(fā)者的信任或者疏忽,通過提交包含惡意代碼的pull請求或其他方式來實施攻擊。事實上,很多類型的軟件供應(yīng)鏈攻擊都會涉及社會工程攻擊。
典型案例:
- Linux“毒補丁”。Linux基金會最近禁止了明尼蘇達大學(xué)研究人員的代碼提交,因為他們故意提供有缺陷的“補丁”,從而在Linux內(nèi)核源代碼中引入了漏洞。該案例的啟示是:社會工程攻擊可能來自最不受懷疑的來源——在本案例中,攻擊來自擁有“.edu”電子郵件地址看似可信的大學(xué)研究人員。
- 篡改通過GitHub發(fā)布的軟件版本。2021年安全研究人員披露攻擊者可以在項目所有者或公眾不知情的情況下破壞合作者的GitHub帳戶并用來修改已發(fā)布版本,從而導(dǎo)致針對項目用戶的供應(yīng)鏈攻擊。
- NPM拼寫錯誤攻擊。攻擊者創(chuàng)建與合法軟件包非常相似的惡意軟件包(例如惡意JavaScript包、數(shù)據(jù)采集木馬等),然后將其上傳到NPM的下載存儲庫。
每種軟件供應(yīng)鏈攻擊方式都有其獨特的實施方法和利用的弱點。為了更有效地防御這些攻擊,安全和開發(fā)團隊需要不斷更新和優(yōu)化安全策略和工具,包括加強對開源組件的清點、監(jiān)控和審核,提高開發(fā)者的安全意識,以及優(yōu)化CI/CD流程等。