Go 安全政策

概述

本文档说明了 Go 安全团队处理报告的问题的过程以及预期结果。

报告安全漏洞

Go 发行版中的所有安全漏洞都应通过电子邮件报告给 [email protected]。此邮件将发送给 Go 安全团队。

为确保您的报告不被标记为垃圾邮件,请在电子邮件的任何位置包含“漏洞”一词。请为您的报告电子邮件使用描述性的主题行。

我们将在 7 天内确认您的电子邮件,并在解决之前随时向您更新进度。您的问题将在 90 天内得到解决或公开。

如果您在 7 天内没有收到对您电子邮件的回复,请再次通过 [email protected] 与 Go 安全团队联系。请确保您的电子邮件中包含漏洞一词。

如果您在 3 天后仍未收到对您报告的确认,则您的电子邮件可能被标记为垃圾邮件。在这种情况下,请 在此处提交问题。选择“我想报告 Google 产品中的技术安全或滥用风险相关漏洞 (SQLi、XSS 等)”,并将“Go”列为受影响的产品。

跟踪

根据问题的性质,Go 安全团队会将问题归类为 PUBLIC、PRIVATE 或 URGENT 跟踪中的问题。所有安全问题都将颁发 CVE 编号。

Go 安全团队不会向安全问题分配传统的细粒度严重性标签(例如,CRITICAL、HIGH、MEDIUM、LOW),因为严重性很大程度上取决于用户如何使用受影响的 API 或功能。

例如,encoding/json 解析器中资源耗尽问题的影响取决于正在解析的内容。如果用户正在解析来自其本地文件系统的受信任 JSON 文件,则影响可能会较低。如果用户正在解析来自 HTTP 请求正文的不可信任意 JSON,则影响可能会大得多。

也就是说,以下问题跟踪表明安全团队认为问题有多严重和/或影响范围有多广。例如,对于许多用户来说,影响中等至重大的问题是此策略中的 PRIVATE 跟踪问题,而影响微不足道至轻微,或仅影响一小部分用户的问题是 PUBLIC 跟踪问题。

PUBLIC

PUBLIC 跟踪中的问题会影响小众配置,影响非常有限,或已经广为人知。

PUBLIC 跟踪问题标记为 Proposal-Security,通过 Go 提议审查流程 公开修复 进行讨论,并回传到下一个计划的 次要版本(大约每月一次)。版本公告包括这些问题的详细信息,但没有预先公告。

过去 PUBLIC 问题的示例包括

PRIVATE

PRIVATE 跟踪中的问题违反了已提交的安全属性。

PRIVATE 跟踪问题会在下一个计划的 次要版本 中修复,在此之前会一直保密。

在版本发布前三到七天,会向 golang-announce 发送预先公告,宣布即将发布的版本中存在一个或多个安全修复程序,以及这些问题是否影响标准库、工具链或两者,以及为每个修复程序保留的 CVE ID。

过去 PRIVATE 问题的示例包括

紧急

紧急跟踪问题是对 Go 生态系统完整性的威胁,或者正在野外被积极利用,导致严重破坏。没有最近的示例,但它们将包括 net/http 中的远程代码执行,或 crypto/tls 中的实际密钥恢复。

紧急跟踪问题在私下修复,并且触发立即专门的安全版本,可能没有预先公告。

如果您认为现有问题与安全相关,我们要求您发送电子邮件至 [email protected]。电子邮件应包括问题 ID 和简要说明,说明为什么应根据此安全策略处理该问题。

披露流程

Go 项目使用以下披露流程

  1. 收到安全报告后,将指派一名主要处理人。此人负责协调修复和发布过程。

  2. 确认问题并确定受影响的软件列表。

  3. 对代码进行审核以查找任何潜在的类似问题。

  4. 如果经与提交人协商确定需要 CVE 编号,主要处理人将获取一个。

  5. 为最近的两个主要版本和 head/master 修订版准备修复程序。为最近的两个主要版本准备修复程序,并合并到 head/master。

  6. 在应用修复程序的当天,将公告发送到 golang-announcegolang-devgolang-nuts

此过程可能需要一些时间,尤其是在需要与其他项目的维护者协调时。我们将尽一切努力以尽可能及时的方式处理该错误,但是遵循上述流程以确保一致处理披露非常重要。

对于包括分配 CVE 编号的安全问题,该问题将在 CVEDetails 网站上的“Golang”产品以及国家漏洞披露网站上公开列出。

接收安全更新

接收安全公告的最佳方式是订阅 golang-announce 邮件列表。任何与安全问题相关的邮件都将以 [security] 为前缀。

对本政策的评论

如果您有任何改进本政策的建议,请 提交一个问题 以供讨论。