Go 漏洞管理

返回 Go 安全

概觀

Go 協助開發人員偵測、評估和解決有遭受攻擊者利用風險的錯誤或弱點。幕後,Go 團隊執行一項自動化程序來整理有關漏洞的報告,這些報告會儲存在 Go 漏洞資料庫中。各個函式庫和工具可以讀取和分析這些報告,以了解特定使用者專案可能會受到哪些影響。這項功能已整合至 Go 套件探索網站 和一款新的 CLI 工具 govulncheck。

這個專案正在進行中並積極開發。我們歡迎您提供 回饋 以協助我們改進!

注意:如要回報 Go 專案中的漏洞,請參閱 Go 安全政策

架構

Go Vulnerability Management Architecture

Go 中的漏洞管理包含下列高階區塊

  1. 資料管線會從各種來源蒐集漏洞資訊,包括 國家漏洞資料庫 (NVD)GitHub 公告資料庫,以及 來自 Go 套件維護人員的直接回報
  2. 漏洞資料庫採用資料管線的資訊填入報告,其中資料庫中的所有報告都由 Go 安全團隊檢閱和整理。報告都使用 開源漏洞 (OSV) 格式 編寫,並可透過 API 存取。
  3. pkg.go.dev 和 govulncheck 整合,讓開發人員能找出專案中的漏洞。 govulncheck 指令 會分析您的程式碼庫,並僅指出實際會影響您的漏洞,根據您程式碼中會轉址呼叫漏洞功能的函式。Govulncheck 提供可靠的低雜訊方法,可在您的專案中找出已知的漏洞。

資源

Go 漏洞資料庫

Go 漏洞資料庫 除了 Go 套件維護人員直接向 Go 安全團隊回報的資訊外,還包含許多現有來源的資訊。資料庫中的每個項目都會經過檢閱,以確保漏洞的描述、套件和符號資訊,以及版本詳細資料的正確性。

請參閱 go.dev/security/vuln/database 以進一步了解 Go 漏洞資料庫,並參閱 pkg.go.dev/vuln,在瀏覽器中檢視資料庫中的漏洞。

我們鼓勵套件維護人員 提供 自己專案中公開漏洞的資訊,並 向我們傳送建議,告知如何降低摩擦。

針對 Go 的漏洞偵測

Go 的漏洞偵測旨在提供可靠的低雜訊方法,讓 Go 使用者能了解可能會影響其專案的已知漏洞。漏洞檢查整合在 Go 的工具和服務中,包括新的命令列工具 govulncheckGo 套件探索網站、配合 Go 擴充功能的 主要編輯器,例如 VS Code。

若要開始使用 govulncheck,請從專案中執行下列命令

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

若要在編輯器中啟用漏洞偵測,請參閱 編輯器整合 頁面中的說明。

Go CNA

Go 安全團隊是 CVE 編號管理機關。請參閱 go.dev/security/vuln/cna 以進一步了解。

意見回饋

非常歡迎您透過以下方式提供貢獻並幫助我們進行改善

常見問答集

我如何回報 Go 專案中的漏洞?

透過電子郵件將所有 Go 專案中的安全性漏洞回報給 security@golang.org。閱讀 Go 的安全性政策 來取得關於我們流程的更多資訊。

我如何將公開漏洞新增到 Go 漏洞資料庫中?

若要要求新增公開漏洞到 Go 漏洞資料庫,請填寫這份表單

如果漏洞已經公開揭露,或存在於你維護的套件中(且你準備要揭露),則漏洞可被視為公開的。此表單僅適用於可匯入的 Go 套件,且並未由 Go 團隊所維護的公開漏洞(Go 標準程式庫、Go 工具鏈和 golang.org 模組以外的所有內容)。

此表單也可拿來要求取得新的 CVE ID。請在此處閱讀關於 Go CVE 編號管理單位的更多資訊。

我如何建議修改漏洞?

若要建議修改 Go 漏洞資料庫中的現有報告,請填寫此處的表單

我如何回報問題或提供關於 govulncheck 的回饋?

在 Go 問題追蹤器中提出你的問題或回饋。

我在其他資料庫中找到這個漏洞,為什麼它不在 Go 漏洞資料庫中?

報告可能會因為各種原因而被排除在 Go 漏洞資料庫之外,包括相關漏洞並不存在於 Go 套件中、漏洞存在於可安裝指令而非可匯入套件中,或漏洞已被資料庫中已存在的其他漏洞所包含。你可以在這裡進一步瞭解 Go 安全團隊排除報告的原因。如果你認為某個報告被不正確地排除在 vuln.go.dev 之外,請讓我們知道

為什麼 Go 漏洞資料庫不使用嚴重性標籤?

大多數漏洞回報格式使用像「低」、「中」和「嚴重」等嚴重性標籤來顯示不同漏洞的影響,以協助開發人員將安全性問題的優先順序排序。然而,基於以下數個原因,Go 避免使用此類標籤。

漏洞的影響很少具有普遍性,這意味著嚴重性指標往往具有欺騙性。例如,解析器出現當機問題,如果這個解析器用於解析使用者提供的輸入,且可用於阻斷服務攻擊,這可能會成為一項重大嚴重性問題。但是,如果這個解析器用於解析本機設定檔,即使將其嚴重性評為「低」也可能會誇大其詞。

對嚴重性進行標籤分類必定是主觀的。即使對於CVE 計畫來說也是如此,該計畫提出了分解漏洞相關層面的公式,例如攻擊媒介、複雜性、可利用性。但是,所有這些都需要主觀評估。

我們認為良好的漏洞描述比嚴重性指標更為有用。良好的描述可以分解問題是什麼、它是如何觸發的,以及消費者在決定對其自己的軟體影響時應該考慮什麼。

如果你希望針對此主題與我們分享你的想法,請隨時提交問題