隨著軟體開發沿著軟體供應鏈生命週期推進,打包階段成為一個關鍵節點,它將原始程式碼轉換為可執行文件,以便分發。然而,這個關鍵階段並非完美無缺,也並非沒有漏洞,因此成為惡意攻擊者破壞軟體完整性和安全性的主要目標。本文將深入探討此階段可能出現的常見威脅,並概述有效的緩解策略。本文是我們系列部落格文章的延續,該系列文章旨在探討… software supply chain security 在整個 SDLC.
軟體開發生命週期中的套件階段
軟體供應鏈生命週期中的打包階段涵蓋了軟體打包和準備分發給使用者的過程。此階段包括建立安裝套件、管理依賴項以及產生軟體元資料。
建構完整性威脅是指攻擊者在打包過程中可能利用的漏洞,這些漏洞可能對軟體進行未經授權的更改。這些威脅可以透過多種方式引入,例如破壞軟體包註冊表、利用打包工具中的漏洞或篡改第三方依賴項。
現代軟體對開源元件的完全依賴使得這個階段成為最常見的階段。SCA 目標。在流行的開源元件中植入隱藏式惡意軟體是許多網路犯罪分子的夢想。這就是為什麼超過 2023年共發現245,000個惡意軟體包.
示例 Software Supply Chain Security 包裝階段的威脅
使用被入侵的軟體包
這指的是部署或使用已被敵方篡改或修改的軟體包的行為。
這種情況可能發生在軟體包離開官方軟體包註冊表之後,攻擊者可能直接存取用戶系統,或透過社會工程誘騙用戶下載或安裝惡意軟體。這種攻擊途徑的一個例子是… Browserify 搶注 攻擊。
一名攻擊者試圖入侵 Linux 和 Mac 系統,他滲透到一款名為 Browserify 的熱門 Node.js 函式庫的開發過程中。攻擊者將惡意程式碼偷偷插入該專案的原始程式碼中,意圖透過 NPM 套件註冊表進行分發。一旦被竄改的 Browserify 套件被上傳到 NPM,不知情的開發者就會下載並安裝它,誤以為它是合法版本。嵌入在套件中的惡意程式碼會在背景靜默運行,破壞受感染系統的完整性。這可能導致資料被盜、系統不穩定,甚至攻擊者獲得遠端存取權限。
妥協軟體包註冊表
被入侵的軟體包註冊表是指軟體儲存庫已被攻擊者滲透,攻擊者獲得了對該註冊表的管理介面或基礎設施的未經授權的存取權限。
這使得攻擊者能夠修改或替換合法的軟體包,將其替換為惡意軟體包,然後將這些惡意軟體包分發給毫不知情的已安裝用戶。此類威脅的一個例子是… 攻擊包裹鏡像: 一位研究人員為了推廣開源軟體,入侵了幾個流行的軟體包倉庫,包括 Maven Central、NPM 和 RubyGems。透過取得這些倉庫的存取權限,該研究人員創建了鏡像倉庫,即原始倉庫的副本,為開發者提供了便捷的軟體包下載途徑。
然而,這些鏡像站點卻隱藏著險惡的目的。被入侵的鏡像網站充當了研究人員分發惡意軟體的管道。這些軟體包會替換掉合法的軟體包,且未被主註冊表檢測到,不知情的開發者會在不知不覺中下載並安裝它們。一旦安裝完成,這些惡意軟體就會釋放其有效載荷,執行任意程式碼、竊取敏感資料或破壞系統運行。
上傳修改後的軟體包
攻擊者將包含惡意程式碼或有效載荷的修改版軟體包上傳到程式碼庫或分發管道。這可以透過修改軟體包的原始碼、打包方式或元資料來實現。
這類威脅中最臭名昭著的之一是… 2021 年 CodeCov 攻擊. 攻擊者試圖利用 CodeCov(一種流行的持續整合和持續交付工具)來入侵軟體專案(CI/CD攻擊者利用洩漏的憑證,透過某種工具非法存取了專案的 Google Cloud Storage (GCS) 儲存桶。一旦獲得 GCS 儲存桶的存取權限,攻擊者便上傳了一個惡意程式——一個修改版的 CodeCov 軟體包,並透過 CodeCov 服務將其分發給用戶。不知情的開發者依賴自動更新功能,誤以為該軟體包是合法的,便會下載並安裝。安裝完成後,惡意程式碼會在背景靜默執行,破壞受感染系統的完整性。這可能導致資料被盜、系統不穩定,甚至攻擊者獲得遠端存取權限。
針對軟體包註冊表的攻擊非常普遍,以至於某些攻擊模式都有了專門的名稱:
In 註冊近似域名惡意行為者會將多個惡意軟體包上傳到註冊表,這些軟體包的名稱與合法、流行的軟體包名稱略有不同,或者存在輕微的拼寫錯誤,其目的是希望開發者會將原本的軟體包名稱拼寫成惡意名稱。通常,惡意軟體包會偽裝成合法軟體包而不被檢測到,從而增加被攻擊者利用「星空探測」(stargaming)攻擊的機率。
依賴性混淆 它利用了某些軟體包管理器從多個註冊表中解析請求軟體包的方式。當組織使用發佈在內部註冊表中的內部元件時,了解這一情況的攻擊者可能會在公共註冊表中發布一個同名的惡意元件。如果內部元件的名稱沒有限定作用域,某些軟體套件管理器就會取得惡意元件而不是內部元件。
與 特洛伊包裹網路犯罪分子會將惡意軟體偽裝在看似合法的有用程式碼中。真正的作者可能會利用這一點,或者由自願維護軟體包的貢獻者也會利用這一點。這也被稱為… 包裹劫持攻擊者使用了多種技術來劫持現有軟體包,例如 域名接管 攻擊者利用一個廢棄的過期域名,重新創建了舊的維護者電子郵件,並執行密碼恢復操作,從而接管了維護者帳戶。
最後的評論
隨著企業越來越多地採用以自動化和持續交付為優先的軟體開發方法,確保軟體包階段的安全變得前所未有的重要。透過在這關鍵階段實施強而有力的安全措施,企業可以大幅降低遭受惡意攻擊的風險,從而保障軟體的完整性和安全性。
本文闡述的策略以及提供的範例有力地提醒我們,軟體包階段是軟體供應鏈中的一個弱點。企業必須重視這些威脅,並實施必要的安全措施來保護其軟體免受攻擊。這樣做才能確保其軟體對使用者和客戶的完整性、安全性和可靠性。
加入我們,共同邁向安全的軟體生態系統
不要錯過在以下領域保持領先一步的機會: software supply chain security立即訂閱我們的博客,搶先獲取最新資訊,確保您的組織在不斷演變的威脅中保持韌性和安全。攜手共進,我們能夠為所有人建立一個更強大、更安全的軟體生態系統。
請記住, software supply chain security 安全是一個持續的過程,而非終點。透過不斷評估和調整安全實踐以應對不斷湧現的威脅,企業可以保護其軟體供應鏈,並向使用者提供值得信賴的軟體。
觀看我們的影片示範




