软件供应链安全2022年回顾 原创
Gartner认为软件供应链攻击是2022年的主要的威胁来源,有人将2022年称为软件供应链安全元年,是新上任CIO的首要工作,越来越多开发者、安全研究人员在关注软件供应链安全。
我们通过梳理漏洞和开源组件数量变化、相关的漏洞风险事件、法规和标准、产品能力关注点,来对软件供应链安全这一领域进行回顾。
可以看到:
- 新出现的漏洞和开源组件的数量都在增长
- 中国有6个针对特定行业的信息安全管理法规中涉及软件供应链,软件供应链安全的标准与指南在加速,美国、新加坡、欧盟、英国也相继发布了软件供应链安全建设计划、指南
我们观察发现在软件供应链安全产品能力上,除了基础功能以外,企业开发者和安全团队更关注: - 漏洞治理优先级
- 漏洞可达性分析
- 降低修复成本
- 二进制成分分析
- 研发流水线集成
我们认为,未来会有更多软件供应链的安全风险暴露到公众视野,针对全链条的治理标准和监管能力会走向成熟,产品能力发展趋势包括:
- 检测精度不断加深
- 适用范围越来越广
- 重视研发体验
- 集成能力增强
相关的数据及信息基于我们的观察和分析,可能不尽全面,也欢迎读者补充。
漏洞及开源组件增长
在2022年,CVE新公开的漏洞数量为33034个,达到新高。而CNVD公开的漏洞数为10651个,则有所下降。(CNVD的漏洞默认是在收录一年后公开,所以并不能完全反映当前漏洞趋势)
美国网络安全和基础设施安全局(CISA)从2021年11月开始维护一个已知被利用漏洞目录(Known Exploited Vulnerabilities Catalog),在2022年,该目录中的漏洞数量新增了557个,总数达到868个。
以java、python、node.js生态为例,从对应的maven中央仓库、pypi仓库、npm仓库中可以看到开源组件数量持续增长。
安全漏洞与投毒事件
漏洞是软件供应链安全中关注的首要风险,投毒是近年来越来越频繁出现的攻击方式,因此我们以月为维度梳理了有较大影响的漏洞及投毒事件。
1月-PwnKit漏洞、faker.js/color.js投毒
Qualys公司安全研究人员在Linux内核polkit组件pkexec中发现了存在12 年之久的PwnKit漏洞 (CVE-2021-4034)。通过利用该漏洞,可以在所有主流Linux发行版中实现本地提权。
faker.js 和colors.js的作者 Marak Squires 由于不满用户免费使用其开源组件,在这两个包中加入了恶意代码,执行后会输出三行「LIBERTY LIBERTY LIBERTY」,而后开始无限输出非 ASCII 字符。
3月-Node-ipc投毒、Spring4Shell漏洞
Node-ipc是NPM中每周下载量超百万的开源组件,3月7日,开发者因为不满俄乌战争,在代码中加入了针对俄罗斯与白俄罗斯IP用户删除、覆盖磁盘文件的恶意代码,通过peacenotwar组件在用户桌面放置反战标语。
3月31日,Spring发布安全公告,修复了影响spring-webmvc 和 spring-webflux的远程代码执行漏洞(CVE-2022-22965),与Log4Shell(CVE-2021-44228)对应,有安全研究人员将其称为Spring4Shell。
4月-Gitlab测试密码硬编码漏洞
4月1日,Gitlab发布安全公告,在新版本中修复了硬编码密码导致的接管用户账户的安全问题(CVE-2022-1162)。当受影响版本的Gitlab开启OmniAuth后,攻击者可以通过三方登陆功能,利用硬编码的123qweQWE!@#000000000测试密码登录任意账号。
5月-Fastjson反序列化漏洞、Follina漏洞
5月23日,java开源组件fastjson开发者发布安全公告,发布了安全修复版本1.2.83,该版本修复了其收到在特定场景下可以绕过autoType关闭限制的漏洞(CVE-2022-25845),建议fastjson用户尽快采取安全措施保障系统安全。
5月27日,nao_sec公布了在微软Office中通过诊断工具(MSDT)利用的远程代码执行漏洞,代号Follina(CVE-2022-30190)。
6月-Atlassian Confluence OGNL注入漏洞
6月3日,Atlassian公司发布安全公告,在Confluence Server 和 Data Center新版本中修复了远程执行任意代码的严重漏洞(CVE-2022-26134)。由于URL中的OGNL表达式存在注入问题,攻击者无需认证就可发送请求通过表达式执行恶意代码。
7月-Apache Commons Configuration 任意代码执行漏洞
7月6日,Apache基金会发布公告称在Commons Configuration组件中由于存在与Log4j相同的插值功能(interpolation),攻击者可以利用形如${prefix:name}的字符串执行任意代码,建议开发者升级至新版本。
8月-Atlassian Bitbucket Server 和 Data Center 命令注入漏洞、GitHub中超过3.5万开源代码文件被投毒
8月3日,名为 Stephen Lacy 的工程师在Twitter中表示其发现大量GitHub仓库被加入了恶意代码,感染文件超过3.5万,随后GitHub对这些仓库进行了删除。攻击者大量克隆了已有开源项目的信息,加入恶意逻辑后再次提交代码。所幸由于被投毒的开源仓库大多无人关注,此次事件本身的实际影响较小。
8 月 24 日Atlassian官方安全公告发布了CVE-2022-36804漏洞,由于Bitbucket Server 和 Data Center 的多个 API 端点处存在命令注入漏洞,有权访问公共 Bitbucket 存储库或对私有存储库具有读取权限的攻击者可以通过发送恶意 HTTP 请求来执行任意代码。
9月-Linux kernel 释放后重用漏洞(DirtyCred)
9月20日,有安全研究人员公开了存在超过8年的Linux内核权限提升漏洞(CVE-2022-2588)利用代码,与DirtyPipe相对应,该漏洞被称作DirtyCred。漏洞源于Linux 内核net/sched/cls_route.c 实现的 route4_change 中存在释放后重用问题,当用户或网卡空间具有 CAP_NET_ADMIN 的特权能力时,攻击者可以将普通用户权限提升为root。
10月-Apache Commons Text 远程命令执行漏洞(Text4Shell)
10月13日,Apache Commons Text团队发布公告称在1.10.0以前的版本中存在远程代码执行漏洞(CVE-2022-42889),该漏洞也是由于支持了与Log4j相同的插值功能(interpolation)导致,因此有安全研究人员称其为Text4Shell漏洞。
此前Apache Commons Configuration的任意代码执行漏洞(CVE-2022-33980)也是由于对Commons Text进行了二次封装。
11月-OpenSSL 远程代码执行漏洞
11月1日,OpenSSL官方正式通告了一个可能远程执行任意代码的高危漏洞(CVE-2022-3602)。由于在 X.509 证书验证过程中(尤其在名称约束检查中)存在缓冲区溢出风险,可能导致拒绝服务或远程代码执行。
在此前10月25日OpenSSL预发布的通告中,该漏洞评级为严重,被认为是OpenSSL历史上第二严重的漏洞(仅次于Heartbleed),但此后考虑利用成本较高,漏洞评级降为高危。
12月-Linux内核ksmbd模块任意代码执行漏洞、PyTorch-nightly遭遇投毒
12月23日,ZDI公布了一处Linux内核ksmbd模块中存在的CVSS评分为10分(满分)的漏洞(CVE-2022-47939)。ksmbd模块自Linux 5.15版本开始引入,由于Linux内核在处理SMB2_TREE_DISCONNECT 命令时存在释放后重用漏洞,攻击者无需通过身份验证即可利用此漏洞远程执行任意代码。
12月31日,PyTorch团队发现 PyPI 仓库中出现了名为torchtriton的恶意包,由于与PyTorch-nightly中的私有包同名,在获取依赖项时,PyPI 的优先级较高,会导致恶意包在用户不知情下拉取到本地。恶意的torchtriton包不仅获取用户基本指纹信息(例如 IP 地址、用户名和当前工作目录),还会进一步窃取敏感数据(包括/etc/hosts 、/etc/passwd、$HOME/*中的前1000 个文件、$HOME/.gitconfig、$HOME/.ssh/*文件内容)。PyTorch团队通过将torchtriton依赖重新命名为pytorch-triton并发布至PyPI 仓库来修复这个问题。
法规与标准
中国
行业法规:6个针对特定行业的信息安全管理法规中涉及软件供应链
- 1月5日,银保监会发布《银行保险机构信息科技外包风险监管办法》
- 3月7日,工业和信息化部发布《车联网网络安全和数据安全标准体系建设指南》
- 3月29日,工业和信息化部等五部门发布《关于进一步加强新能源汽车企业安全体系建设的指导意见》
- 4月29日,证监会发布《证券期货业网络安全管理办法(征求意见稿)》
- 8月30日,国家卫生健康委等三部门发布《医疗卫生机构网络安全管理办法》
- 11月16日,国家能源局发布《电力行业网络安全管理办法》
标准与指南:软件供应链安全国家标准进入征求意见阶段、关键基础设施强调供应链安全保护
- 6月7日,中国信息通信研究院发布《软件物料清单实践指南》
- 9月28日,全国信息安全标准化技术委员会发布国家标准《信息安全技术 软件供应链安全要求(征求意见稿)》
- 11月7日,市场监管总局标准技术司、中央网信办网络安全协调局、公安部网络安全保卫局联合发布《信息安全技术 关键信息基础设施安全保护要求》(GB/T 39204-2022)
海外
美国、新加坡、欧盟、英国相继发布软件供应链安全建设计划、指南
- 3月1日,美国国家安全局(NSA)发布《网络基础设施安全指南》(Network Infrastructure Security Guidance)
- 5月1日,美国网络安全和基础设施安全局(CISA)和美国国家标准技术研究院(NIST)发布网络供应链风险管理框架指南(Cybersecurity Supply Chain Risk Management Practices for Systems and Organizations)
- 5月27日,美国能源部发布《2022制造业网络安全路线图》(Cybersecurity Manufacturing Roadmap 2022)
- 7月27日,新加坡网络安全局(CSA)发布了关键信息基础设施 (CII) 供应链计划书(Critical Information Infrastructure Supply Chain Programme Paper)
- 9月1日,美国网络安全和基础设施安全局(CISA)、国家安全局 (NSA) 和国家情报总监办公室 (ODNI) 发布《面向开发者的软件供应链安全实践指南》(Securing the Software Supply Chain: Recommended Practices Guide for Developers)
- 9 月 14 日,美国总统办公厅颁布《通过安全软件开发实践增强软件供应链的安全性》备忘录(Enhancing the Security of the Software Supply Chain through Secure Software Development Practices)
- 9 月 15 日,欧盟颁布《网络弹性法案》(Cyber Resilience Act)
- 10月12日,英国国家网络安全中心(NCSC)发布供应链安全指南(How to assess and gain confidence in your supply chain cyber security)
- 10月31日,美国网络安全和基础设施安全局(CISA)、国家安全局 (NSA) 和国家情报总监办公室 (ODNI) 发布《面向供应商的软件供应链安全实践指南》(Securing the Software Supply Chain: Recommended Practices Guide for Suppliers)
- 11月17日,美国网络安全和基础设施安全局(CISA)、国家安全局 (NSA) 和国家情报总监办公室 (ODNI) 发布《面向客户的软件供应链安全实践指南》(Securing the Software Supply Chain: Recommended Practices Guide for Customers)
产品能力关注点
随着越来越多的开发者及安全工程师应用软件供应链安全治理工具,对于产品而言,也在基础能力之上有了更高要求。
漏洞治理优先级
企业安全团队经常面临着资源有限,而面对大量漏洞需要修复无从下手的场景,这时候就必须按照一定的优先级进行处置。
漏洞危害通常采用CVSS进行评分,但是CVSS评分存在着部分漏洞评分过高的问题(如前端组件和后端组件的任意代码执行漏洞评分可能一样,但其大多数情况下危害并不一样)、维度不足(如没有考虑被利用的情况,存在利用工具的漏洞对于企业而言风险更高)的问题。
因此仅仅根据CVSS评分不能客观反映漏洞处置的优先级,业界也提出了EPSS(Exploit Prediction Scoring System)的概念用于反映漏洞的利用情况,部分厂商会针对漏洞做出自己的评级。
除了评价的客观性容易受到挑战以外,优先级大多数情况下还和企业的安全管理状况相关,并没有一个万金油的标准。
漏洞可达性分析
仅依赖组件名称以及版本区间来判断是否受到漏洞影响不够准确,因为漏洞通常依赖于特定的代码写法、数据传递场景才能触发。
例如java中jackson-databind的反序列化漏洞,在应用中需要在开启DefaultTyping特性的情况下,调用readValue方法处理用户输入的json数据才能够被利用。安全工程师进行漏洞治理工作时,可能会被研发工程师挑战称其代码中没有调用问题方法,检测结果属于误报,并不存在漏洞。
因此除了版本判断外,如果能进一步分析代码中是否包含这样能导致漏洞触发的代码调用,则能让漏洞识别结果更有说服力,帮助企业安全团队进一步评估影响面,这被称为可达性分析。
降低修复成本
开发者在修复漏洞时,经常可能存在疑问,升级组件版本、新增某个配置,是否会存在不兼容,导致新代码无法正常完成业务功能。这样的问题常常成为漏洞修复路上的绊脚石,导致修复周期拉长。
对于间接依赖的组件存在漏洞,开发者如果要顺着依赖关系找到对应的直接依赖安全版本,是一个费时费力的事情;对于企业而言,当有大量开发者需要修复漏洞时,如果能够缩短修复漏洞所用的时间,很大程度上也是在提高研发效能、提高企业的生产力。
产品应该尽可能降低开发者修复漏洞的成本,降低开发者心智负担,提升安全治理效率。
二进制成分分析
软件产物有源代码、制品、二进制等多种形态,传统的软件供应链安全产品只能针对源代码做检测,而在当前我们面临着许多不同的应用场景,在不同的场景中就需要对不同的产物进行检测。
比如在开发过程中,通常只需要针对项目中的源码检测;在上线前java代码被打包成了jar包这样的制品,这时候需要对制品进行检测;而软件通过二进制形式交付是常见的做法,如果想要对交付的产品进行分析,则需要面对大量开发阶段信息丢失的问题。
尽管二进制成分分析面临许多困难,但由于闭源形式的商业软件是企业中难以忽视的供应链存在,过去它们往往是黑盒式的软件资产、安全治理的盲区,现在也希望它们也能变得更透明,因此二进制的分析能力在被越来越重视。
研发流水线集成
由于很大一部分的软件供应链安全问题是在研发过程中引入,因此针对研发流水线的工具集成被开发者关注。
与企业现有的研发流水线集成,能够降低开发者的使用成本,也便于建立卡位控制的安全门禁。常见的集成方式包括IDE插件、独立客户端、提供webhook服务等,常见需要适配的研发工具包括:IDE、代码仓库、CI/CD、制品库。
展望
Gartner预计到2025年,全球45%的组织都会遭受过软件供应链攻击,这一数量是2021年的3倍。
在接下来的2023年,我们预计会有更多软件供应链相关的漏洞、攻击事件出现,相关的法规、标准仍在持续完善的阶段。
对于这一领域的安全产品,将呈现以下趋势:
- 检测精度不断加深:风险识别越来越接近真实可利用场景;
- 适用范围越来越广:覆盖更多的软件产物形态、覆盖软件供应链全生命周期、覆盖不同的使用人群;
- 重视研发体验:研发工程师作为安全工具的终端用户,其是否愿意使用变得非常关键;
- 集成能力增强:包括研发流水线的集成、安全工具之间的集成,通过集成形成有效的协同能力。
参考链接
https://www.infoworld.com/article/3646231/2022-the-year-of-software-supply-chain-security.html
https://www.cio.com/article/410904/the-new-cio-security-priority-your-software-supply-chain.html
https://www.gartner.com/en/newsroom/press-releases/2022-03-07-gartner-identifies-top-security-and-risk-management-trends-for-2022
免费情报订阅 & 代码安全检测
OSCS 是国内首个开源软件供应链安全社区,社区联合开发者帮助全球顶级开源项目解决安全问题,并提供实时的安全漏洞情报,同时提供专业的代码安全检测工具为开发者免费使用。社区开发者可以通过配置飞书、钉钉、企业微信机器人获取一手的情报。
免费代码安全检测工具: https://www.murphysec.com/?src=51
开源项目地址:https://github.com/murphysecurity/murphysec
免费情报订阅: https://www.oscs1024.com/cm/?src=51
具体订阅方式详见: https://www.oscs1024.com/docs/vuln-warning/intro/?src=51
随着不断地发展,安全问题也会越来越需要得到关注
嗯嗯 开源生态高速发展的同时更加重视安全问题