Linux基金会开源项目信任与安全倡议
摘要
本文档提出由Linux基金会建立和运营的“信任和安全倡议”(TSI)项目,旨在提升开源项目的安全性。该倡议基于微软的“可信计算”(TWC)倡议和“软件开发生命周期”(SDL),针对开源社区和现代软件开发团队的特点进行调整。TSI包含八项最佳实践,分为基本、标准和高级三个级别,以适应不同项目和团队的成熟度。此外,还提出了认证方案和安全构建证书,以验证和提升开源软件的安全性。
八项最佳实践
角色与职责
- 指派首席安全官(CSO)和安全架构师,明确安全责任。
- 确保组织中的每个人都了解其安全责任,并参加年度安全培训。
- 拥有一支专职安全团队,专注于安全相关项目。
安全策略
- 发布组织安全策略,并在项目主页和安全链接处提供。
- 每个项目发布安全README文件,覆盖项目特定的安全策略。
- 组织中的每个人都必须阅读并认可安全政策,并参加年度安全政策培训。
- 所有承包商和第三方都必须阅读并认可安全政策。
了解您的贡献者
- 验证所有贡献者的身份,确保信任来源。
- 使用强认证(如多因素认证)。
- 实施基于角色的访问控制和最小权限原则。
- 实施贡献者许可协议,提升贡献质量。
- 发布贡献者名单及其贡献,供消费者参考。
软件供应链
- 仅接受通过Git Pull Requests获取的内容,并实现同行评审。
- 使用受保护的分支,防止未经审查的更改。
- 使用数字签名的提交,确保更强的认证和完整性。
- 立即分配安全相关问题,根据风险进行操作。
- 使用私有问题提交安全问题,符合披露政策。
- 控制构建服务器对基础设施和代码的访问,并使用可信软件包。
- 使用GRAFEAS和SPIFFE验证构建管道。
- 不在代码中存储秘密,使用秘密管理解决方案。
- 阻止使用易受攻击的软件包,实施软件成分分析(SCA)。
- 使用私有软件包仓库,确保构建安全。
- 仅使用有效的已签名包,保证软件创作者身份。
- 验证其他开源软件的安全性,使用SAST进行扫描。
技术安全指南
- 拥有提供指导性应用安全方案的安全指南(MTSG)。
- 拥有操作系统安全配置指南,规范操作系统配置。
- 拥有云安全配置指南,规范云服务环境配置。
- 为所有语言制定特定的安全指南,避免安全问题。
- 拥有最佳安全架构实践,提供可重用的解决方案。
- 拥有加密学指南,指导应用加密技术。
安全剧本
- 发布事件响应手册,阐述事件处理流程。
- 发布漏洞管理手册,规范漏洞管理操作。
安全测试
- 在所有提交中实施安全代码审查,预防简单安全问题。
- 对所有重要版本进行最终的人工安全审查。
- 对所有小版本进行手动安全审查,进行熟练的人工检查。
- 在项目设计阶段对新项目进行威胁建模。
- 对所有主要架构变更进行威胁模型分析。
- 使用基于控制流的SAST对所有主要版本进行测试。
- 在所有版本中使用基于数据流的SAST。
- 使用SCA工具验证开源软件的安全性。
确保发布和更新
- 拥有安全发布标准,定义可接受的发布内容。
- 数字签名发布内容,验证身份和信任。
- 为每个发布版本发送一份“安全构建证书”。
- 发布关于信息并弃用不安全的版本。
- 实施自动化安全更新系统,及时更新安全补丁。
认证方案
Linux基金会应建立认证安全版本目录,并有一套无效化版本的流程。软件生产者可以免费注册并自行认证,认证结果将发布到中央目录。此外,认证能够提供独立保证的安全顾问。
安全构建证书
建议基金会建立一套规范和一组工具,以生成安全构建证书,附加到软件版本中,验证软件版本并允许解析安全声明。
其他需要投资和帮助的安全问题
- 开源安全测试工具缺乏,建议基金会投资于发展高质量的免费开源安全测试工具。
- 开源软件包分发对互联网构成风险,建议开发和运营一个针对所有支持语言的中央图书馆分发系统,并内置适当的安全功能。
- 漏洞披露机制已失灵,建议重新思考devops和开源时代的披露流程,并制定新的IETF风格草案。
结论
TSI项目通过八项最佳实践、认证方案和安全构建证书,旨在提升开源项目的安全性,为消费者提供更高的软件信心,并促进整个互联网的安全水平。