软件供应链安全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个针对特定行业的信息安全管理法规中涉及软件供应链

标准与指南:软件供应链安全国家标准进入征求意见阶段、关键基础设施强调供应链安全保护

海外

美国、新加坡、欧盟、英国相继发布软件供应链安全建设计划、指南

产品能力关注点

随着越来越多的开发者及安全工程师应用软件供应链安全治理工具,对于产品而言,也在基础能力之上有了更高要求。

漏洞治理优先级

企业安全团队经常面临着资源有限,而面对大量漏洞需要修复无从下手的场景,这时候就必须按照一定的优先级进行处置。

漏洞危害通常采用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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值