数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。
随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。
为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。
注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。
2021年5月12日,美国总统拜登签署了“关于改善国家网络安全(EO 14028)”的行政命令,其中第4节“加强软件供应链安全”的(e)条款要求:初步指南发布90天内(不迟于2022年2月6日),NIST应发布加强软件供应链安全实践的指南,并明确了指南需包含的10余项具体内容(表3一二列)。
对此,NIST修订了其2020年4月发布的《安全软件开发框架(SSDF) V1.0》,形成V1.1草案,并于2021年9月30日至11月5日完成公开征求意见。
“安全左移”的理念已得到广泛共识,软件供应链安全保障也常基于软件生命周期模型,但明确详细处理软件安全的SDLC模型却很少,大多是将安全实践添加其中。
SSDF描述了一组基于已有标准、指南和安全软件开发实践的基础可靠的高层级最佳实践,可帮助使用者实现安全软件开发的目标。实践直接或间接(如保护开发环境)涉及软件本身,即框架考虑了软件供应链安全应包括的软件自身及相关生产要素的安全。
SSDF的重点在于实现安全软件开发实践的结果,而没有明确实现它们的工具、技术和机制。SSDF并不要求所有组织具有相同的安全目标和优先级,框架中的建议恰恰反映了软件生产者可能的独特安全预期和软件使用者可能的独特安全需求。每个实践实现的程度和形式根据生产者预期的变化而变化。
SSDF是关于安全软件开发的一组实践,呈现为一张描述实践的表格,可根据需要方便的进行扩充、调整或删减。SSDF V1.1草案共包含4类19项实践(表1一二列):
组织准备(PO):此类实践用来确保已准备好组织层面执行安全软件开发的人员、过程和技术(某些情况下针对单独的项目),共5项,根据行政令要求,新增了实践“软件开发安全环境(PO.5)”;
保护软件(PS):此类实践用来保护软件的所有组件不受篡改和未授权访问,共3项;
生产安全性良好的软件(PW):此类实践用于尽量减少软件发布版本中的安全漏洞,共8项。新草案将原实践“验证第三方软件是否符合安全要求(PW.3)”合并到了PW.4中;
漏洞响应(RV):此类实践用来识别软件版本中的剩余漏洞,适当响应以解决它们,并防止未来发生类似漏洞,共3项。
表1 SSDF V1.1草案中所有实践和任务
分析草案所有实践可知,19项实践覆盖了软件供应链安全应包含的软件自身及其生产要素的安全内容,整体框架较为全面:
(1) 框架中实践涉及软件开发生命周期的需求、设计、集成第三方软件、编码、构建、测试源代码和可执行码、漏洞修复响应和分析等各个阶段的安全要求。
(2) 框架中实践考虑到了人员、工具链、开发环境、授权访问、完整性、安全配置等软件生产要素方面的安全和防护手段。
SSDF对每项实践的详细描述包括4个方面:
实践:实践的简介、唯一标识符和解释等;
任务:完成实践所需的一个或多个动作。V1.1草案中共43个(表1第三列,其中粗体的为新增任务,斜体的为从V1.0的其他实践中调整来的任务);
实现示例:可用于实现相应实践的工具、过程或其他方法的示例;
参考:对美机构已有标准指南中相关信息的引用。
表1中新增和调整的任务主要涉及开发环境安全、记录维护安全需求和风险设计决策、与第三方沟通需求、维护组件和依赖项的来源数据、使用标准化安全特性和服务、验证第三方组件等。这些进一步加强了对第三方元素、开发环境的安全管理和对安全实践的复用。
表2以PW.4为例,给出了实践的完整描述示例,可看出SSDF的编制参考了较为丰富的文献
表2 实践详细描述示例
四、与行政令要求的对应关系
SSDF V1.1草案中实践任务与行政令4(e)要求的指南应包含的具体内容之间的详细对应关系如表3所示。可以看出:
(1) 软件供应链安全保障中,使用自动化工具检查已知和未知漏洞并修复依然是核心工作。它涉及框架中18项任务,包括定义检查标准、设计、集成、编码、构建、代码审查和漏洞分析、基线配置、漏洞信息收集、修复等各环节、各要素中与漏洞相关的工作。其中PW.4.4、PW.5.1、PW.7.1、PW.7.2和PW.8.2是检查漏洞的主要任务,多由有经验的安全人员在SAST、SCA、IAST等类型工具的辅助下完成。
(2) 实践“复用安全软件(PW.4)”的任务包括获取或维护安全可靠的内部和第三方组件、验证第三方组件符合组织要求、验证第三方组件的完整性和来源等。这些任务多用于供应链来源、控制和完整性方面的安全要求(3、4、6、10)的应对方案中。其中第三方组件的验证可以使用SCA工具进行。
(3) 新增“开发的安全环境(PO.5)”的两项任务可用于行政令多项要求(1(1)-(6)、2、3、5、6)的应对方案中。这说明在供应链安全中,软件开发环境已成为重点考虑的因素之一
关于作者
董国伟,奇安信集团代码安全事业部专家,博士,从事网络安全、软件安全、代码审计和漏洞分析相关工作10余年。
在线阅读版:《2021中国软件供应链安全分析报告》全文速修复!开源编辑器CKEditor 中存在两个严重XSS漏洞,影响Drupal 和其它下游应用11个恶意python包被指窃取 Discord 令牌、安装shell对话奇安信代码安全丨十年砥砺前行 迎来软件供应链安全的风口“木马源”攻击影响多数编程语言的编译器,将在软件供应链攻击中发挥巨大作用GitHub 在 “tar” 和 npm CLI 中发现7个高危的代码执行漏洞流行的 NPM 包依赖关系中存在远程代码执行缺陷速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年Npm 恶意包试图窃取 Discord 敏感信息和浏览器文件微软“照片”应用Raw 格式图像编码器漏洞 (CVE-2021-24091)的技术分析速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年SolarWinds 供应链事件后,美国考虑实施软件安全评级和标准机制找到软件供应链的薄弱链条GitHub谈软件供应链安全及其重要性揭秘新的供应链攻击:一研究员靠它成功入侵微软、苹果等 35 家科技公司开源软件漏洞安全风险分析开源OS FreeBSD 中 ftpd chroot 本地提权漏洞 (CVE-2020-7468) 的技术分析集结30+漏洞 exploit,Gitpaste-12 蠕虫影响 Linux 和开源组件等限时赠书|《软件供应链安全—源代码缺陷实例剖析》新书上市热门开源CI/CD解决方案 GoCD 中曝极严重漏洞,可被用于接管服务器并执行任意代码GitKraken漏洞可用于盗取源代码,四大代码托管平台撤销SSH密钥因服务器配置不当,热门直播平台 Twitch 的125GB 数据和源代码被泄露彪马PUMA源代码被盗,称客户数据不受影响