概述
“随着容器、微服务等新技术的快速迭代,开源软件已成为业界主流形态,开源和云原生时代的到来导致软件供应链越来越趋于复杂化和多样化,网络攻击者开始采用软件供应链攻击作为击破关键基础设施的的重要突破口,从而导致软件供应链的安全风险日益增加。”
——摘自子芽新书《DevSecOps敏捷安全》
2022年8月2日,在第十届互联网安全大会(ISC 2022)软件供应链安全治理与运营论坛上,作为论坛出品人,悬镜安全创始人&CEO、OpenSCA开源社区创始人子芽以“云原生场景下软件供应链风险治理技术浅谈”为主题,分享其对软件供应链安全领域的深刻洞察。
图1 子芽从四个方面分享云原生场景下的软件供应链风险治理技术
以下是子芽“出品人洞察”的全部内容:
后疫情时代,企业上云、组织上云已经成为重要趋势。今年的RSAC创新沙盒大赛十强中有四家是云原生安全赛道的厂商。我将从以下四个方面与诸位共同探讨云原生场景下的软件供应链风险治理技术。
云原生时代面临的应用安全风险
数字经济时代,关于软件应用有三个安全共识:
- 软件已成为支撑社会运转的基本组件,数字化时代,一切皆可编程,软件定义万物,是新一代信息技术的灵魂;
- 现代软件都是组装的而非纯自研,近五年来,开源代码在数字化应用中所占的比例由早期的40%增至78%-90%,混源开发已成为主要的开发模式;
- 凡是人为编写的代码就一定有未被发现的安全漏洞,平均每千行代码就会出现2-40个逻辑性缺陷,每个逻辑性缺陷或若干个逻辑性缺陷将最终导致一个漏洞。
何为软件供应链?软件供应链泛指一家企业和组织开展数字化业务所依赖的软件,包括研发、运营、供应等各项活动所依赖的软件以及与软件评估、生产、分发等相关的任何活动,主要包括三个方面:上游的软件开发方;中间的软件供应方,主指供应商及运营服务商;下游的软件使用方。
从云原生时代软件供应链技术的跃迁式演进中,不难发现四个新的变化:
- 新制品:软件成分从早期的闭源到混源再到开源主导;
- 新发布:开发过程从传统的瀑布式到敏捷再到DevOps研运一体化;
- 新技术:数字化应用架构从早期的单体应用到SOA(Service-Oriented Architecture,面向服务的架构)再到微服务;
- 新环境:数字化基础设施从传统的IDC物理机到虚拟化再到容器化。
也正是这四个新变化,促使DevSecOps成为云安全发展中的变革型技术,也使得软件供应链安全风险面有一定的延展,增加了镜像风险、微服务风险、运行风险、基础设施风险和网络安全风险这五类安全威胁。值得一提的是,微服务风险中的异常行为代码已然成为继通用漏洞、业务逻辑漏洞、第三方开源成分漏洞之后,第四大数字化应用风险。
近年来,里程碑式的软件供应链攻击事件频发,从2014年的心脏滴血漏洞即开源软件漏洞,到2015年Xcode开发工具被污染,再到去年年末的Log4j2.x开源框架漏洞,在此之间还有厂商预留后门、升级劫持、恶意程序等不同类型的软件供应链攻击事件发生。
可以通过软件供应链的不同环节,对软件供应链面临的主要安全风险进行分类:1. 在软件开发环节,不仅要关注程序代码的安全风险,还要关注开发工具、组件、框架等整个开发环境的安全风险;
- 在软件供应环节,主要关注软件分发渠道和过程的安全风险;
- 在软件使用环节,主要关注常态化运营过程中软件升级更新等带来的安全风险。
图2 软件供应链面临的主要安全风险
软件供应链源头开源风险治理实践
在云原生场景下,开源组件的引入加快了软件研发效率,但同时将开源安全问题引入了整个软件供应链。开源治理自然成为整个软件供应链安全保障的关键点之一。
开源治理有四大痛点:
- 看不清:不清楚数字化应用中真实使用了多少开源成分,缺少对软件物料清单SBOM的有效管理;
- 摸不透:不清楚开源软件存在多少真实可被利用的中高危漏洞,不同开源软件的许可证可能存在合规性和兼容性等风险;
- 跟不上:不知道开源软件漏洞的真实影响范围,无法快速跟踪定位每天都爆发的新增漏洞;
- 防不住:不知道如何快速修复开源软件的已知漏洞,缺少对典型未知漏洞的积极预防和风险评估能力。
如何建立规范的开源治理体系?有四点:
- 以人为本,源头赋能。RSAC 2020的主题为“Human Element(人的要素)”即所谓人是安全的尺度,DevSecOps理念提及“安全是每个人的责任”,所以如何更好地提升我们安全人员的能力、如何更好地赋能整个安全团队是首要工作;
- 统一入口,把控源头。统一开源组件引入入口及流程的规范,建立统一的单一可信源头;
- 安全前置,资产梳理。通过SBOM(Software Bill of Materials,软件物料清单)等技术和管理手段,使资产更加清晰透明,并进行系统化的梳理。
- 分批整改,积极防御。尤其在运营阶段,通过诸如RASP、BAS等积极防御技术,主动帮助现代应用具备威胁免疫能力。
接下来以Log4j2.x远程代码执行漏洞为例,与大家探讨重大典型开源组件漏洞带来的影响。
2021年12月9日,Log4j2.x远程代码执行漏洞爆发。由于自身两大特点,它被称为核弹级漏洞:第一,Log4j2.x是Java生态中的开源日志框架,该框架出现漏洞属于Java语言生态基础库中的高危安全问题,而且基础库的相互引用使它产生了指数级别的影响,经粗略统计,有70%左右的Java应用受到影响;第二,该漏洞的触发几乎无前置条件,可以很容易就利用该漏洞实现远程命令执行。这两大特点使得Log4j2.x远程代码执行漏洞能被快速传播和广泛地恶意利用。
这一软件供应链攻击事件能给我们带来哪些思考?
从治理的角度分析,第一,需要进行源头检测。在代码编写的过程中引入SCA和IAST工具,从而在源头编码环节就尽量避免引入一些有漏洞的组件和成分。第二,应用需要出厂免疫。如何将RASP能力嵌入开发的数字化应用中,使之具备免疫0day等未知漏洞风险的能力。第三,在整个软件供应链安全过程中,将运营环节和编码环节打通,通过SCA和SBOM这样的技术或者管理动作,构筑安全可信的制品库。
新一代代码疫苗技术进化之路
接下来分享软件供应链安全治理和运营的一项关键技术。
网络安全技术在不断演进,从早期的网络边界过滤分析技术比如WAF、防火墙、IDS/IPS,发展到主机环境检测响应技术比如EDR,再到当下应用运行时情境感知技术,技术门槛越来越高,对于未知威胁的检测和响应动作越来越细腻,得到的结果更加细粒度比如能发现云原生场景下的异常行为,从而帮助更好地搭建下一代安全体系。
传统的白盒和黑盒概念早在2002年就被提出。而为了在敏态环境下实现自动化的应用风险检测,于是在2012年IAST诞生了。又过了两年,到2014年,在传统WAF、IDS/IPS的基础上,RASP也面世了。并且可以看到一个大的趋势,运行时应用风险检测技术IAST和运行时应用风险防御技术RASP通过单探针在快速地进行深度整合,也即发展成为悬镜原创专利级代码疫苗技术。
基于运行时的单探针,代码疫苗技术能进行更多安全管理动作和安全检测响应动作,既能在开发测试环节里通过IAST对应用安全风险进行检测,对API这个现代应用“血液”进行挖掘,也能在部署和运营环节通过RASP实现应用风险自免疫以及对运行时敏感数据流动的追踪。
单就IAST灰盒安全测试技术进行分析,它分为狭义和广义两种。狭义的IAST就是指运行时插桩技术,主要分为主动的交互式缺陷定位和被动的动态污点追踪,能够在几乎不产生脏数据的情况下对现代应用风险主动进行发现。广义的IAST相较狭义的而言,引入了流量学习技术和日志分析技术,在不便插桩或者复杂小众的开发语言场景下,可发挥额外作用。
需要特别注意的是,不管是在测试验证环节还是在常态化运营环节,IAST都比较依赖于用户点击的流量,但用户点击在一定程度上呈现正态发布。所以可以通过主动模拟点击技术来补偿。
IAST技术相较于传统的白盒和黑盒,具备一些比较大的技术进化优势,比如第一,能更细粒度地检测出现代数字化应用的组成成分,尤其是第三方开源组件、框架和依赖;第二,更好地挖掘分析API ;第三,对敏感数据进行追踪,相较于传统的边界式API检测,这种运行时检测,能够帮助更加清楚地挖掘现代数字化应用“血液”里的堆栈信息,并更加精准地追踪整个敏感数据的流向。
分析完IAST,再来探讨下代码疫苗技术中的另外一项关键技术RASP。RASP通过轻量级的单探针、统一管控平台和积极防御插件,不仅能够覆盖OWASP Top10中的主要通用漏洞以及文件读写、数据库访问、表达式执行等异常行为,而且还能进行检测响应与攻击分析从而对重大漏洞进行实时拦截,并利用虚拟热补丁为漏洞修复争取时间。总而言之,RASP为现代数字化应用提供了积极防御的能力。
将RASP与传统的WAF、EDR端点检测响应做简单对比,可以发现RASP在对0day这类重大未知漏洞、第三方组件漏洞如内存马这类Webshell利用以及恶意异常行为利用的防御上具有明显的技术优势。
代码疫苗技术可以在SDL流程初期的编码环节就开始介入,检测现代数字化应用的中高危漏洞,并在单元测试、功能系统测试、业务验收测试等环节提供第三方开源组件漏洞的检测能力。无论是通用漏洞、业务逻辑漏洞还是镜像中的异常行为,代码疫苗技术都能覆盖。在部署和运营环节,代码疫苗技术能提供积极防御与未知威胁免疫的能力。
以Log4j2.x案例为例,具体分析代码疫苗技术如何防御未知重大漏洞。Log4j2.x是Java语言的开源日志框架,其远程代码执行漏洞的利用分为三个环节:
- 攻击者发一些恶意的数据包给目标的应用程序;
- Log4j2.x核心组件的漏洞点被触发,攻击者向LDAP服务发起请求;
- 恶意构造的请求触发漏洞,进而利用漏洞达到远程代码执行。
在整个过程中,代码疫苗技术可以在SSRF环节及命令执行环节进行精准的拦截,因为所有的攻击手段最终都可以归纳为敏感命令执行、敏感文件读写、敏感数据库的操作等。可以显著地看到,代码疫苗技术尤其是RASP技术,在对这类重大未知漏洞的响应和缓解上,拥有巨大优势。
为了帮助企业高效进行软件供应链安全风险治理和运营,悬镜打造了一个软件供应链全流程风险治理框架,核心分为三个阶段:源头治理阶段、研发过程治理阶段、上线运营治理阶段。又分为六个环节,在每个环节通过DevSecOps敏捷工具链及配套的软件供应链模块化安全服务,提供软件供应链全生命周期的安全管理。
在该框架中,我要重点分享对SBOM的认知。过往会认为SBOM在采购环节、开发环节甚至交付环节发挥了比较大作用,能帮助建立统一的可信制品库。但实际上如果借助代码疫苗技术中的RASP技术,在运营环节利用SBOM也能对软件成分进行非常精准的梳理。通过研发运营安全一体化实现软件供应链全生命周期的综合治理。
图3 子芽发表出品人洞察
DevSecOps敏捷安全技术演进趋势
近期,IDC发布了2022年云安全热点技术相关报告,将DevSecOps定义为驱动云安全的变革型技术。前面提到的新制品、新发布、新技术、新环境这四个关键的新变化,正是促使DevSecOps成为云安全变革型技术的关键因素之一。
DevSecOps不仅要求“安全左移”,而且还要求结合云原生场景以及基于上述四大新变化实现“敏捷右移”,核心是四个关键性要素:
- 文化。DevSecOps的文化是责任共担,安全是大家的责任;
- 流程。将流程各环节打通,包括诸多部门的合作、诸多流程执行的动作以及自动化、安全卡点等;
- 技术。倾向于引入智能化的适合敏态开发的自动化安全技术;
- 度量。BAS技术在其中能发挥巨大作用。
究竟如何搭建相对完善的DevSecOps/SDL体系并更好地落地实践?分三个阶段。
第一个阶段,我们悬镜称之为“左移打基础”。在这个阶段,最重要的事情是上线前应用安全风险的诊断。IAST交互式应用安全测试工具凭借其可以将风险定位到具体代码行的特性,能非常精准地识别出应用的安全风险包括第三方开源组件中可被利用的缺陷和风险等。IAST会成为整个DevSecOps/SDL建设的关键入口点。第二点,要关注SCA/OSS这类软件成分分析工具和开源治理。第三点,需要一些实训服务。
第二个阶段是“左移建体系”,包括在流程中引入统一的SDL安全开发赋能平台,在需求分析和架构设计阶段进行轻量级威胁建模,寻求SDL/DevSecOps体系咨询规划服务以及软件安全制品库建设服务。
第三个阶段是“敏捷右移”和效果度量。在这个阶段,首先是BAS持续威胁模拟和安全度量的工具会成为关键的安全设备,通过远程自动化的持续威胁模拟以及动态的安全验证,评估现有安全体系在正常运营情况下的有效性。第二点,RASP的引入,会使开发的数字化应用具备出厂自免疫的能力。第三点,需要引入安全开发能力成熟度评估服务,通过敏捷安全工具和配套的模块化软件供应链安全服务,构筑起适应自身业务发展、面向敏捷业务交付并引领未来架构演进的内生安全开发运营体系。
最后与大家探讨和分享我们悬镜一年一度发布的DevSecOps敏捷安全技术金字塔。从2.0版本的金字塔中可以看到:
- DevSecOps的核心愿景是构筑一个信任和弹性的研运一体化环境,使得组织能够更加敏捷地、安全地、充分地投入软件供应链安全建设和保障当中;
- 自动化、敏捷和情境化是DevSecOps建设的技术基础,不仅要求全量及增量检测实现高精度低误报,还需要具备业务透视及数据协同分析能力,即云原生场景下实时的检测响应能力;
- 一个明显的变化是,不仅需要关注应用本身地安全风险,还需要关注CI/CD管道、容器、API等新型基础设施引入以及人为因素带来的异常安全风险;
- 技术驱动从安全前置到安全左移再演进到当下敏捷右移,云原生安全技术进入了更深融合阶段,成为组织上云重点实践要求。
我的分享就到这,谢谢大家!
最后
以上就是欣喜大米为你收集整理的子芽:云原生场景下软件供应链风险治理技术浅谈的全部内容,希望文章能够帮你解决子芽:云原生场景下软件供应链风险治理技术浅谈所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复