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