Go 部落格

Go 的漏洞管理

Julie Qiu,為 Go 安全團隊撰寫
2022 年 9 月 6 日

我們很高興地宣佈 Go 新增了對漏洞管理的支援,這是我們幫助 Go 開發者瞭解可能影響他們的已知漏洞的第一步。

本文將概述當前可用的功能以及該專案的後續步驟。

概覽

Go 提供了工具來分析您的程式碼庫並發現已知漏洞。這些工具由 Go 安全團隊維護的 Go 漏洞資料庫提供支援。Go 的工具透過僅顯示您的程式碼實際呼叫的函式中的漏洞來減少結果中的噪音。

Architecture diagram of Go's vulnerability management system

Go 漏洞資料庫

Go 漏洞資料庫 (https://vuln.go.dev) 是有關公共 Go 模組中可匯入包的已知漏洞的全面資訊來源。

漏洞資料來自現有來源(例如 CVE 和 GHSAs)以及 Go 包維護者的直接報告。然後,這些資訊由 Go 安全團隊稽核並新增到資料庫中。

我們鼓勵包維護者貢獻有關其自身專案中公開漏洞的資訊,並更新其 Go 包中有關漏洞的現有資訊。我們的目標是使報告過程低門檻,因此請向我們傳送您的建議以進行任何改進。

您可以在瀏覽器中訪問 Go 漏洞資料庫 pkg.go.dev/vuln。有關資料庫的更多資訊,請參閱 go.dev/security/vuln/database

使用 govulncheck 進行漏洞檢測

新的 govulncheck 命令是一種低噪音、可靠的方式,供 Go 使用者瞭解可能影響其專案已知漏洞。Govulncheck 會分析您的程式碼庫,並根據您程式碼中的哪些函式實際呼叫了易受攻擊的函式,僅顯示真正影響您的漏洞。

您可以使用 go install 安裝最新版本的 govulncheck

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

然後,在您的專案目錄中執行 govulncheck

$ govulncheck ./...

Govulncheck 是一個獨立的工具,允許在收集使用者反饋的同時進行頻繁更新和快速迭代。從長遠來看,我們計劃將 govulncheck 工具整合到 Go 的主要發行版中。

整合

在開發和部署過程的早期瞭解漏洞總是更好的。要將漏洞檢查整合到您自己的工具和流程中,請使用 govulncheck -json

我們將漏洞檢測整合到了現有的 Go 工具和服務中,例如 Go 包發現網站。例如,此頁面顯示了 golang.org/x/text 每個版本中的已知漏洞。VS Code Go 擴充套件的漏洞檢查功能也即將推出。

後續步驟

我們希望您覺得 Go 對漏洞管理的支援很有用,並幫助我們改進它!

Go 對漏洞管理的支援是一項正在積極開發中的新功能。您應該會遇到一些錯誤和限制

我們很希望您能做出貢獻,並透過以下方式幫助我們進行改進

我們期待與您一起構建一個更好、更安全的 Go 生態系統。

下一篇文章:Go 開發者調查 2022 年第二季度結果
上一篇文章:Go 1.19 釋出!
部落格索引