子芽:新一代代码疫苗技术,让数字化应用从容免疫未知威胁!
作者: 日期:2022年03月14日 阅:3,659

纵观互联网发展的历史,安全问题一直如附骨之疽从未消亡。层出不穷的网络攻击事件对个人、企业甚至国家产生了严重威胁。而随着企业数字化转型的加快,软件开发安全被聚焦,将安全嵌入软件开发和运维的每一个环节,即DevSecOps的理念和模式,成了行业的新宠儿。

2022年3月3日,在CIS 2021网络安全创新大会的DevSecOps应用与技术专场上,专场出品人同样也是国内DevSecOps敏捷安全领导者——悬镜安全的创始人兼CEO的子芽做了主题演讲,畅谈了悬镜在DevSecOps方向的新兴技术与落地应用,以下是分享的全内容:

演讲实录

今天我分享的议题是《新一代代码疫苗技术进化之路》,一共分为四个部分。

现代软件安全风险概述

首先,我们一起思考下DevSecOps软件供应链安全的痛点。

第一个,“看不清”。大家有一个共识是,现代的软件都是组装的,而非纯自研的,其中有78%到92%的成分是第三方的开源框架和库。那么如何才能有效地保障整个软件供应链的安全?

第二个,“查不到”。从早期的基础安全建设到现在的各种安全能力建设,安全能力是在逐步提高,但仍然会被业务逻辑漏洞或者高进阶的新型攻击威胁打穿。那么如何才能持续地验证现有防御体系的有效性,进而更好地保障业务安全?

第三个,“防不住”。虽然APT等高阶技术在持续升级,但是会发现一些类似前段时间比较火热的Log4j2这样的重大漏洞甚至核弹级漏洞,它不止是一次爆发,未来仍将持续地爆发。面对这样的“0day”漏洞,如何搭建积极防御体系,实现应用的出厂自免疫?

以上是从整个软件供应链安全中提炼出来的比较重要的三个痛点,带着这三个问题,一起来看一下现代软件有哪些安全风险面。

大概是每三年,OWASP TOP10会做一次更新,我们能从中看到最主流的Web通用漏洞。针对Web通用漏洞,有比较多的技术手段来检测和防御。而对于业务逻辑漏洞,业内目前更多采用人工的渗透测试来做辅助。这两个安全风险面是我们已有的共识。

开头提到过现代软件的成分大部分是第三方的开源框架和库,所以开源成分缺陷及漏洞是第三个风险面。

最后,我们知道,2021年5月,Apiiro公司获得了RSAC创新沙盒大赛的总冠军。它之所以能够获胜,就是通过深度学习和UEBA等交叉技术来解决从开发到上线过程中引入的异常行为代码。这是第四个风险面。

带着这样的全新认知,我们需要重新审视、重点思考如何有效治理以上风险。在谈到具体治理之前,我先聊聊下面这三部分内容。

先列举近些年软件供应链攻击的几个关键节点。从早期的棱镜门事件,到开发工具XcodeGhost的污染,再到捆绑下载、升级劫持等,呈现出一个很清晰的趋势:从早期的SDLC自身安全到供应链分发过程中的安全,变得越来越生态化,越来越多样化

再分享下软件供应链技术的跃迁式演进。开发体系在演进,从瀑布式开发到敏捷开发再到DevOps研运一体化。应用架构在演进,从大型系统到SOA再到微服务。此外基础设施在云原生化。额外补充一点,就是软件开发形式在演进,从闭源到混源再到以开源为核心驱动。

最后关注下网络安全技术的三次关键演进:

第一次演进:应对早期的攻击事件,检测防御技术更加强调网络边界过滤分析,包括防火墙、WAF、下一代WAF、IDS、IPS等,基于流量监控,它的优点是在交付部署过程中更加轻量;缺点是比较粗犷,没有办法看到更多的细节。

