開源惡意軟體包:Xygeni 方法

這是第四集。 系列文章 關於惡意元件,我們將介紹 Xygeni 應對這項威脅的方法,是我們報道的一部分。 Open Source Security

我們發現,對來源不明的開源元件的過度信任被各種不法分子利用,導致程式在開發者機器上運行出現意想不到的行為; CI/CD 系統,或嵌入受害組織的軟體中,以便將其傳遞給該組織的客戶。我們對此進行了剖析。 第三集 利用公共註冊表傳播惡意軟體的攻擊,以及我們從觀察不法分子如何運作中學到的東西,以及在之前… 第三集 我們研究了能夠有效應對這種威脅(以及無效應對)的控制措施。 

現在是時候來看看我們解決這個問題的方法了。在這一集中,我們將介紹Xygeni公司針對這個問題所採取的策略。 惡意軟體預警 (MEW)系統。我們將介紹這個多階段系統在新軟體包版本發佈時如何即時運作,如何從不同來源收集證據,如何進行分類,我們遵循哪些分類標準,以及為什麼還需要一些人工分析來確認惡意軟體候選軟體包的性質。我們還將解釋我們如何幫助 NPM、GitHub、PyPI 和開源生態系統中的其他關鍵基礎設施縮短惡意軟體的潛伏時間。 

这 pipeline

Xygeni 惡意軟體早期預警 (MEW) 持續處理各種元件,包括支援的程式生態系統(如 JavaScript/Node 或 Python)的函式庫和框架的軟體包 tarball、Docker/OCI 容器映像,以及 IDE 等工具的擴充和插件。 CI/CD 系統。此類組件發佈在公共註冊表中,並經過不同層級的使用者審核。

以下是系統運作原理的示意圖:

發現者 此流程會取得發布事件的資訊流。發布事件是指建立新元件或現有元件的新版本。由於主流的註冊中心不提供使用者導向的發布/訂閱機制,因此通常透過輪詢註冊中心來獲取最新事件資訊。 這是OSSF的一個優秀項目, 包裹式飼料,支持 MEW 支援 PyPI 或 Maven Central 等流行的註冊表,並提供統一的基於 feed 的介面。我們添加了一些特定的實作來減少等待時間,例如使用 NPM 所使用的 CouchDB 資料庫的副本,該副本與公共註冊表資料庫保持同步。

在 Xygeni,我們有庫存[1] 我們客戶軟體中使用的所有元件(直接或間接使用)都會納入分析範圍。客戶的元件座標會定期提交給 MEW,以便進行優先排序:客戶使用的元件會優先處理。優先排序也取決於發布者的信譽和組件的關鍵性,因此來自信譽較低的發布者的組件也會被優先處理。

分析儀 然後處理優先權佇列中的待處理元件。當選擇某個元件版本進行分析時,會從登錄機碼下載其壓縮包。請注意,分析的是打包好的二進制組件:大多數開源組件通常來自開源倉庫(例如 github.com),此處僅提供上下文信息,惡意軟體始終在組件壓縮包中搜索,因為威脅行為者通常會謊報其聲稱用於構建所發布組件壓縮包的源代碼。 

從使用者的角度來看

我知道你在想:提前知道惡意軟體版本對我有什麼好處?在這一集中… “惡意包裹剖析:有哪些趨勢?” 我們發現,總停留時間以天為單位,而MEW向使用受影響組件的客戶發出的首次通知僅需幾分鐘。只需一個簡單的防護措施即可。[2] 您可以阻止建置(警報分為兩個層級:一個是引擎自動偵測到潛在惡意軟體時發出的完全自動警報,另一個是我們的安全團隊透過人工檢查確認惡意軟體存在後發出的後續通知)。由於惡意軟體的潛伏期較長,等到註冊表確認並將其從註冊表中移除通常為時已晚。

組織可以使用防護措施來檢查是否存在可能含有惡意軟體的元件(在兩個警報層級中的任何一個),或透過 API 快速了解軟體專案中的任何直接或間接依賴項是否正在使用惡意元件。

MEW 的運作原理:內幕細節

核心:惡意軟體檢測引擎

分析器使用不同的偵測器來捕捉不當行為的證據。這些偵測器結合了靜態分析、能力分析和情境分析。[3]如本系列前一篇所述。 

Xygeni 擁有一支經驗豐富的靜態分析工程團隊,這是我們與其他反惡意軟體解決方案的主要區別。需要注意的是,對於某些生態系統,打包的 tar 套件可能包含原始程式碼(例如 NPM 套件中的 JavaScript 或 TypeScript 程式碼,PyPI 套件中的 Python 原始程式碼),或包含與原始程式碼足夠接近的已編譯程式碼(例如 Maven 的 JAR 檔案中的字節碼),以便進行靜態分析。而對於其他系統,例如容器鏡像,二進位執行檔較為常見,因此我們採用功能推斷技術,並結合基於 YARA 規則和惡意軟體簽章的傳統惡意軟體偵測方法。 

