Go 安全政策
概觀
本文檔說明 Go 安全團隊處理報告問題的流程,以及您能期待的回報。
報告安全漏洞
Go 發行版中的所有安全性漏洞都應透過電子郵件報告至 security@golang.org。此郵件會傳送給 Go 安全性團隊。
為確保您的報告不會被標記為垃圾郵件,請在電子郵件的任何地方包含「vulnerability」一詞。請為您的報告電子郵件使用有意義的主旨。
您的電子郵件將在 7 天內收到確認,並且您會在解決之前持續收到進度更新。您的問題將在 90 天內修復或公開。
如果您在 7 天內未收到電子郵件回覆,請再次透過 security@golang.org 與 Go 安全性團隊聯繫。請確保您的電子郵件中包含 vulnerability 一詞。
如果您在 3 天後仍未收到報告確認,您的電子郵件可能已被標記為垃圾郵件。在這種情況下,請 在此處提交問題。選擇「我想報告 Google 產品(SQLi、XSS 等)中的技術安全性或濫用風險相關漏洞」,並將「Go」列為受影響產品。
追蹤
根據問題的性質,Go 安全性團隊會將其歸類為 PUBLIC、PRIVATE 或 URGENT 追蹤中的問題。所有安全性問題都將發出 CVE 編號。
Go 安全性團隊不會為安全性問題指定傳統的細緻嚴重性標籤(例如 CRITICAL、HIGH、MEDIUM、LOW),因為嚴重性高度取決於使用者如何使用受影響的 API 或功能。
例如,encoding/json
剖析器中資源耗盡問題的影響取決於剖析的內容。如果使用者從其本機檔案系統剖析受信任的 JSON 檔案,影響可能會很低。如果使用者從 HTTP 請求主體剖析不受信任的任意 JSON,影響可能會高得多。
話雖如此,以下問題追蹤信號表示安全團隊認為問題的嚴重性或影響範圍。例如,影響許多使用者的中等至重大影響問題是此政策中的私人追蹤問題,而影響輕微或影響僅少數使用者的問題是公開追蹤問題。
公開
公開追蹤中的問題會影響利基組態、影響非常有限或已廣為人知。
公開追蹤問題標記為 Proposal-Security
,透過 Go 提案審查程序 討論公開修正,並回傳到下一個預定的 次要版本(約每月一次)。版本公告包含這些問題的詳細資訊,但沒有預先公告。
過去公開問題的範例包括
- #44916:archive/zip:呼叫 Reader.Open 時可能會發生錯誤
- #44913:encoding/xml:使用 xml.NewTokenDecoder 搭配自訂 TokenReader 時會產生無限迴圈
- #43786:crypto/elliptic:P-224 曲線上不正確的操作
- #40928:net/http/cgi、net/http/fcgi:未指定 Content-Type 時會產生跨網站指令碼 (XSS)
- #40618:encoding/binary:ReadUvarint 和 ReadVarint 可以從無效的輸入讀取無限個位元組
- #36834:crypto/x509:Windows 10 上的憑證驗證繞過
私人
私人追蹤中的問題違反已承諾的安全屬性。
私人追蹤問題會在下一版預定的 次要版本 中修正,並在此之前保密。
在版本發布前三天到七天,會將預先公告發送至 golang-announce,公告即將發布的版本中存在一個或多個安全修正程式,以及問題是否影響標準函式庫、工具鏈或兩者,以及每個修正程式的保留 CVE ID。
過去私人問題的一些範例包括
- #53416: path/filepath: Glob 中的堆疊耗盡
- #53616: go/parser: 所有 Parse* 函式中的堆疊耗盡
- #54658: net/http: 在傳送 GOAWAY 後處理伺服器錯誤
- #56284: syscall, os/exec: 環境變數中的未 sanitised NUL
緊急
緊急追蹤問題會威脅 Go 生態系統的完整性,或在野外被積極利用,導致嚴重損害。目前沒有近期範例,但會包含 net/http 中的遠端程式碼執行,或 crypto/tls 中的實際金鑰復原。
緊急追蹤問題會私下修復,並觸發立即專門的安全版本,可能沒有預先公告。
將現有問題標示為與安全性相關
如果您認為現有問題與安全性相關,我們請您寄送電子郵件至 security@golang.org。電子郵件應包含問題 ID 和簡短說明,說明為何應根據此安全政策處理該問題。
揭露流程
Go 專案使用下列揭露流程
-
收到安全報告後,會指派一位主要處理人員。此人會協調修復和發布流程。
-
確認問題並確定受影響的軟體清單。
-
稽核程式碼以找出任何潛在的類似問題。
-
如果在諮詢提交者後,確定需要 CVE 編號,主要處理人員會取得一個。
-
為最近兩個主要版本和 head/master 修訂版準備修正程式。為最近兩個主要版本準備修正程式,並合併至 head/master。
-
在套用修正程式的當天,會將公告傳送至 golang-announce、golang-dev 和 golang-nuts。
這個程序可能需要一些時間,特別是在需要與其他專案的維護者協調時。我們將盡一切努力盡可能及時地處理錯誤,但是,遵循上述程序以確保一致處理揭露非常重要。
對於包括指派 CVE 編號的安全問題,問題會公開列在 CVEDetails 網站上的「Golang」產品 以及 國家漏洞揭露網站。
接收安全更新
接收安全公告的最佳方式是訂閱 golang-announce 郵件清單。任何與安全問題相關的訊息都會加上 [security]
前綴。
對此政策的評論
如果您有任何建議可以改善此政策,請 提交問題 以供討論。