第二次演进:主机环境检测响应。这些年兴起的EDR等终端响应技术,能在现有技术的基础上,发现高阶入侵行为,继而帮助用户做更好的判断。

第三次演进:当下,包括未来三五年,可以看到一项技术在快速地崛起和普及,就是应用运行时情境感知。它的优点是自适应自进化。

所以,具备自适应和自进化特点的代码疫苗技术应运而生。这也是接下来我将重点讨论的技术。

代码疫苗技术进阶分析

就像人体的免疫细胞一样,代码疫苗技术不是传统的外挂式安全,而是既能做到业务的透视又能成为功能的解耦。代码疫苗技术有两个核心:基于单探针插桩的IAST技术和基于单探针插桩的RASP技术。

一项新兴技术从提出到被行业成熟运用,一般要经历十到十五年,比如常提到的SAST和DAST是在2002年提出,而真正普及是在2012年,还有传统的WAF、IDS、IPS也是如此。IAST技术和RASP技术分别是在2012年和2014年被业内提出,而Gartner却已经数年把它们列在十大安全技术中。

我们悬镜观察到并做出了一个预测:IAST探针和RASP探针未来会整合成一个探针。这不是简单的整合,后面会详细说明。

IAST技术提供的交互式安全测试能力、API深度挖掘分析能力、自适应出厂免疫和敏感数据的动态追踪,都是代码疫苗技术非常擅长的领域。

IAST技术在代码疫苗技术中的实践分为狭义和广义两部分。严格意义上,狭义的IAST更加依赖插桩技术,比如交互式缺陷定位(主动插桩)和动态污点追踪(被动插桩)。在此基础上,以流量学习为核心,就成了广义的IAST。无论是哪种,我们都希望它能将前面提到的通用漏洞、业务逻辑漏洞以及更高阶的威胁精准地检测出来,同时自动化地适应敏捷安全迭代。

IAST主要关键技术

对比下几种AST技术的优劣势。API识别分析方面,通过传统的边界防御方式,能够获取一些具体的URL,但是看不到一些更加详细的函数调用栈。而基于插桩方式的IAST技术在这方面就有比较大的优势。另外,关于SCA软件成分分析,目前整个行业在技术痛点上面临这样两个问题:

(a)做开源治理、软件成分分析的时候,现有的工具可以报出很多的组件,但有多少是软件运行时动态加载真正用到的?

(b)检测出来的成千上万个漏洞,又有多少是能被真正利用的?

这是我们悬镜认为在真正有效治理过程中相对比较关键的两点,而这两个问题都能被基于单探针动态插装方式的IAST技术所解决。

虽说每一项新技术都有它特殊的时代背景,但是IAST技术却有个非常大的优点,就是它既可以解决敏捷时代DevOps环境下的增量问题,也可以解决传统的SDL环境下的存量问题。

几种AST技术的优劣势

接着聊一聊代码疫苗技术中另外一个关键技术——RASP技术。PASP技术也是基于探针,底层核心逻辑是对一些关键的行为函数进行hook,主要是针对一些异常行为操作,特别是一些关键操作。这相对于传统的WAF有什么不同呢?

打个比方,传统的边界网络过滤就像是排队过安检,一个一个地筛查,很容易造成业务的拥塞。但RASP技术是监测一些异常行为,比如发现保洁阿姨坐在了CEO的办公工位上,并打开了电脑,自然会认为这种动作是异常的,而RASP技术就是时刻精准且低消耗地捕捉异常行为,并进行实时的阻断。

经常有朋友和我讨论RASP与WAF、EDR的区别和互补。其实悬镜目前和包括腾讯在内的战略合作伙伴就在做相关联动,比如悬镜的云鲨RASP和腾讯的EDR

