2021 年 12 月 10 日,全球知名开源日志组件 Apache Log4j 被曝存在严重高危险级别远程代码执行漏洞,这个“核弹级”的漏洞时至今日影响仍然存在,InfoQ 在《开源意味着不问责,我们准备好应对比 Log4Shell 更大的安全危机了吗?》中表示 2022 年本应是“供应链安全元年”,不幸的是,一年后的现在这个漏洞仍然普遍存在,修复版本采用率没有想象中的高,而且数据显示,软件供应链攻击频次反而呈现出急剧上升趋势。
自 2019 年以来软件供应链攻击的发展趋势,年平均增长率达到 742%
软件供应链安全如今已经成了一个世界性难题。它的成因、为什么难以解决,以及企业如何应对,我们咨询了腾讯安全开发安全专家刘天勇。
问:当我们在说“软件供应链安全”的时候,我们实际上是在说什么?
答:基于中国信通院的定义,软件供应链安全是指“ 软件供应链上软件设计与开发的各个阶段中来自本身的编码过程、工具、设备或供应链上游的代码、模块和服务的安全,以及软件交付渠道及使用过程安全的总和。”
这里是把软件供应链安全分为了两部分。一是软件自身的供应链安全,二是软件供应链交界面的安全管理。
软件自身的供应链,可以简单理解为应用的代码来源,应用的代码来源主要有两个部分:一个是产品研发自己写的代码,另一个就是引入的第三方的开源组件代码。针对这两者的安全检测也是我们常说的开发安全。
软件供应链交接界面,针对的是开源软件或者商业采购第三方软件。这部分的供应链安全管理主要是在交付和使用过程中进行相关的准入检测并形成标准化可溯源的软件物料清单。
问:开源已经有十几年历史了,但是直到最近两三年,软件供应链安全才成为了一个世界性难题,这期间发生了什么变化?
答:软件供应链的安全的重要性提升和开源的大趋势是息息相关的,软件开源化的趋势是一个累积的过程,十几年的时间经历了一个量变到质变的阶段,现在全球的开发者都在依赖开源组件来做应用的研发,绝大多数现代代码库都包含开源组件。
但是开源的繁荣本身就建立在一系列自由许可协议和免责条款上——其中也包括风险免责,“使用者风险自负”是开源社区的共识。
21 年底 Apache Log4j 风险的爆发是一个里程碑事件,软件供应链安全直接关系着关键基础设施和重要信息系统安全,保障软件供应链安全也成为业界关注焦点。
最近中证协向各大券商下发了一份征求意见稿(按:指《网络和信息安全三年提升计划(2023—2025)》),里面写到“在软件自主可控方面,要求券商提升自主掌控能力,不管自研还是外购代码全部代码 100%审计,重要信息系统的自动化测试比例不低于整体测试比例 30%,从研发规范制定、研发工具建设方面建设统一的源代码管理工具、标准化的研发运维一体化工具”,这就是行业对于开源代码使用规范的一个表现。
问:从技术角度看,软件供应链安全治理的主要难点在哪里?
答:软件供应链安全的治理的难点可以分成以下三个部分:
第一个难点是检测门槛高,开源组件的来源复杂,依靠单一的技术手段难以做到全面覆盖。市面上常见的开源组件检测技术是基于源代码的 SCA 分析,但基于源码的 SCA 难以覆盖软件供应链交接界面的第三方软件成品;
第二个难点是修复成本高,在企业开始做开源组件的风险治理的时候,存量业务往往会发现大量的漏洞,但这些业务大多数处于上线运营的阶段,修复的过程对研发资源是一个较大的消耗,同时对安全团队来说也是较大的推动阻力。
第三个难点是攻击影响范围广,第三方开源组件的使用,间接扩大了软件的受攻击面,针对上游供应链环节的漏洞挖掘和恶意利用,能够快速覆盖大量的下游软件,同时相关的攻击具有较高的隐蔽性,常用的安全检测手段难以进行全面的防御,目前软件供应链攻击已经成为攻防演练中非常常用的攻击手段。
问:当前业界常见的开源组件检测技术有哪些?
答:SCA 是目前业界主要的解决开源组件风险检测的手段。市面上的 SCA 产品主要有两条技术路线,一个是基于开源组件源代码进行分析,另一个是基于二进制制品进行分析。目前国内的安全厂商的产品主要是通过源代码层面去做的,而腾讯安全的 SCA 产品,在源代码分析的基础上,同时还支持二进制 SCA 分析,能够同时覆盖软件自身以及交接界面的软件供应链安全问题。
从技术原理上看,源码 SCA 分析主要是根据源码文件相似度或代码相似度检测,主要为依赖扫描;二进制 SCA 分析是从二进制文件中提取常量、函数特征来进行分析。
从使用场景来看,源码 SCA 能够全面的分析源码仓库,但在不能获得源码的情况下,不能检测商业采购的第三方软件安全包。二进制 SCA 分析可以直接分析安装包,同时不会因为源码而引入一些额外的,不会被带入构建产物的数据,影响分析结果。
和源代码 SCA 相比,二进制 SCA 的技术门槛更高,需要有效涵盖移动端,嵌入式,后台开发,云原生各种开发场景下的跨架构格式解析,同时要支持固件、镜像、文件系统、压缩文件等多种文件格式。得益于腾讯安全科恩实验室在物联网安全以及 AI 安全上过去多年的技术积累,腾讯的二进制 SCA 技术有着独家的技术领先优势。
问:腾讯本身是一个 SCA 的使用者,也提供 SCA 的工具,我们自身的实践情况是什么样的?
答:腾讯的 SCA 是作为腾讯整个 DevSecOps 解决方案中的一环进行落地的,我先介绍下腾讯 DevSecOps 的整体实践。
目前腾讯的开发业务已经全量上线自研的 DevOps 平台,我们包括 SAST、IAST、DAST、SCA 在内的各类开发安全检测工具都和 DevOps 平台做了深度的集成和联动,相关检测工具会作为开发流水线中的自动化质量门禁红线,进行相关的卡点检测。
除了在流水线中进行使用外,我们的 SCA 产品还与自身的制品仓库进行对接, 实现了对制品的全面扫描和分析,生成了自身的 SBOM 软件物料清单,能够有效应对突发的软件供应链安全事件。此外,我们也将 SCA 分析用到的开源组件知识库进行开放,开发同事可以在开发阶段自查 CVE 风险以及 License 风险
问:供应链安全肆虐,给企业的建议?
答:1、 面向研发团队,强化开发安全意识培训以及安全编码规范的落地,提升自身研发的安全水平
2、 针对自研应用,完成包括 SCA、SAST、IAST 在内的开发安全工具建设并全面接入 DevOps 流程,实现安全左移
3、 针对第三方软件,建立标准的准入检测机制,借助二进制 SCA 工具实现对第三方软件的安全评估
4、 借助 SCA 工具,完成企业自身的 SBOM 软件物料清单建设,同时拉通安全和研发团队,制定软件供应链安全事件的应急响应流程制度
领取专属 10元无门槛券
私享最新 技术干货