Go安全政策

本文翻译自《Go Security Policy》。

概述

本文档介绍Go Security团队处理报告的问题的流程以及预期的回复。

报告一个安全漏洞

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

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

你的电子邮件将在7天内得到确认,在解决问题之前,你将了解最新进展。你的问题将在90天内解决或公开。

如果你在7天内没有收到电子邮件回复,请再次与Go安全团队联系,地址为[email protected]。请确保你的电子邮件中包含“vulnerability”一词。

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

跟踪问题

根据问题的性质,Go安全团队会将其归类为PUBLIC、PRIVATE或URGENT问题。所有安全问题都将被分配一个CVE编号。

PUBLIC

PUBLIC的问题影响非常有限,或者已经广为人知。

PUBLIC的问题被标记为“Proposal-Security”,通过公开的Go提案审查过程进行讨论,并返回到下一个计划的次要发布(minor releases)(每月发布一次)。发布公告包括这些问题的详细信息,但不会预先发布。

以下是过去发布的PUBLIC的问题的例子:

  • #44916:archive/zip:调用Reader.Open时可能会引发panic
  • #44913:encoding/xml:把自定义TokenReader传给xml.NewTokenDecoder时会引发无限循环
  • #40928: net/http/cgi,net/http/fcgi:但没有指定Content-Type时存在Cross-Site Scripting (XSS)攻击风险
  • #40618: encoding/binary: ReadUvarint和ReadVarint可以从非法输入中读取无限个字节
  • #36834: crypto/x509:Windows 10可以绕过证书验证

PRIVATE

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

PRIVATE问题在下一个计划发布的次要版本中得到修复,并在此之前保持私有状态。

发布前三到七天,将发布预公告,宣布即将发布的版本中存在一个或多个安全修复程序,以及这些问题是否会影响标准库或(和)工具链,以及每个修复程序的CVE ID号码。

以下是过去发布的RIVATE的问题的例子:

  • #53416: path/filepath: Glob包会导致栈空间耗尽
  • #53616: go/parser:所有Parse*函数都存在栈空间耗尽的问题
  • #54658: net/http:GOAWAY发送GOAWAY给服务器后引发错误
  • #56284: syscall, os/exec:在环境变量中没有清除NUL

URGENT

URGENT问题对Go的生态系统的完整性构成威胁,或者正在被黑客积极利用,导致严重破坏。虽然最近没有这方面的例子,但它们可能包括net/http中的远程代码执行,或crypto/tls中的密钥恢复等。

URGENT问题是私下解决的,并会立即进行安全版本的发布,可能不会有预公告。

发送安全相关问题

如果你认为现有的某个问题与安全相关,我们请求你发送电子邮件至[email protected]。电子邮件应包括问题ID和为什么应根据此安全策略进行处理的简短描述。

披露和处理一个安全漏洞的流程

Go使用以下流程来披露和处理一个安全漏洞的流程:

  • 一旦收到一个安全报告,就会为其分配一个主处理流程。有个人负责协调整个修复和发布过程。
  • 问题已得到确认,并确定了受影响软件的列表。
  • 对代码进行审计,以发现任何潜在的类似问题。
  • 如果在与提交者协商后确定需要CVE编号,则主处理流程将获得一个。
  • 为最近的两个主版本号和head/master分支准备好修复程序。修复程序是为最近的两个主版本号准备的,并合并到head/master分支中。
  • 在应用修复程序的当天,会有公告发送到golang-announcement、golang-dev和golang-nuts。

这个过程可能需要一些时间,尤其是当需要与其他项目的维护人员进行协调时。我们将尽一切努力及时处理漏洞,但重要的是,我们要遵循上述流程,确保披露的漏洞得到一致的处理过程。

对于包括分配CVE号码在内的安全问题,该问题会在CVE详细信息网站国家漏洞披露网站的“Golang”产品下公开列出。

接收安全更新

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

对此政策的评论

如果你对改进此Go安全政策有任何建议,请提交一个问题进行讨论。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注