提一个额外的话题,去年的时候我曾预测过,RASP会在护网中大放异彩。我想谈谈这里的核心底层逻辑。近些年,护网催生了很多新兴的技术,推动了很多安全公司的成长。很多新兴技术有很好的检测效果,给用户带来了很好的帮助,但绝大部分这样的技术只是解决了前面提到过的“看不清”问题,那么谁来做“最后一公里”的积极防御?这方面,代码疫苗技术,RASP技术,有比较好的价值。特别是针对后面要讲到的Log4j2这种未知漏洞、高危漏洞利用的免疫,是RASP擅长点之一。

做个小结。我们悬镜不是去做技术的堆叠,而是希望能够把我们的技术形成解决方案,成为一个有效的闭环,在一个新兴的敏态场景下,实现漏洞的发现、验证、分发、修复一体化和自动化

诚然,在传统环境下是可以进行人工渗透,可能渗透一周或是两周,然后发现更精准的问题。但是如果在DevOps场景下,一天build(编译)十几次或者一周build十几次,是不可能给很多时间做人工审查,那么就需要自动化和智能化,代码疫苗技术在这里就会起到非常大的作用。除了在DevOps这种自动化场景中,其实在传统的SDL场景中也可以使用代码疫苗技术。

基于代码疫苗技术的应用风险闭环管理

关于代码疫苗技术在未来软件应用开发过程中的作用,可以下一个结论:未来开发的任何一款软件数字化应用,应该都会经历一个相对成熟且日趋完善的安全开发体系,注意用的是“相对成熟”,因为还是要匹配每个组织自身的业务规模和经济情况。如果过往开发的东西是一个原生应用,那么未来开发的软件应用会是更加安全可信的应用。

这里面有两层含义:第一个是需要开发的应用都会经历相对完善的软件开发体系和流程;第二个是应用本身会应用代码疫苗技术,让它实现对风险的自发现和对威胁的自免疫。

举一个Log4j2的案例。前段时间,很多业内朋友在媒体上讨论,认为Log4j2是核弹级的漏洞。那么为什么大家很重视它?核心原因有两点。第一个,Log4j2是Java生态里面一个非常重要、主流的开源日志记录框架,70%以上的Java应用都用到了它,再算上各种直接和间接的引用,所以它的影响范围是呈指数级增长的。第二个,Log4j2漏洞的利用几乎是无条件,所以带来了广泛的非常大的影响。这个漏洞的核心原理是,它有一个功能叫lookup,主要是允许用户做更多自定义的日志配置,而其中一个叫JNDI的lookup有缺陷,正常情况它允许用户去读取一些变量数据到日志中,但是如果没有对它进行安全过滤,就会造成JNDI的注入,进而可以加载一些恶意应用,实现RCE。

绝大多数的安全异常核心是一些异常行为操作。在整个Log4j2中至少有几个点,我这里列举两个点,就是关于SSRF,可以在它做服务端的请求伪造时对它进行很好的识别和拦截,也可以在它执行一些恶意命令的时候对它进行比较好的防御。

总的来说,代码疫苗技术不仅会对这样重大的漏洞进行积极响应或者应急响应,还会对这种未来将持续存在的漏洞进行主动免疫。

在讨论代码疫苗技术的最后,我分享一下基于代码疫苗技术的DevSecOps智适应威胁管理体系。在计划和编码阶段,可以采用情景式需求分析和威胁建模。在编码测试、验证等环节中,可以进行灰盒测试和应用发现,也就是开源治理。在部署和上线后,可以采取RASP的自免疫积极防御。

基于代码疫苗技术的DevSecOps智适应威胁管理体系

DevSecOps/SDL体系建设实践

分享完了代码疫苗技术,需要再次强调的是,一个完善的DevSecOps体系不应该是一些先进技术工具的简单堆叠,而是需要贯穿流程、文化和把相关技术进行一个深度的自动化的关联分析。

