写点什么

Log4j 一周年观察:我们如何应对日益严峻的软件供应链安全风险?

  • 2023-03-11
    北京
  • 本文字数:2560 字

    阅读完需:约 8 分钟

Log4j一周年观察:我们如何应对日益严峻的软件供应链安全风险?

采访嘉宾 | 腾讯安全开发安全专家刘天勇

编辑 | Tina


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 软件物料清单建设,同时拉通安全和研发团队,制定软件供应链安全事件的应急响应流程制度

2023-03-11 11:354800

评论

发布
暂无评论
发现更多内容

RocketMQ 5,学习linux系统管理

Java 程序员 后端

RabbitMQ实现即时通讯居然如此简单!后端代码都省得写了

Java 程序员 后端

Redis-用的很溜,了解过它用的什么协议吗?,3天拿到网易Java岗offer

Java 程序员 后端

Redis不只是get set,八种数据类型及应用场景分析,java技术栈面试题

Java 程序员 后端

Servlet的Cookie和Session机制,面试谈谈对springboot的理解

Java 程序员 后端

Redis-生产架构选型解决方案,java开发架构师

Java 程序员 后端

Redis总结,学Java必看书籍

Java 程序员 后端

Redis面试题汇总,mysql调优面试题

Java 程序员 后端

OpenKruise v0,mybatis教程pdf

Java 程序员 后端

redis 在微服务领域的贡献,java制作微信小程序教程

Java 程序员 后端

Redis入门到五大类型实现,java基础知识点大全

Java 程序员 后端

seata-golang 一周年回顾,java面试准备内容

Java 程序员 后端

Redis哨兵原理,我忍你很久了!,java面试视频百度云

Java 程序员 后端

Redis:看完就比常人多会三种类型实战,可以拿去炫耀了

Java 程序员 后端

RestFul API 统一格式返回 + 全局异常处理,linux系统编程视频教程

Java 程序员 后端

Redis 千万不要乱用KEYS命令,不然会挨打的,面试必问

Java 程序员 后端

Nginx面试三连问:如何工作?负载均衡策略有哪些,如何成为一个更好的Java开发者

Java 程序员 后端

oh,老哥,是码友就来看这篇多线程,mybatis的底层原理

Java 程序员 后端

RabbitMQ 可靠性、重复消费、顺序性,突围金九银十面试季

Java 程序员 后端

set集合,挑战华为社招

Java 程序员 后端

OpenFaaS实战之五:大话watchdog,MySQL高可用之主备同步

Java 程序员 后端

Redis该怎么学?其实很简单,这份学习路线,mybatis架构梳理

Java 程序员 后端

Serverless Devs 的官网是如何通过 Serverless Devs 部署的

Java 程序员 后端

Set集合无法去重相同内容的父类对象和子类对象的问题解决

Java 程序员 后端

pageHelper----Mybaits分页插件,mysql架构设计器没有显示

Java 程序员 后端

Redis到底能干什么?又不能干什么呢?,kettle面试题

Java 程序员 后端

Redis高可用篇:Cluster集群能支持的数据量有多大?,再不了解你就out啦

Java 程序员 后端

SCA Sentinel 分布式系统的流量防卫兵,春招我借这份PDF的复习思路

Java 程序员 后端

Offer经验分享 - 蚂蚁金服、字节跳动、PDD,蚂蚁金服面试Java后端经历

Java 程序员 后端

Redis分布式基石——主从复制技术详述,Java黑科技实现原理揭秘

Java 程序员 后端

Redis精通系列——LRU算法详述(Least Recently Used - 最近最少使用)

Java 程序员 后端

Log4j一周年观察:我们如何应对日益严峻的软件供应链安全风险?_语言 & 开发_Tina_InfoQ精选文章