过去几个月以来,美国政府引入了几项新的安全要求,将影响向政府机构售卖软件的企业。由于这些新规颇为复杂,很多主管并不确定自家企业是否会受到影响。本文谨介绍一些最为重要的相关概念,帮助企业合规并保住自身政府业务。

01 软件安全新规:有哪些变化?

最近几年,SolarWinds供应链攻击和开源软件包Log4j漏洞之类重大安全事件提升了美国政府对软件安全的关注度。自2021年5月白宫颁布第14028号行政令意图改善美国国家网络安全以来,过去两年间的一系列措施又给美国政府软件供应链提出了一套明确的要求。

未来,向美国政府售卖软件的任何公司,都必须自证遵从了美国政府在国家标准与技术研究院(NIST)《安全软件开发框架》(SSDF)中概述的安全软件开发实践。

最重要的是,企业不仅要证明自己编写的软件代码遵从了这些安全实践,还要证明添加到自身应用程序里的开源组件也遵从了这些实践。

今年6月初,美国政府在行政管理和预算局(OMB)备忘录M-23-16中重申了这些要求,并设定了合规的最后期限:关键软件可能在今年第四季度,所有其他软件可能在明年第一季度。

这意味着,接下来几个月里,企业需尽快了解这些新的认证要求,确定该怎么合规,其中既包括自家编写的代码,也包括添加到自家软件产品中的开源组件。

根据M-23-16备忘录,不合规的处罚非常严厉:

“一旦发现软件生产商的文档不满足要求,或不能证实生产商已确认其无法证明的做法,[联邦]机构必须停止使用该款软件……”

02 开源组件尤其棘手

很多公司都在深入解读这些认证要求,发现合规可能很具挑战性,尤其是在最后期限临近的情况下。NIST SSDF是一套复杂的安全框架,企业不仅需要花费时间来确保自己遵守这些安全实践,还需要事无巨细地记录下自己的做法。

但更令人头痛的是,政府要求供应商证明其整个软件产品的安全实践,其中就包括了软件所用的开源组件。时至今日,现代软件往往主要由相互嵌套的开源组件与一些定制软件组成。研究发现,超过90%的应用程序都包含开源组件,且很多情况下开源组件占据了整个代码库的70%以上。

企业确实可以证明自己遵从了安全实践,但到底怎么证明自家应用程序里用到的开源代码也遵从了安全实践呢?毕竟开源代码可是由不受自己管辖的开源维护人员编写和维护的。

证明开源代码的安全性就是一项巨大的挑战,企业寄希望于开源维护人员能够提供关于自身安全实践的更多信息。但很遗憾,许多开源维护人员都是没有报酬的志愿者,只是出于兴趣将业余时间用于开源项目。所以,让他们付出额外的精力去验证自己的安全实践符不符合NIST SSDF制定的高标准是不现实的。

企业规避开源组件安全性验证这一巨大挑战的一条路子就是干脆不用开源代码。然而,这种方法虽然表面上看起来似乎挺简单,其可行性却在日益降低,因为开源组件在很多方面都已成为事实上的现代开发平台了。

想要解决这个问题,更好的方法是确保所用开源软件包的维护人员能够靠做这项重要的安全工作而获得报酬。

这可能需要企业额外调查研究一下,确保在用开源组件的背后有付费维护人员验证软件包是否符合这些重要的安全标准,无论其报酬是来自企业捐助、基金会,还是来自商业行为。或者,企业也可以自己联系维护人员,以企业赞助人的身份支持其开源维护工作。在制定安全方法的时候,企业需谨记,大多数现代应用程序都包含几千个不同开源依赖项,其中每一个都由不同个人或团队创建及维护,所以人工扩展此方法的工作量是非常巨大的。

03 困难,但必需

遵从这些要求势必会比较痛苦,但在不断增加的安全漏洞给公共和私营部门造成巨大损害的背景下,这又是必须迈出的一步。美国政府是全球最大的商品和服务买家,在IT和其他领域也是如此。通过运用自身强大购买力迫使整个软件安全标准改进,美国政府意图塑造更加安全的未来。

美国国家标准与技术研究院(NIST)《安全软件开发框架》(SSDF):https://csrc.nist.gov/News/2022/nist-publishes-sp-800-218-ssdf-v11

美国行政管理和预算局(OMB)备忘录M-23-16:

https://www.whitehouse.gov/wp-content/uploads/2023/06/M-23-16-Update-to-M-22-18-Enhancing-Software-Security.pdf

* 本文为nana编译,原文地址:https://www.darkreading.com/application-security/selling-software-government-know-security-attestation-first

声明:本文来自数世咨询,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。