内容提要
该文为开源项目维护者提供处理安全漏洞的指南。核心步骤包括:在README和SECURITY.md中明确报告路径;评估报告是否为真实漏洞;在保密状态下修复并测试补丁;协调发布补丁与CVE公开披露,建议90天内完成。文章强调控制知情范围,并指出小型项目无需提供赏金。
延伸解读
明确报告路径是第一步
文章强调,项目维护者应在README和SECURITY.md中清晰说明漏洞报告方式,包括威胁模型、报告渠道、格式和时间线。这能避免漏洞被公开暴露在普通issue中,减少被恶意利用的风险。对于中小型项目,不提供赏金也是可接受的,关键是让报告者知道如何联系。
保密修复与协调披露
修复漏洞时需保持低调,避免在公开渠道讨论或提交补丁,以防攻击者从补丁推断出漏洞。建议使用GitHub的私有漏洞报告功能或私有分支进行开发,并确保测试充分。补丁合并后应尽快发布新版本,并与CVE公开披露同步,让用户能及时更新。
90天披露时限与用户通知
文章建议在收到报告后90天内完成修复和公开披露,以平衡用户安全和项目资源。提前通知特定用户列表虽好,但对多数小项目不现实。更可行的策略是同时发布补丁和公告,让所有用户同时获得信息,简化协调过程。
Q&A
开源项目维护者应该在哪里明确漏洞报告路径?
在仓库的README.md和SECURITY.md中明确报告路径,README.md中应包含安全相关说明或指向SECURITY.md的链接,SECURITY.md应位于仓库根目录。
收到漏洞报告后,第一步应该做什么?
首先评估报告是否为真实漏洞,与报告者和相关专家讨论,判断是否是可利用的安全漏洞,还是普通bug或误解。
修复漏洞时,为什么需要保密?
保密可以防止攻击者在补丁发布前利用漏洞,给用户时间更新,避免漏洞被恶意利用。
漏洞公开披露的最佳实践时间是多少?
一般建议在收到报告后的90天内完成补丁发布和公开披露。
小型项目是否需要提供漏洞赏金?
不需要,小型项目可以不提供赏金,但应在SECURITY.md中明确说明。
如何获取CVE编号?
CVE编号由CNA(CVE编号授权机构)分配,GitHub是CNA,可以通过GitHub私有报告功能获取,或直接向其他CNA申请。