Go 語言漏洞管理機制

近年來針對軟件供應鏈的安全問題越來越突出,從之前的語言模塊投毒的,最近 PyPI

遠程執行漏洞,還有今年年初的 Java 基礎日誌庫 Log4j 安全漏洞都充分展現了這個問題。爲了應付這個問題,Golang 新推出了漏洞管理支持,用來幫助 Golang 開發人員瞭解已知漏洞和解決供應鏈安全威脅。本文我們就來介紹一下 Golang 漏洞管理機制。

概述

Go 最新推出了漏洞管理工具來分析代碼庫和發現依賴庫中已知的漏洞。工具由 Go 漏洞數據庫提供支持,由 Go 安全團隊維護。Go 的工具僅通過暴露漏洞,解決代碼和依賴供應鏈中存在的安全問題,整個架構如下圖所示:

Go 漏洞數據庫

Go 漏洞數據庫 (vuln.go.dev) 是一個漏洞綜合資源庫,記錄了 Golang 公共模塊中已知漏洞的信息。

漏洞數據收集了現有公共漏洞數據庫(例如 CVE 和 GHSA)的數據以及來自 Go 包維護者的直接上報報的信息,以及通過 go 項目中安全補丁包的發佈的信息。

所有以上的數據有 Go 安全團隊會審查並將其添加到數據庫中。

Golang 官方鼓勵各個包維護者積極響應安全問題,並能及時報告自己項目中的公共漏洞的信息和機器漏洞更新的信息。

所有漏洞數據信息都可以通過瀏覽器中在 pkg.go.dev/vuln 公開瀏覽。

govulncheck :漏洞檢測

新推出的 govulncheck 命令行工具用來幫助 Go 開發者用戶瞭解其項目和依賴的保重已知漏洞的可靠方法。govulncheck 會自動分析代碼庫並僅顯示代碼和軟件供應鏈的安全情況,基於代碼中的正在傳遞調用函數和易受攻擊的函數。

可以在項目通過運行以下命令安裝和使用 govulncheck:

go install golang.org/x/vuln/cmd/govulncheck@latest
govulncheck ./…

目前 Govulncheck 是一個頻繁更新和快速迭代的獨立工具,未來有可能計劃將 govulncheck 工具集成到 Go 發行版中。

將漏洞檢查直接集成到其他工具和流程中,可以使用 vulncheck 包導出 govulncheck 的檢查結果,並作爲 Golang API 的功能。

集成

儘早瞭解漏洞總是更好是在開發和部署過程中。爲此,將漏洞檢測集成到現有的 Golang 工具和服務中,例如 Go 包搜索站。

例如,在 golang.org/x/text 顯示每個版本的中的已知漏洞。通過 VS Code Go 擴展的漏洞檢查功能也即將推出。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/SUjILBkAyXn3oeZh03hCqg