提升开源软件安全:CISA如何通过内存安全语言与供应链加固策略

本文探讨美国CISA等机构如何通过推广Rust等内存安全语言、强化软件供应链、大规模漏洞修复及开发者教育四大策略,系统性提升开源软件安全性,并提出具体实施方案与政府协作框架。

背景详情

负责本次信息请求(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 设计