目前一家軟體公司在開發應用系統時,一般都會使用到第三方軟體,可能是 Library 或者是 Application 等等。而隨著時間經過,這些用到的第三方軟體可能會有弱點被逐步發現,進而影響既有系統安全性。
在 OWASP 2021 top ten 之中,"A06:2021 – Vulnerable and Outdated Components" 就高居第六項安全風險。在其中也給出了如何避免風險的建議
- 移除不必要的依賴,功能,元件與檔案
- 持續使用工具清點 Client 端與 Server 端使用到的元件與其依賴的元件
- 持續使用使用自動化工具,以 CVE 與 NVD 來監控元件的弱點,以 Email 來收取安全通知警告
- 只從官方來源獲取資源,並只使用簽署過的 Packages
- 持續監控沒有維護或沒有為舊版本創建安全修正的 Library 或元件
在檢查是否使用到了有問題的 Library 或元件,很多語言的套件管理工具都有提供掃描功能:比如 npm, Composer, Cargo 等等,但對 C/C++ 雖然有 conan 這個套件管理系統,但由於非標準,組織未必有使用或者需要的 Package 並未收錄其中。
在找尋追蹤方案的過程中,我發現了 depedency track 這個解決方案,其是這樣介紹自己的
Continuous SBOM Analysis Platform
SBOM 是 "Software Bill of Materials" 的縮寫,代表開發時使用到的元件。
想使用這各平台,可以簡單的透過 Docker Composer 來使用
curl -LO https://dependencytrack.org/docker-compose.yml
docker-compose up -d
啟動後的可以透過 http://127.0.0.1:8080 來存取,預設的帳號密碼是 admin/admin
以下是我創建的一個範例用的專案
點開 curl 在 vulnerabilities 中可以看到該版本的弱點
為了要讓其可以抓到對應的版本,我目前是在 CPE 中填入
目前實測軟體版本比對有時可能會有問題,有可能會比到上古版本的安全問題
安全資料主要來自 NVD,會自動更新
當然也有通知功能
其也有提供 OpenAPI 界面來幫助與現有的開發流程進行整合
日後有其他使用上的心得會更新上來。






沒有留言:
張貼留言