软件供应链安全现状分析与对策建议

2024-01-12 06:32

本文主要是介绍软件供应链安全现状分析与对策建议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

08c5e4e8bd9fc68aa9ac19a0f0c1d415.png

de0b9434b6e4ce599673f256e5703839.gif

扫码订阅《中国信息安全》杂志

权威刊物 重要平台 关键渠道

邮发代号 2-786

文│ 奇安信集团代码安全事业部 董国伟

数字化时代,软件无处不在。软件已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。

一、软件供应链安全现状

近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重,其中,开源软件的安全问题尤其值得关注。

(一) 供应链安全事件持续高发

软件供应链安全事件愈演愈烈,下表归纳了最近一年的典型事件,但这只是冰山一角。不难看出,供应链攻击可谓无处不在,在软件生命周期的各个环节中、软件产品的各种元素上都可能发生。

表 1 近一年主要软件供应链安全事件

73ea82f4bfa8359db31f88aa54659dc6.png

ba31d659f8692fe782c99e7554d3fb96.png

(二)主要软件供应链攻击类型

软件产品的生命周期包括设计、生产、交付、部署、使用及运营、停止等阶段。面向此生命周期所涉及的分工协作、联合攻关、平台环境等就是软件供应链的主要内容,软件供应链的主要攻击类型也与这些环节密切相关。

生产阶段涉及软件产品的开发、集成、构建等,此阶段的供应链安全问题主要包括三类:第一类是针对软件生产要素的攻击,即攻击者利用安全漏洞、后门等修改编码环境、源码库等开发工具或软件自身,植入恶意代码,并经网络、存储介质等进行传播,用户下载使用后,引入风险;第二类是开发者对所使用的第三方软件,特别是开源组件未经安全测试而直接使用,不了解其中的安全漏洞和法律风险;第三类是软件产品构建时,在编译和链接、产品容器化、打包等过程中,使用的工具或产品对象本身被污染或恶意修改而带来的安全风险,如 Codecov事件。

交付和运营阶段涉及软件产品的发布、传输、下载、安装、补丁升级等,互联网或移动传输介质是其重要手段。在发布和下载方面,发布渠道或商城如对软件安全性缺乏分析和测试则会存在潜在风险;攻击者可通过捆绑攻击,在常用软件中捆绑额外功能,如果这些功能涉及用户隐私、信息的收集,则后患无穷;针对发布站点的攻击,如域名劫持(DNS)、内容分发系统(CDN)缓存节点篡改等,会使用户下载存在恶意代码或后门的软件。在软件更新和升级方面,攻击者可能通过中间人攻击替换升级软件或补丁包,或诱导用户从非官方发布渠道下载,以达到攻击的目的,也可能使用捆绑攻击在升级包中增加额外软件功能。

(三)开源安全问题应特别关注

Gartner 报告曾指出,在当前 DevOps 之类的开发模式下,应用程序中大部分代码是被“组装”而不是“开发”出来的。据其统计,超过 95% 的组织在业务关键 IT 系统中都主动或被动地使用了重要的开源软件(OSS)资产;Forrester Research 研究也表明,应用软件 80%~90% 的代码来自开源组件。因此,开源组件的安全性直接关系到信息系统基础设施的安全,但从前表中可以看出,开源安全性不容乐观,它已成为软件供应链安全问题增长的重要因素。

今年 6 月,奇安信代码安全实验室发布了《2021中国软件供应链安全分析报告》。报告通过对 2188个企业软件项目的检测结果进行分析,得出了开源使用的安全状况:所有软件项目均使用了开源软件,平均每个项目使用开源软件数量达 135 个,使用最多的开源软件出现在 581 个项目中,渗透率达到了26.6%;平均每个软件项目存在 52.5 个开源软件漏洞,存在开源软件漏洞、高危开源软件漏洞和超危开源软件漏洞的项目分别为 1695 个、1559 个、1319个,占比分别为 77.5%、71.3%、60.3%;影响面最大的开源软件漏洞 (Spring FrameWork 漏洞 ) 出现在973 个项目中,渗透率高达 44.5%,一旦该漏洞被攻击者利用,将影响近半数的企业软件,波及的企业数量更加不计其数。

此外,根据奇安信代码安全实验室另一项针对联网设备固件的安全检测表明,摄像头、路由器等智能联网设备的开源软件安全问题也很突出:许多多年之前的老旧漏洞未进行及时修复,86.4% 的设备的最新固件存在至少一个老旧开源软件漏洞,漏洞最多的固件存在 74 个老旧开源软件漏洞,甚至2014 年曝出的“心脏滴血”漏洞,仍然存在于 5.3%的最新设备中。

