提升开源软件安全:CISA的四大战略方向

本文针对美国政府关于开源软件安全的征询意见,提出四项关键改进方案:推广内存安全编程语言、强化软件供应链防护、大规模减少漏洞类别以及提升开发者教育水平,为CISA等机构提供具体实施路径。

如何提升开源软件安全:CISA的四大战略方向

美国近期发布了关于开源软件(OSS)安全的信息征询(RFI)。本文总结了我们的回应与解决方案,主要包括:用Rust等内存安全语言重写广泛使用的遗留代码、资助改善合规性的OSS解决方案、赞助漏洞追踪与分析工具的研发,以及教育开发者如何减少攻击面和管理复杂功能。

背景详情

负责此次RFI的政府机构包括国家网络总监办公室(ONCD)、网络安全与基础设施安全局(CISA)、国家科学基金会(NSF)、国防高级研究计划局(DARPA)和管理与预算办公室(OMB)。RFI的具体目标是收集公众对OSS安全未来优先事项和长期关注领域的意见。这是这些组织识别OSS系统性风险并促进OSS社区长期可持续性的关键努力。

RFI包含五个潜在的长期关注和优先领域。我们优先关注“保护OSS基础”领域及其四个子领域:促进内存安全编程语言的采用、加强软件供应链、大规模减少整类漏洞,以及推进开发者教育。下文将为这四个子领域提供建议方案。

促进内存安全编程语言的采用

内存损坏漏洞仍然是OSS安全的严重威胁。例如近期libwebp中的堆缓冲区溢出漏洞,在我们起草RFI回应时正被积极利用。这类漏洞表明需要超越运行时缓解的解决方案,而像Rust这样提供内存和类型安全的语言是最有前景的。

除了显著减少漏洞,Rust还能很好地与遗留代码库融合,提供高性能,且相对易于使用。因此,我们建议赞助重要遗留代码库的战略性重写。由于重写成本高昂,我们特别建议进行全面系统分析,以确定最适合过渡到Rust等内存安全语言的OSS候选。我们建议重点关注广泛使用、测试覆盖不足且易受内存安全漏洞影响的软件组件。

加强软件供应链

如2020年SolarWinds黑客事件所示,供应链攻击是OSS安全的另一重大风险。供应链安全是一个复杂多面的问题。因此,我们建议改进整个软件供应链的保护——从个体开发者到包索引,再到下游用户。

我们的策略包括建立CISA可发布的“强链”指南,为关键OSS组件(OSS开发者、仓库托管方、包索引和消费者)提供指导。除了指南,我们还建议资助更好地实现合规的OSS解决方案,例如通过与构建系统集成来提高软件物料清单(SBOM)的准确性。

大规模减少整类漏洞

另一个关注点应是大规模减少OSS生态系统中的漏洞。像OSS-Fuzz这样的努力已成功缓解了数千个潜在安全问题,我们建议以之为模型资助类似项目。此外,漏洞追踪工具(如cargo-audit和pip-audit)已成功快速修复影响大量用户的漏洞。有效维护这些工具的关键是妥善维护漏洞数据库,避免过度报告无关紧要的安全问题导致安全疲劳(开发者因警报过多而忽略)。

因此,我们建议赞助漏洞追踪工具的开发和维护、分析工具(如Semgrep和CodeQL)以及其他可大规模应用的新技术。我们还建议赞助与新工具和技术相关的研究,以帮助解决特定高价值问题,如安全HTTP解析。

推进开发者教育

最后,我们认为改进开发者教育是OSS安全的重要长期关注领域。与当前主要关注常见漏洞的教育努力不同,我们建议扩展开发者教育,涵盖减少攻击面、管理复杂功能和“左移”等领域。如果有效实施,为这些领域创建文档和培训材料可能对OSS安全产生显著的长期积极影响。

展望未来

解决OSS安全可能是一个复杂挑战,但通过在这四个领域进行有针对性的干预,我们可以取得重大改进。我们相信美国政府可以通过三种策略的组合最大化影响:提供全面指导、通过DARPA和ONR等机构分配资金,以及促进与OSTIF、OTF和OpenSSF等OSS基金会的合作。这种组合方法将为推动我们提议解决方案中的研究和工程任务提供必要的赞助和资金支持。

这些行动共同可以为开源软件构建更安全的未来。我们欢迎ONCD、CISA、NSF、DARPA和OMB发起如此开放的讨论并给予我们贡献的机会。

欢迎阅读我们的完整回应。

如果您喜欢这篇文章,请分享: Twitter LinkedIn GitHub Mastodon Hacker News

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计