請注意,像正規表示式或簽章這樣的簡單技術並不適用於偵測惡意行為。試想一下,偵測投放器或下載器:某些程式碼或二進位檔案位於軟體包中,或從外部網域下載,與元件無關(可能是來自…)。 威脅行為者購買的大量域名列表[4]使用合法網域名稱來逃避偵測然後,這段程式碼會透過某個函數執行。程式碼可以被修改,從而隱藏下載 URL 或用於執行下載程式碼的函數。通常需要進行完整的資料流分析才能偵測到這種攻擊,這需要使用靜態分析的全部機制;或者,如果惡意行為運行的條件確實滿足,則可以使用沙盒執行來偵測。

威脅行為者採用相同的攻擊手法,因此也針對這些手法設計並實作了對應的偵測器。此外,通常還需要一些預處理步驟,例如移除混淆訊息,以揭示隱藏的行為。 

新增上下文

有些檢測器會利用上下文資訊。例如,元件註冊表中的版本與關聯 GitHub 倉庫中的標籤/發布版本不匹配,就足以證明惡意行為者可能獲得了註冊表的發布權限,但並未獲得 GitHub 倉庫的發布權限。類似影響加密錢包供應商的攻擊就是一個例子。 萊傑 這種不匹配很容易被偵測到。

A 惡意評分 (MS) 是根據偵測器運作結果計算得出的,計算依據是捕獲到的證據強度。並非所有結果都相同,執行順序也很重要。 

用戶和組件信譽

並非所有開源開發者都水平相當! 

一位聲譽卓著的開發者可能會遭遇 NPM 帳號被盜(即使是安全意識很強的人也難免會遇到這種情況),並被利用該帳號發布惡意軟體。顯然,聲譽會急劇下降,只有當被盜帳號被找回且開發者修復了導致帳號被盜的根本原因後,聲譽才能恢復如初。聲譽得來不易,卻可能瞬間喪失。  

在MEW,我們實施了一套全面的聲譽管理系統,旨在獎勵積極行為並懲罰可疑活動。該系統對新用戶初始保持中立,並根據其持續的活動調整聲譽。

用戶可以透過積極的行為提升聲譽,例如維護活躍的社交媒體帳戶、啟用多因素身份驗證、定期為專案做出貢獻以及簽名。 commit使用可驗證金鑰的 s。相反,惡意行為(例如發布惡意軟體、使用一次性電子郵件地址、不簽署)會導致信譽下降。 commit或在貢獻中表現出不尋常的模式。

我們系統的首要目標是確保安全可靠的環境。它透過根據各種因素動態調整用戶信譽來實現這一目標,同時兼顧隱私問題和不同註冊機構的限制。

系統會計算使用者的內部信譽評分(如果可能,會加入註冊表和 GitHub 帳戶),並將其與惡意評分一起用於對被分析的元件進行分類,以便更好地確定誰是元件發布者。

已發現惡意行為的證據。那又怎樣?人工審核流程

目前分類器根據匯總分析結果和使用者/元件信譽的分數閾值,將分析的元件版本歸類為「已確認惡意」、「可能惡意」、「高風險」、「低風險」或「非惡意」類別之一。歸類為「高風險」或「可能惡意」類別會觸發人工審核和首次通知。 「已確認惡意」類別會在人工審核後或當證據與先前已確認惡意版本的相同證據相符時確定。 

當有足夠的證據表明潛在的惡意行為時,系統會向受影響的組織發出第一道警報(隔離警報)。如前所述,這可能會阻止依賴被隔離組件的軟體的安裝或建置。 

這對MEW內部造成了一個問題。 dashboard 因此,安全分析師可以開始對該組件進行人工審查。團隊擁有專門的工具(沙箱、反混淆器、惡意軟體研究分發工具、惡意軟體報告工具),可以快速評估正在調查的元件版本的性質。大多數惡意軟體(「鳳尾魚」或不複雜的惡意元件)都會經過審查。  

審查結果得出以下結論之一 安全至上 因此,自動分析引擎發現了一個誤報,該誤報被用作反饋給機器學習分類器,以學習模式;或者 已確認惡意因此,按照報告流程,該元件會被負責任地揭露為惡意元件,並提交至公開註冊表。隨後,會向受影響的組織發送第二份通知,這些組織反過來可能會… 解除組件的隔離,或徹底阻止其參與版本升級過程或阻止其參與內部註冊表中使用的組件防火牆。

