rootkit 檢測 - 程式碼完整性

Rootkit不再只是系統管理員的專屬:它們也存在於軟體倉庫中。

什麼是Rootkit?

rootkit不再只是低階惡意軟體。從本質上講,它具有隱蔽性。 惡意軟體提供未經授權的訪問 它們在隱藏自身存在的同時,也能進行攻擊。傳統上,rootkit 存在於核心空間或系統服務中。然而,如今它們也潛伏在你的程式碼倉庫、持續整合系統和軟體包清單中,明目張膽地隱藏自己,篡改程式碼完整性,並感染建置系統。

從系統級Rootkit到軟體倉庫級Rootkit

系統工程師過去常常為核心 rootkit 而憂心忡忡。這些 rootkit 能夠完全控制系統,攔截系統調用,隱藏進程,並破壞程式碼完整性。現在,假設一個以開發者為中心的場景:惡意攻擊者將 rootkit 注入到你的系統中。 Git回購 or 依存樹這個倉庫中的rootkit程式碼會竄改你的建置輸出或偷偷植入後門,甚至在系統運作之前就成為軟體包工件的一部分。 rootkit會向上游滲透到你的原始碼、依賴項和… CI/CD 流動。

Rootkit 如何隱藏在程式碼庫和相依性中

讓我們來詳細分析一下開發者必須警惕的實際rootkit攻擊途徑:

  • 含糊不清或具誤導性 commits
    試想一個 commit 表面上寫著“修復拼字錯誤”,但實際上會注入一個載入器,在運行時解密惡意負載。 Rootkit 偵測很棘手,尤其是在… commit 訊息隱藏了意圖。
  • 被竄改或植入後門的庫
    一個常用的實用函數被替換成了一個暗藏後門的版本。它雖然能通過測試,但會在下班後將機密資訊記錄到遠端伺服器上。程式碼完整性遭到破壞,即使函式庫看起來似曾相識。
  • 受損的第三方軟體包和傳遞依賴項
    您已安裝 lib-crypto@2.0.1上游,有人投毒了版本 2.0.0 感染了惡意軟體。現在你的 pipeline 不小心拉取了 rootkit,或者更糟的是,你的 lockfile 漂移了,你拉取了被污染的程式碼。
  • 沉睡的程式碼和邏輯炸彈

程式碼可能靜默數週或數月,然後突然出現問題。例如:

今天測試通過了,直到為時已晚你才會發現程式碼完整性有問題。

為什麼 Rootkit 偵測在 DevOps 中至關重要

你體內的 Rootkit pipeline 程式碼倉庫會威脅到開發者的實際工作流程:

  • 被竄改卻未被察覺的版本: 如果是rootkit hooks 例如,在你的建置腳本中加入一個惡意程式碼 安裝後 or 設置文件這樣一來,你的持續整合測試就會通過,而你卻在不知情的情況下推送了被竄改的工件。
  • 建構結果不一致或無法重現: rootkit 可能會導致開發人員機器和 CI 代理程式上的建置結果不同。這種差異會對程式碼完整性帶來風險,但前提是您需要檢查它。
  • 跨版本持續存在妥協: 一旦嵌入,它就能在分支合併、cherryptic 操作和未來的版本發布中倖存下來。更糟的是,它甚至可能將自身注入到更新中,破壞你的供應鏈。
  • Pipeline 開發者環境中的中毒與橫向移動: rootkit 可以透過 CI 設定、共用執行器以及使用共用憑證的開發人員機器傳播。程式碼完整性不僅在程式碼內部遭到破壞,而且跨環境也會受到影響。

實用Rootkit檢測 Pipelines

以下是一些便於開發者操作、切實可行的技巧,可以提升您的rootkit偵測能力:

• 對關鍵檔案進行雜湊驗證和 依賴

計算金鑰檔案(例如)的 SHA-256(或類似)值 requirements.txt 包-lock.json或者,頂級建置腳本:

對這些文件的任何更改都可能預示著潛在的惡意行為。

• SBOM 軟體物料清單驗證

產生 SBOM 使用 Syft 或 SPDX 等工具,可以準確追蹤建置中包含的依賴項(及其版本)。進行比較。 SBOM跨版本偵測意外或惡意新增的內容。

• 已簽名 commit簽名驗證

執行 混帳 commit -S 並在 CI 中檢查簽名:

一份新的、未簽名的或可疑的簽名 commit 可能是源rootkit探測。

• 在建置或執行時進行基於行為的異常檢測

在建置過程中加入效能分析,以便擷取異常行為:例如,建置過程中出現的意外網路呼叫。 npm安裝 or 點安裝或者,對受保護目錄中的檔案進行更改:

安裝過程中出現的意外出站流量可能是rootkit載入階段。

• 掃描混淆或高熵代碼段

使用能夠標記可疑程式碼熵或非ASCII/難以閱讀部分的工具 pull requests例如,整合掃描功能 Base64 程式碼區塊或奇怪的 exec/eval 用法。高亮顯示的程式碼可能是休眠載入器或加密有效載荷。

維護整個供應鏈的程式碼完整性

長遠來看,你需要養成將rootkit偵測當作本能反應的習慣:

  • 依賴項固定 以及鎖定檔案: 總是 commit 鎖文件(package-lock.json,requirements.lock等等。)鎖定版本,以免意外引入已變異的傳遞依賴項,導致 rootkit 入侵。
  • 對版本和軟體包進行加密簽章: 使用 GPG 或類似協定對建構產物進行簽署。使用者會驗證簽名;如果 rootkit 竄改了你的版本,驗證就會失敗,從而破壞信任鏈。
  • 定期審查 第三方和傳遞性變更: 使用依賴項監控工具來標記新增或變更的依賴項。結合使用 SBOM 差異檢測用於發現注入或替換的模組。
  • 持續監測依賴性漂移或 未經授權的更改: 自動化 SBOM 在持續整合 (CI) 中檢查差異:如果發生意外依賴項,則建置失敗。追蹤依賴項隨時間的變化,並在出現與預期狀態偏差時發出警報,例如,rootkit。 commit 或替換依賴項。

結語

Rootkit 不再局限於系統管理員和核心;它們已經滲透到開發的核心:你的程式碼倉庫、建置和持續整合 (CI)。 pipeline開發者必須將rootkit偵測和程式碼完整性視為應用安全的核心問題。透過使用哈希驗證, SBOM 審計,已簽署 commit透過行為異常檢測和依賴關係維護,您可以建立針對程式碼中存在的 rootkit 的實用防禦措施。

像這樣的工具 Xygeni專注於軟體供應鏈加固,它能夠幫助 DevSecOps 團隊維護程式碼完整性,並在工作流程早期檢測出 rootkit 威脅。對於以開發者為先的安全策略而言,它是至關重要的盟友,有助於在 rootkit 威脅擴散到程式碼庫、建置或生產環境之前將其阻止。

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

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

使用 Xygeni 產品套件