(四)供应链攻击频发原因分析

生产模式的变化。用户对软件功能、应用实效等方面的需求越来越高,这就要求开发者在短时间内实现相应功能,还要持续不断地进行迭代更新。软件系统往往由自主研发的、开源获取的、外包开发的、商业购买的等多种来源的部件组合而成,为了响应快速开发的需求,软件供应链中第三方来源的如开源、外包、商业等成分软件的占比会增加,从而引入更多“不可控”成分,增加了软件安全评估的难度,也提高了软件供应链风险。

软件自身的变化。软件系统规模越来越大,程序逻辑越来越复杂,因此对软件的理解和分析也越来越难,这也造成了对软件把关和分析技术的门槛越来越高。另外,开源、库文件等提高了代码复用性,但在算法、结构、逻辑、特性等复用的同时,也带来了缺陷、漏洞等风险的复制,极大增加了供应链的攻击面,会造成某一点问题的大面积爆发,利用Struts2 等开源漏洞攻击的影响面之广就是个很好的例子。

环境渠道的多样。软件产品开发、构建、部署、交付等环节的生产线环境和发布渠道越来越多样化、多元化,IDE、代码管理系统、Bug 管理系统、构建工具、CI/CD 工具、云平台部署、交付方式等的选择越来越多,这些辅助工具或渠道的不安全因素会作为“基因”传导至软件产品中,也会增加软件供应链的攻击面。

二、美国和我国的相关举措分析

(一) 美国加快供应链风险管理步伐

早在 2013 年,美国就发布了第一部 ICT 供应链安全方面的标准《供应商关系的信息安全(ISO/IEC 27036)》,针对客户和供应商之间的购买与供应关系,规定了信息安全管理框架;又于 2015 年发布了《联邦信息系统和组织供应链风险管理方法(NIST SP800-161)》,用于指导美国联邦政府机构管理 ICT 供应链的安全风险,包括识别、评估和缓解 ICT 供应链风险等。2020 年底爆发的“太阳风”(SolarWinds)供应链攻击事件,使得美国政府对供应链安全的重视进一步提升。下表列举了 2021 年以来其在供应链安全风险管理方面的一些行动,可以看出,步伐明显加快。

表 2 美国供应链安全风险管理举措

afacdbf200f377c70f4b7bc156fa6a8a.png

cbd89f7a6a75dfcb4cd90af59ae30987.png

(二) 我国相关法规和标准日趋完善

近年来,我国在网络安全领域的重要法规频频出台,对供应链安全的要求也多有涉及。《网络安全法》规定了网络产品和服务提供者的职责,包括严禁的行为、及时采取补救措施、告知报告义务、维护的延续性等;《网络安全法》《网络安全审查办法》和《关键信息基础设施安全保护条例》针对关键信息基础设施的供应链安全提出了要求,包括对可能影响国家安全的设施进行安全审查、网络产品和服务提供者应配合审查并承诺避免危及供应链安全的行为、安全审查时考虑供应链风险方面的因素、优先采购安全可信的网络产品和服务、与提供者签署协议等。

我国在供应链安全方面的标准体系也日趋完善。《信息安全技术 信息技术产品供应方行为安全准则》(GB/T 32921-2016)从供应商角度入手,规定了信息技术产品供应方的行为安全准则;《信息安全技术 ICT 供应链安全风险管理指南》(GB/T 36637-2018)规定了信息通信技术(ICT)供应链的安全风险管理过程和控制措施,适用于 ICT 供方和需方、第三方测评机构等;国标《信息安全技术 信息技术产品供应链安全要求》针对关键信息基础设施,规定了信息技术产品供应方和需求方应满足的供应链安全要求,该标准已完成征求意见,即将发布;中国信息安全测评中心牵头的国标《信息安全技术 软件供应链安全要求》也在编制中,将对软件供应链所涉及的相关方应满足的安全要求进行规范。此外,国内有些标准虽并非专门针对供应链安全,但也包含一些具体要求:《信息安全技术 网络安全等级保护基本要求》(GB/T 22239-2019)在通用要求里,给出了产品采购与使用、外包软件开发、服务供应商选择等方面的要求;《信息安全技术 云计算服务安全能力要求》(GB/T 31168-2014)对云服务商的供应链从采购过程、外部服务提供商、开发商、防篡改、组件真实性、不被支持的系统组件、供应链保护等方面提出了安全要求。

三、对策与建议

虽然我国已出台了一系列针对软件供应链安全的法规和标准,但包括风险的发现、分析、处置、防护等能力在内的软件供应链安全管理水平仍有待继续提升。建议从三个方面开展相关工作。

(一) 政策层面