這種設定使我們能夠每天分析數萬個新版本,並識別出其中數十個可能存在惡意行為的版本,然後進行手動審核。請記住上一集中提到的,目前我們在實際環境中發現的惡意元件比例約為萬分之一。 

向註冊處報告

我們發現,作為開源基礎設施支柱之一的大多數公共註冊表,在報告安全問題(尤其是惡意元件)方面提供的機制相當有限。我們正在努力改善報告流程的底層組織結構。通常情況下,我們最多只能收到註冊表安全團隊的一封回饋郵件,確認該元件已從註冊表中移除。 

有時註冊表會被濫用,違反其使用條款,但不會導致交付的軟體出現惡意行為。這種情況也會報告給註冊表,但為了減少干擾,不會通知相關組織。  

未來的工作

目前有許多改進措施正在規劃中。首先也是最重要的是, 操作系統組件健康狀況公共門戶特別是針對已發現的潛在惡意行為證據,目前正在開發中。這旨在為開源社群做出一點貢獻。敬請期待。 

另一項正在進行的進展是改進 機器學習分類器MEW 將從過去的分類中學習。引擎偵測器的發現向量,加上元件和發布者的惡意性評分和信譽評分(「已發現的證據」),將作為機器學習系統的輸入,用於更新分類器模型。輸出變數很簡單,就是註冊表是否確認該元件是惡意的。這被代號為“Oracle”,將有助於更準確地預測惡意元件。cise 限定符,設計為可靠(高召回率,即不會遺漏惡意元件),但誤報較少(不會將安全元件報告為惡意元件)。 

A 關鍵性評分 除了客戶依賴關係和發布商聲譽較低之外,這些因素也將納入優先排序標準。顯然,影響力更大、更重要的項目應該優先進行分析。我們不會在此重複造輪子,而是遵循… 開源專案關鍵性評分.

我們正在開發對其他生態系統的支援。諸如 PHP 或 Jenkins 外掛程式等廣泛應用的技術和工具都已列入開發計畫。

我們也正在探索能否利用人工智慧來輔助人工審核流程,從而簡化對少數較為複雜的惡意元件的分析。 

在本系列的下一篇也是最後一篇文章中,「利用開源軟體:壞人會怎麼做?我們將重點關注攻擊者為使攻擊更隱蔽、更難檢測、更具針對性(針對特定行業)且更有利可圖而採取的最新手段。勒索軟體攻擊是否會利用這種手段?不法分子如何利用人工智慧工具傳播更複雜的惡意軟體?熱門項目是否面臨風險?本文旨在讓讀者了解這場軍備競賽的現狀,以及短期(2024年下半年)和中期(2025年)的發展趨勢。 

最後,我們將探討社群可以在不大幅改變開源世界開放性的前提下,採取哪些循序漸進的措施。例如,建立更有效率的惡意軟體報告機制,以便向公共註冊機構報告惡意軟體,並與註冊機構和社群共享潛在惡意元件的證據,這將是朝著阻止威脅行為者入侵這一目標邁出的一小步。 

開源元件中的惡意軟體不應該破壞開源社群為我們的社會帶來的巨大益處。  

  • [1] 我們的掃描器能夠偵測被分析軟體專案所引用的開源元件,因此至少對於定期掃描的專案而言,我們能夠掌握完整的最新依賴關係圖。 Xygeni OSS 提供了一個 API,客戶在將感興趣的元件加入白名單時也可以使用該 API,其中包含漏洞資訊和惡意證據。
  • [2]  如果偵測到與安全問題相符的情況,防護機制可能會中斷建置。諸如存在嚴重且可訪問的漏洞或使用了隔離組件等安全問題,都可能被認為嚴重到足以中斷受影響軟體的建置。
  • [3]必要時,我們的安全分析師會在沙盒環境中執行元件或其安裝腳本。然而,MEW 並未執行動態分析,這主要是因為惡意行為並非總是透過定向攻擊實施,而且威脅行為者會使用規避邏輯來逃避動態分析。 
  • [4]  這項技術被命名為註冊域名生成演算法(Registered Domain Generation Algorithms,簡稱RDGA),並催生了諸如所謂的「新威脅行為者」。 左輪兔子 他們投資高達 1 萬美元購買了 500 萬個域名,這表明網路犯罪產業利潤豐厚。 

惡意包裹剖析:有哪些趨勢?

防範開源軟體惡意軟體包:哪些方法有效(哪些無效)

sca-tools-software-composition-analysis-tools
優先處理、補救並保護您的軟體風險
註冊免費帳號。
不需要信用卡。

確保您的軟體開發和交付安全

使用 Xygeni 產品套件