数字化时代,软件定义世界,如今,软件应用程序已经成为现代社会的基础设施,贯穿我们从学习工作到生活娱乐的方方面面,其安全性直接关系到国家关键信息基础设施的稳健运行,核心数据资源的完整可靠,以及公民的个人隐私保护。
前段时间引发全球关注的“微软蓝屏”事件,就是一次典型的因软件故障导致其供应链上的用户大规模遭殃的严重安全事故。2024年7月18日,CrowdStrike的Falcon安全软件的错误更新,引发了Windows操作系统遭遇蓝屏死机 (BSOD),即系统内核崩溃,导致其客户群中大量关键服务被迫中断,包括政府机构、银行、航空公司、支付处理商、911报警中心、电视网络和医疗保健系统。这对于作为最终用户的企业来说,就是人在家中坐锅从天上来,该事件再次警醒我们,拥有健壮的软件供应链验证机制和安全的软件发布流程是多么重要。
远不止于此,近年来发生的多起大型软件安全事件,时至今日影响仍然存在。比如:
2020年,攻击者对安全平台SolarWinds的Orion IT管理软件进行了篡改,植入恶意代码,进而影响了成千上万的下游用户;
2021年,日志记录开源组件Apache Log4j2被曝出存在远程代码执行漏洞,因其被大量应用于业务系统的开发,被称作“核弹级”漏洞;
2022年,身份安全厂商Okta遭到勒索组织Lapsus$的入侵,该组织利用对Okta的访问权来攻击其客户,影响了366家组织;
2023年,通讯软件服务商3CX的一款VoIP电话系统软件遭到攻击,该软件的客户群涵盖全球60余万家组织,以及2.5万个渠道合作伙伴;
2024年,微软开发人员在liblzma/xz工具和动态库中发现涉及混淆恶意代码的供应链攻击,投毒者蛰伏三年多,企图掌控全球主流linux发行版,一旦成功将可以随意侵入全球绝大多数的服务器。
软件安全风险潜藏于软件的全生命周期
由此可见,软件应用程序的安全问题波及范围广、影响程度深,其涉及软件的需求设计、研发测试、发布部署、应用维护、更新迭代、废弃下线等整个流程,还包括从上游合作伙伴到下游终端用户的一系列复杂过程,无论是本身的编码和使用过程,接入承载的环境、设备,以及供应链上的服务、模块、渠道,都可能面临多样化的威胁。
以软件生命周期维度的视角来分析,软件安全风险可以分为以下几个阶段:
生产阶段
该环节包括软件应用程序的设计、开发、集成、构建等过程,面临的威胁首先是针对软件生产要素的攻击,即攻击者利用安全漏洞、后门等修改编码环境、源码库等开发工具或软件自身,植入恶意代码,并经网络、存储介质等进行传播,用户下载使用后,引入风险。同样常见的是针对开发者所使用的第三方软件,特别是开源组件未经安全测试而直接使用,其中的安全漏洞可能引发后患,还有未知的法律风险。此外软件产品构建时,在编译和链接、产品容器化、打包等过程中,使用的工具或产品对象本身被污染或恶意修改而带来的安全风险。
发布阶段
该环节包括软件应用程序的分发、传输及部署。分发环节涉及软件产品从开发者传递到用户的过程,攻击者可能利用各种手段来篡改软件分发渠道,或者直接篡改软件安装包,以便在软件用户的系统中引入恶意代码。针对发布站点的攻击,如域名劫持(DNS)、内容分发系统(CDN)缓存节点篡改等,会使用户下载存在恶意代码或后门的软件。部署环节包含了从分发环节获取软件,到在特定硬件或环境中启动和运行软件的整个过程,可能恶意代码插入和篡改配置攻击。
运行阶段
该环节即软件的维护、更新和使用过程。攻击者可能通过中间人攻击替换升级软件或补丁包,或诱导用户从非官方发布渠道下载,也可能使用捆绑攻击在升级包中增加额外软件功能。被污染的补丁如果被下载部署到用户的项目和CI(持续集成)/CD(持续交付)管道中,则引发供应链威胁。第三方开发人员也是风险之一,企业通过外包方式维护软件,如果没有进行背景调查,恶意的外部组织容易窃取数据或IP,以获取经济利益或从事间谍活动。使用过程中,承载软件的网络基础设施,无论是自建的机房、商业的云平台或者是容器集群,其配置错误、漏洞被利用、业务中断等等都会造成运行软件的可用性受到影响。
软件安全事件随时代发展进入爆发阶段
值得注意的是,软件应用程序伴随计算机与网络的发展已由来已久,但软件安全问题似乎是在近四五年间频繁爆发且影响深远,综合近年发生的相关安全事件以及研究机构的调研分析,我们认为,社会数字化进程的深化与软件供应链的成熟共同造成了软件安全态势的广泛而严峻。
首先是开源软件的普及。
传统的软件供应链是线性的,在如今开源协作的软件开发模式下,大部分开发者会根据需求首先选择基于开源代码进行修改和拓展,而第三方开源组件的开发者也会通过下载安装其他开源组件来提高代码开发的效率,最终发布的软件形成了复杂的依赖关系网络。《“十四五”软件和信息技术服务业发展规划》明确提出,“到2025年建设2-3个有国际影响力的开源社区,培育超过10个优质开源项目”。
随着开源软件供应链的快速发展,开源软件也成为了软件安全问题的漩涡中心。在目前的开源生态中,漏洞问题普遍存在,Synopsys《2022年开源安全和风险分析报告》指出,在被审计的2409个代码库中,有81%至少包含一个公开开源漏洞,49%至少包含一个高风险漏洞。
开源漏洞的传播风险巨大,奇安信代码安全实验室的一项调查结果显示,Maven、NPM、Nuget、Pypi、Packagist、Rubygems等主流开源生态中直接依赖数大于1000的开源软件共有1068个,一旦存在漏洞就会沿着供应链复杂的依赖关系网络迅速传播并显著放大,而复杂的依赖层级关系也增加了安全漏洞的溯源难度。
而且,开源软件供应链的运维情况不容乐观。从开源代码开发者的角度,Synopsys在被审计的2409个代码库中发现88%存在过去两年内没有发生过任何开发活动的开源组件,大量开源项目缺少正规的安全漏洞管理和披露流程,甚至难以及时修复漏洞;从开源代码使用者的角度,开源软件几乎不会把补丁更新自动推送给使用者,而是需要使用者主动了解进行人工安装,这也直接导致使用老旧版本、漏洞修复工作滞后的现象十分普遍。
其次是业务普遍上云。
数字化转型深入发展,云计算技术广泛应用,越来越多的软件应用程序都在往云上迁移,并逐渐云原生化。Canalys数据显示,43.9%的用户已在生产环境中采纳容器技术,超过七成的用户已经或计划使用微服务架构进行业务开发部署。现阶段已有9%的用户云原生相关投入已占总IT投入的一半以上,技术研发、运维是企业主要支出部分。
软件应用程序在云环境中与传统环境所面临的风险严重程度有明显不同。一方面云原生应用会继承传统应用的风险,例如失效的对象级授权、失效的用户身份认证、注入攻击、过度的数据暴露、使用含有已知漏洞的组件、不足的日志记录和监控等风险。
另一方面云原生化的应用本身,主要包括微服务、Serverless,以及支撑应用的云原生计算环境,包括容器、镜像、镜像仓库、网络和编排系统等的暴露面被迫扩大,反序列化漏洞、代码RCE漏洞、权限漏洞等隐蔽漏洞或者内存马攻击等高级未知威胁加剧。想要在复杂的云环境中,在软件的运行状态下实时发现并规避风险,依靠传统的检测和过滤手段已经明显不足。
再者是国产化替代的浪潮。
软件行业作为国际合作与竞争的焦点,考虑到技术发展、数据主权、国家安全等现实因素,国家在持续推动国产软硬件(即信创产业)的发展,比如芯片、操作系统、数据库、办公软件等领域,通过技术自主性和创新性来确保线上业务和数据资源的可靠和稳定。
但信创并不意味安全,信创更需安全,在关键核心技术自主可控的前提下,发现和防护由信创软硬件组成的终端、网络、数据、应用、服务等整个信创环境中的漏洞风险和攻击威胁,是至关重要的。信创项目的开展面临着兼容稳定、漏洞发现、防御攻击、安全保密、安全运营协同等挑战,目前企业信创安全能力建设与信创项目同步规划和实施还有着一定的差距。未来随着不同底层设施环境所支撑的业务系统的不同,需要配套对应不同的安全产品和服务,加上底层设施的异构特性,使得信创安全将会在IT场景多元化与业务场景多元化并存的状态下持续演进与发展。
探索治理软件安全的中国方案
早在2018年,国家发布了GB/T 36637-2018《信息安全技术ICT供应链安全风险管理指南》,为ICT(信息通信技术)供应链安全风险管理提供了指导。今年4月,国内首个针对软件供应链安全的国家标准GB/T 43698《网络安全技术 软件供应链安全要求》出台,规定了软件供应链安全风险管理要求和供需双方的组织管理和供应活动管理安全要求,同期发布的另一国标GB/T 43848-2024《网络安全技术 软件产品开源代码安全评价方法》,旨在规范软件产品中的开源代码成分安全评价要素和评价流程,两项国标均将于今年11月1日正式实施。
软件供应链安全保护框架
软件安全领域作为近年来技术和产品方案迅速迭代、大量新玩家积极入场、资本市场明确看好并且客户侧持续加大投入的赛道,如今在政策驱动和标准规范之下,将走向更加有序的发展道路。
软件安全系列选题
接下来,我们将针对软件生命周期的各个阶段,逐一详细探讨目前及未来所面临的风险态势,并就市场上的安全框架构建、安全工具选择、安全治理经验进行分享,欢迎在该领域有所探索实践的甲乙方与我们联系,一同展示有益的前沿思考和落地经验。
扫码联系
END
✦
推荐阅读
✦
粉丝福利群开放啦
加安全419好友进群
红包/书籍/礼品等不定期派送