建议国家和行业监管部门继续完善和制定软件供应链安全相关的政策、标准和实施指南,建立长效工作机制;建立国家级/行业级软件供应链安全风险分析平台,具备系统化、规模化的软件源代码缺陷和后门分析、软件漏洞分析、开源软件成分及风险分析等能力,及时发现和处置软件供应链安全风险。

(二) 用户层面

建议政企用户参照监管要求及成功案例,明确本单位软件供应链安全管理的目标、工作流程、检查内容、责任部门等;在采购商用现货软件时,应充分评估供应商的安全能力,与其签署安全责任协议,要求提供所使用的第三方组件/开源组件清单,并对出现的安全问题提供必要的技术支持;在自行或委托第三方定制开发软件系统时,应遵循软件安全开发生命周期管理流程,对软件源代码进行安全缺陷检测和修复,并重点管控开源软件的使用,建立开源软件资产台账,持续监测和消减所使用开源软件的安全风险。建议个人用户及时升级软件或打补丁,开启软件安全保护功能,不使用来源不明的应用,做好账户密码设置及管理。

(三) 厂商层面

建议软件产品厂商提高安全责任意识,严控产品安全质量;建立清晰的软件供应链安全策略,明确相关的管理目标、工作流程、检查内容、责任部门等;严控上游,尤其重点管控开源软件的使用,建立开源软件资产台账,采用开源安全治理工具,持续监测和消减其安全风险;严控自主开发代码的质量,采用软件源代码安全分析工具,持续检测和修复软件源代码中的安全缺陷和漏洞;建立完善的产品漏洞响应机制,包括产品漏洞信息的收集、漏洞报告渠道的建立和维护、漏洞补丁的开发和发布、客户端漏洞应急响应和修复支持等。

(本文刊登于《中国信息安全》杂志2021年第10期)

5d6ff68b24e7ea8e06834edfdfeec539.gif

感恩有你

7474640464a6677e8645c6d672d4d70e.png

57cf009abd04784d6a21bed9ab991d37.png

感恩有你 互动有礼

1、扫描下图奇安信集团微信二维码,并在奇安信集团微信号评论留言【时间排序】第5、15、25、35、45、55的小伙伴可以获得奇安信冬奥礼盒一份;

2、评论留言【点赞数】前20的小伙伴,还能够获得第10期《网安26号院》纸质杂志一份;

(截止时间:11月26日18点)

不止在感恩节感谢你!

3734719dfd37c33a42a8d422b48fa73f.png

699526cf4020dd9c6fdb5ccf1aa82432.gif


推荐阅读

在线阅读版:《2021中国软件供应链安全分析报告》全文

速修复!开源编辑器CKEditor 中存在两个严重XSS漏洞,影响Drupal 和其它下游应用

11个恶意python包被指窃取 Discord 令牌、安装shell

对话奇安信代码安全丨十年砥砺前行  迎来软件供应链安全的风口

“木马源”攻击影响多数编程语言的编译器,将在软件供应链攻击中发挥巨大作用

GitHub 在 “tar” 和 npm CLI 中发现7个高危的代码执行漏洞

流行的 NPM 包依赖关系中存在远程代码执行缺陷

速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年

Npm 恶意包试图窃取 Discord 敏感信息和浏览器文件

微软“照片”应用Raw 格式图像编码器漏洞 (CVE-2021-24091)的技术分析

速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年

SolarWinds 供应链事件后,美国考虑实施软件安全评级和标准机制

找到软件供应链的薄弱链条

GitHub谈软件供应链安全及其重要性

揭秘新的供应链攻击:一研究员靠它成功入侵微软、苹果等 35 家科技公司

开源软件漏洞安全风险分析

开源OS FreeBSD 中 ftpd chroot 本地提权漏洞 (CVE-2020-7468) 的技术分析

集结30+漏洞 exploit,Gitpaste-12 蠕虫影响 Linux 和开源组件等

限时赠书|《软件供应链安全—源代码缺陷实例剖析》新书上市

热门开源CI/CD解决方案 GoCD 中曝极严重漏洞,可被用于接管服务器并执行任意代码

GitKraken漏洞可用于盗取源代码,四大代码托管平台撤销SSH密钥

因服务器配置不当,热门直播平台 Twitch 的125GB 数据和源代码被泄露

彪马PUMA源代码被盗,称客户数据不受影响

题图:Pixabay License

转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。

1846234c65d34f7be53b841eae2770f4.png

9af4ad8c1cc4b97ffa822be70e367e54.png

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

   f936bb56f0a0067dd8859a42eff1814c.gif 觉得不错,就点个 “在看” 或 "赞” 吧~

这篇关于软件供应链安全现状分析与对策建议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/597074

相关文章

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java