DevSecOps之元件卡點(初級)
阿新 • • 發佈:2022-12-04
目錄
為什麼需要元件卡點
現代的軟體開發或多或少的都會引入第三方的開源元件,如何保證這些開源元件是安全性的?
解決方案
大致步驟
- 根據企業的DevOps流程,等業務線做構建時,自動在CI/CD平臺做程式碼審查,進行開源元件卡點工作;
- 獲取專案內的所有開源元件名字、版本等資訊;
- 同步漏洞庫資訊進行本地查詢、或者遠端請求漏洞庫;
- 將開源元件版本號對比對應的漏洞;
獲取漏洞庫的一些思路:
- 商業的漏洞庫
- NVD (https://nvd.nist.gov/)
- maven 倉庫中也包含有每個版本的漏洞資訊(不過有限制,需要繞過)
Golang 供應鏈攻擊
Go構建工具為開發人員在專案中下載和使用開源庫提供了一種簡單的方式。與Python和Rust等其它語言相比,Go並不使用可以下載庫的中央程式碼倉庫。相反,Go工具直接從版本控制系統(如GitHub)提取程式碼包。(注意:我們關注的是Go,但其它軟體包管理器(如NPM)也允許從版本控制系統中提取程式碼,因此也容易受到這種攻擊。)
GitHub是網際網路上最大的原始碼庫,大多數的Go包都在它上面託管。GitHub提供的一個功能是允許使用者更改使用者名稱。
問題的根源在於,一些大牛更改使用者名稱後,大牛舊使用者名稱就可以供其他任何人使用。
攻擊者可以很容易地使用被棄用的使用者名稱,並開始向任何下載該軟體包的人提供惡意程式碼,攻擊者這樣做基本上依賴於使用者名稱前所有者獲得的信譽度。在Go包程式碼倉庫中這樣做可能會導致連鎖反應,大大擴大程式碼分發範圍,並影響大量下游產品。
解決方案:
在交付給客戶或部署到生產之前,要對軟體版本進行掃描,檢查是否存在篡改資料和後門程式。並將其整合到自己的開發或構建流水線中。