2024年9月25日-27日,由开放原子开源基金会主办的2024开放原子开源生态大会在北京市亦庄新城北人亦创国际会展中心盛大举行。
作为开放原子开源基金会成员单位,悬镜安全受邀参与2024开放原子开源生态大会,悬镜数字供应链安全实验室负责人Random蔡智强应邀出席,在安全与密码产业实践分论坛上以“数字供应链开源安全情报建设与实践”为题发表技术演讲。
图1.Random在安全与密码产业实践分论坛发表技术演讲
演讲全文
大家下午好,我是悬镜数字供应链安全实验室负责人Random,本次分享的主题是“数字供应链开源安全情报建设与实践”,我将主要围绕数字供应链定义及安全共识、数字供应链开源安全情报平台建设以及数字供应链开源安全情报应用实践三个方面展开阐述。
1
数字供应链定义及安全共识
01
数字供应链的基本定义
首先介绍下数字供应链的基本定义:
在数字化时代,万物互联,皆可编程。尤其是在诸如:云计算、微服务、虚拟化、容器化这些新兴技术的推动下,传统软件开发方式和供应链组成也发生了数字化的演进。
数字应用、基础设施服务、供应链数据是数字供应链的三大基本构成。其中,数字应用(例如用户层和系统层软件、基于Web的服务系统、以及各种终端设备上运行的底层固件等等)。除此之外,还包含了数字应用在开发、部署、运行等环节中所使用到的基础设施、以及所产生的各类供应链数据。
02
数字供应链的安全风险
数字供应链安全作为软件供应链安全概念的演进和升级,其发展建立在软件供应链安全的基础之上。相比之下,数字供应链安全涉及的保护范围更广,保护对象的内涵更加丰富,具体包含数字应用安全、基础设施服务安全、供应链数据安全三类:
对于数字应用来说,基于开源和混源的协同开发已经成为其主流的开发方式。这就导致数字应用必然会遭受各种安全漏洞的威胁,并且绝大部分漏洞潜在于第三方开源组件中。其次,近年来针对数字应用的恶意代码污染攻击事件频发,已经成为数字应用面临的一大新型安全威胁。
对于供应链数据来说,其主要面临的风险来自于API接口安全和应用敏感数据泄露风险。
基础设施安全则主要包括云原生安全和供应链环境安全,例如代码托管平台,CI/CD集成交付平面临的安全风险等。
03
近十年的数字供应链安全热点事件
图2是近十年的数字供应链安全热点事件,从事件本质上来看主要还是涉及安全漏洞和恶意代码攻击这两大类问题。从事件发生的主体来看,基本覆盖了数字供应链的三大类数字资产:数字应用,基础设施和供应链数据。
例如像Openssl心脏滴血和Log4j远程代码执行这类影响深远的开源组件重大漏洞。也有针对国际互联网巨头实施的Python组件包依赖混淆投毒攻击,以及今年发生的xz压缩包后门投毒事件。
这些攻击事件都凸显出数字供应链需要进行开源安全治理的必要性。而要实现高效的开源安全治理,开源安全情报的建设是至关重要的一个环节。
图2.近十年的数字供应链安全热点事件
2
数字供应链开源安全情报平台建设
►►►
何为数字安全供应链情报?
所谓的数字供应链开源安全情报主要针对目标是开源数字应用资产。包括开源组件,中间件和操作系统。开源安全情报类型可以分为三大类:
1
第一类是传统的安全漏洞风险情报,开源漏洞情报数据获取主要有2种渠道:一种是公开的漏洞披露,包括官方的安全通告,安全社区以及权威的公开漏洞库。另一种获取渠道就是开源数字应用项目本身的comit代码和安全补丁的数据情报。
2
第二类是恶意代码投毒威胁。这种情报告的获取主要的来源是通过开源生态(Github、Python、NPM、…),以及一些在线社区(OpenSCA、Openwall、Twitter 、… )去获取。
3
第三类是数字应用资产的运营安全态势,包括资产的基础运营信息。例如维护者状态,代码更新频率,bug修复时效等等,此外还包括开源许可限制,许可变更以及冲突。还包括数字应用项目停服风险的预测分析。
►►►
数字供应链安全情报平台
悬镜安全自研的基于AI驱动的全球首个数字供应链安全情报预警服务平台悬镜云脉XSBOM,平台主要由情报数据采集、生产运营、和消费三大模块构成。平台内部通过融合多方渠道的开源安全情报数据,并结合数据生产策略、AI智能辅助分析判定、专家精细化运营以及风险评级模型,实现开源安全情报生产的快准全,帮助企业在安全开发、运维、采购、分发各个阶段提供情报数据解决方案。
在漏洞情报内容上提供了深度的漏洞原理分析,补丁信息、漏洞触发条件、漏洞影响范围等高可用的情报数据。在投毒情报上主要提供恶意代码技术细节分析,恶意行为标签以及IoC威胁信标等情报数据。在运营风险情报上主要提供开源许可的分析,包括许可变更和冲突以及项目停服风险预测的情报数据。
图3.悬镜安全云脉XSBOM数字供应链安全情报平台
►►►
开源漏洞情报生产
下面介绍一下悬镜安全在开源漏洞情报生产上的一些方案,主要思路是充分利用漏洞的commit代码来生成有价值的漏洞情报信息。通过commit代码,我们可以精确定位漏洞污点函数、挖掘漏洞原理、并完成漏洞复现。
要知道,传统基于人工的代码审计在大型项目上挺费时费力。而借助大模型进行辅助分析commit代码,可以快速提炼总结漏洞成因以及给出关键代码栈信息。通过这些信息可以极大提高人工漏洞审计研判的效率。
以上周刚披露的谷歌 Protobuf组件漏洞CVE-2024-7254为例,官方给的漏洞commit链接是个不包含任何安全代码修复的commit。最后我们通过大模型对commit内容进行分析,大模型可以给出漏洞相关类字段参数变动的提示。通过这个额外信息我们最终定位到真正进行漏洞修复的commit代码。
图4.开源漏洞情报生产之利刃:Commit代码
此外,通过收集分析公开的commit代码,还能发现一些未对外正式披露的在野漏洞。
举个例子,图5中显示的是某开源组件的版本迭代流程,只有在1.7.15版本中存在已知的公开漏洞,而在1.7.17版本中项目维护者通过commit修复一个安全漏洞,但并没有对外发布漏洞披露。在这种情况下,如果1.7.17之后的版本都不存在已知公开漏洞,相信很多项目使用者都不会主动更新版本。最终导致应用被无形暴露于这类在野漏洞威胁之下。
图5.某开源组件版本迭代过程中存在漏洞威胁
图6中是悬镜安全在JSON项目中发现的一个关于cJSON数据解析时发生堆内存溢出的漏洞commit。项目维护c者在最新版本中提交了这个commit修复该漏洞,但并没有对外公告披露,也没有对应的CVE编号。
图6.知名JSON项目存在堆内溢出漏洞
我们通过漏洞commit代码构造出对应payload,在处理以逗号结尾的json异常数据时,在parse_string函数中触发堆内存越界读漏洞(如图6所示)。
图7.在野(未正式披露)漏洞捕获
►►►
开源投毒情报生产
接下来介绍下,悬镜安全在开源组件投毒情报生产上的一些方案实现。首先来看下目前供应链投毒攻击的现状(图8所示)。根据sonatype 2023年的报告数据显示,2019年-2023年五年间共发现的软件供应链恶意软件包约为24.5万个,但仅仅2023年发现的软件供应链恶意软件包数量就是2019年以来的总和的两倍。其中,针对开源组件的恶意代码投毒是最为严重。
图8.供应链投毒攻击现状
对攻击者来说,与挖掘0day漏洞相比,针对开源组件的恶意代码投毒是一种成本低、收益高的攻击方式。攻击者往往采用广撒网的方式在各大主流开源组件平台上发布恶意组件包,诱骗开发者安装下载。开发者一旦使用这类恶意包就会遭受数字供应链攻击,甚至可以借此突破网络边界打入企业内网。仅2024年前3个季度,悬镜云脉XSBOM数字供应链安全情报平台在主流仓库中就捕获到超过1.5W+个恶意组件包。
我们结合静态规则扫描、源代码审计、动态行为监控等方式进行多方位分析,总结统计投毒组件的攻击方式和恶意行为标签。发现开源组件投毒常见的恶意行为主要归为四大类:
1
第一类是恶意shell命令执行,利用包管理器特性,在安装组件包过程中直接执行恶意shell命令;在组件代码库文件中内嵌shell命令,加载组件时执行恶意shell命令。
2
第二类是敏感信息外传,获取系统环境信息、读取敏感文件内容,通过HTTP(s)、DNS、FTP、Webhook等方式进行数据外传。
3
第三类是恶意代码下载执行,恶意代码远程下载并写入文件系统后再执行;恶意代码远程加载到内存中直接执行。
4
第四类是恶意代码释放执行,从组件安装包的某些数据文件(图片、PDF、压缩包等)中释放出恶意程序并执行。
对于开源组件的恶意代码投毒检测,我们的检测流程可以分为四个步骤(如图9)。首先是实时监听开源组件仓库,实时拉取最新发布的组件包进行静态代码扫描和动态行为监控分析。对于命中检测规则的恶意组件包将被推送带XSBOM情报运营平台,进行半自动化的投毒代码分析、恶意标签标注以及IoC恶意信标提取,并最终录入到安全情报数据库中。
图9.开源组件投毒检测方案
针对开源组件投毒的静态代码扫描包括正则特征匹配和源码语义分析两种方式。正则特征匹配用于快速筛选出包含高频黑名单特征的恶意代码,包括一些攻击者常用的恶意域名和敏感的文件路径等。正则特征匹配速度快、效率高,但缺点是匹配规则局限性大,攻击者很容易通过字符编码绕过检测。源码语义分析是从组件包入口代码开始,解析程序语义,通过指定的污点输入源、污点汇聚点,结合常见的投毒恶意行为模型,通过判定恶意API调用链来检测投毒行为。
图10显示的是一种基于开源静态代码分析引擎Semgrep的检测方案。Semgrep的优势是支持多语言,并且具备高扩展性。此外检测规则采用yaml定义,检测语法简单直观。这里给出一段Python恶意文件远程下载执行的检测规则。规则中将一些系列常见的下载接口定义为污点函数,写文件和执行文件接口调用链被定义为污点汇聚点。该规则可以准确捕获到右侧中的文件下载执行的恶意代码。
Semgrep存在一定局限性:比如很难进行跨文件级别的控制流和数据流分析。因此在我们的静态检测方案中还会引入了悬镜自研的白盒代码检测引擎,实现更加深层和隐蔽的恶意代码投毒行为。
图10.基于开源静态代码分析引擎Semgrep检测方案
当然,为了躲避静态代码扫描,攻击者在投毒攻击中通常会加入各种混淆、加密等对抗手段。这种情况下纯静态扫描能力就会出现瓶颈,需要引入动态行为监控进一步分析。动态行为监控的实现方式通常在沙箱环境中模拟安装和加载恶意组件,通过主动触发恶意代码,监控沙箱环境的网络、进程和文件访问行为,根据行为判断是否为恶意投毒攻击。
目前我们主要采用的方案是应用层API监控,通过对高风险API进行插桩,收集恶意API的调用栈信息来对组件安装加载过程中的恶意行为进行检出捕获。图11中是我们在7月份捕获到的一个混淆NPM恶意包,通过静态代码扫描或者人工代码分析其实都充满挑战,而借助动态行为监控,可以很轻松获取组件在加载过程中执行的恶意行为。
图11.动态行为监控捕获到的一个混淆NPM恶意包
3
数字供应链开源安全情报应用实践
基于高效精确的开源数字供应链安全情报,我们就可以从数字供应链的源头对数字应用进行科学安全的治理。在开发阶段,可以对引入的开源数字应用进行安全风险检测,在运营阶段可以对开源数字应用进行持续监控和威胁预警。
图12.数字供应链开源安全情报贯彻整个开发流程
悬镜安全提供的针对数字供应链开源组件的风险检测方案(图13),主要是利用SCA软件成分分析技术和SBOM清单,充分结合数字供应链开源安全情报服务,对应用系统中引入的第三方组件及依赖进行安全审查和监测,实现精准检测开源组件中潜藏的各类安全漏洞、恶意代码投毒以及开源协议风险。
图13.基于数字供应链开源安全情报的组件风险检测
目前悬镜安全旗下全球首个开源数字供应链安全社区OpenSCA已全面集成该方案,OpenSCA是国内用户量最多,应用场景最广的开源SCA平台。OpenSCA通过软件码纹分析、依赖分析、特征分析、引用识别与开源许可合规分析等综合算法,深度挖掘开源供应链安全风险,智能梳理数字资产风险清单,并以SaaS化方式向开源社区提供数字供应链安全检测服务。
OpenSCA SaaS将自动更新漏洞状态,并对用户做出精确的个性化情报推送,团队成员可以在第一时间获取到与项目资产相关的情报信息并采取措施,减少安全风险。企业在OpenSCA SaaS页面上轻松地查看并管理团队内所有项目的组件资产和对应的安全风险。具体包括:
1
组件资产
提供了一个集中视图,便于项目经理和安全人员统计所有项目的资产列表信息。
2
组件详情
检出路径:查看组件检出路径以及依赖关系。
组件漏洞:组件涉及的所有漏洞,含严重、高危、中危、低危。
分析关联:受到影响的项目及其检测目标信息。
3
漏洞风险
同样是以集中视图,统一展示团队内所有漏洞风险列表。
4
漏洞详情
漏洞详情包括漏洞类型、利用难度、攻击类型、CVSS评分等,团队小伙伴们可基于这些信息快速评估和修复组件漏洞。
统计受此漏洞影响的组件以及相关项目,包括组件名称、版本号、发布厂商、风险等级,协助修复优先级。
目前OpenSCA SaaS免费提供这些能力和服务,欢迎大家使用。我的分享到此结束,谢谢大家。