在DevSecOps体系下,建设安全开发体系或者敏捷安全体系,是分步骤、分阶段的,企业要结合自身情况,考虑一期二期三期分别做什么。这里给一个简单的参考:一期实现上线前的自动化安全风险诊断;在二期的时候,基于一期的成果,先治理再打通流程;在三期的时候,形成敏捷右移。一句话总结就是“安全体系的左移和敏捷的右移”,但是还是需要结合自身不同的场景做一些针对性的设计。

我们悬镜的核心目标是帮助组织或者企业,使它们未来开发的所有应用,从原生应用到安全可信的应用,第一能够适应业务的弹性发展,第二能够面向敏捷业务的交付,第三要有持续的架构演进的内生安全,第四要具备研运一体化的体系。

DevSecOps敏捷安全技术演进

这是我们发布的第二版DevSecOps敏捷安全技术体系,基于第一版,我们做了一些梳理和调整。这个体系首次公开是在去年7月21日的DSO大会上。

DevSecOps敏捷安全技术金字塔V2.0版

在整个DevSecOps敏捷安全技术体系中,除了前面提到的归结为代码疫苗技术的IAST技术和RASP技术,我还想分享这三项技术。

首先,我想为BAS做个代言,它是一种安全度量技术。安全体系的度量,不仅需要全流程平台做支撑,还需要一些自动化技术手段做持续的威胁模拟,就是当防御体系全面开启的情况下,持续地去验证体系的有效性。这就需要一项威胁模拟的技术,去“7×24”地持续地在外围做渗透,并且需要在防御体系的内部有一个agent或者探针去持续地感应和协同。这种技术就是BAS。

在我们悬镜整个的积极防御体系里面,代码疫苗技术和BAS技术是深度整合的。这是一种探索和探讨,不是技术的兜售或者一味的炒作,因为BAS是真能给护网和日常应急带来落地实际的作用。此外,我们悬镜还非常看好BAS技术和RASP技术的联动。

第二个,我想提一提一些朋友问的Fuzz技术。这里分享一下我们悬镜对Fuzz技术的认知。我们虽然把API的Fuzz技术,即模糊测试技术,放进了我们的敏捷安全技术金字塔中,但是仍然认为它的应用还需要几年时间的沉淀和进化。

Fuzz技术有几个特征:第一个就是使用门槛较高,利用Fuzz产生的结果不见得是我们想要的直接结果——漏洞,更多的是一些异常,所以需要安全研究人员对结果进行深入分析;第二个,对于计算设备的要求很高,即便有较好的算法,但如果想高效率地跑出结果,就需要更多硬件设备去辅助;第三个,从结果的角度看,要考虑一项技术、一项工具、一项产品的市场效应,目前来看,Fuzz在工控协议方面效果较好,第一年就能发现一些异常,甚至一些“0day”,但是后续第二年、第三年复购,是否仍然能发掘出更多的成果呢?这个是要探讨的。

另外,就国内的现状来看,Fuzz还是在军工市场、政府市场中用得多一些。如果有朝一日,它能在泛互联网、金融等这些对新技术落地应用持更加积极态度的领域里面有更好的应用,那么它离成熟的时机就更加接近了。

第三个,提一下AVC,就是应用漏洞关联。无论是在敏捷安全技术金字塔中,还是在日常做SGL搭建的过程中,IAST、SCA、黑盒DAST等技术只是某个阶段比较适合的工具,但是如何把发现的结果进行自动化的关联分析并且结合自身业务价值、项目价值排出优先级,这是我们悬镜后面重点要解决的问题。目前欣喜地看到,不止是悬镜安全,还有国际上的一些厂商,也在这一领域进行了积极的实践,而且在实际落地的应用中,是有较好的成果突破。

最后,我想做一个总结。很感谢大家能够抽出宝贵时间来参与一年一届的DevSecOps应用与技术论坛。希望能够通过我们悬镜安全、FreeBuf,还有国内国际厂商的力量,把先进的技术研究成果、甲方需求的变化以及行业最佳实践的进展分享给大家。

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章