代码疫苗技术,是一种通过运行时存根技术检测应用漏洞,保护安全的新一代安全技术。涵盖IAST技术和RASP技术,连续数年被Gartner评为十大安全技术。前不久的【TTALK】系列活动第七期,特邀玄境安全CTO宁哥做客直播间,与大家分享代码疫苗的原理、实现和实战经验技术。【TTALK】也整理了本期分享的精彩内容,希望能给读者带来一些启发:代码疫苗的概念近年来,在技术创新的驱动下,软件技术上下游产业相继相继出现一直在加速。开发模式、应用架构、服务器和基础设施的升级,使得应用软件的开发过程越来越复杂。同时,随着软件复杂度的增加,软件安全面临的问题和挑战也越来越多。代码疫苗技术是一种能够通过运行时检测技术实现软件运行时风险自我发现和威胁自我免疫的新一代安全技术。其核心内涵主要包括四个方面:无需代码安全专家逐行分析源代码无需修改调整原有代码逻辑无需维护复杂的流量过滤策略和规则不会忽略90%以上引入的风险通过应用中的第三方组件类似于疫苗在医学领域的定义,码疫苗技术不是传统的外挂安全,而是专注于从开发的源头端规避安全风险,构建更有效的内生活性应用防御系统。帮助编码疫苗技术实现这一目标的两大核心是IAST技术和基于单探针插入的RASP技术。IAST的全称是InteractiveApplicationSecurityTesting,是近年来新兴的安全测试技术。与SAST白盒安全测试技术和DAST黑盒安全测试技术这两种传统的安全漏洞解决方案相比,IAST漏洞检出率更高,适应场景更多,更适合当前流行的DevOps场景。RASP代表运行时应用程序自我保护。与传统的流量层WAF或IDS检测不同,RASP与应用的耦合度更高,通过运行时检测检测应用的运行环境。这样,RASP就可以拦截应用程序对系统的所有调用,确保其安全,从而实时检测和阻断各种安全攻击。代码疫苗技术结合了IAST技术的漏洞检测能力和RASP技术的攻击防护能力。将这两种技术集成到一个统一的IAST和RASP探针中,实现从漏洞检测到漏洞防护全生命周期的统一检测和防护方案。CodeVaccine技术原理无论是IAST技术还是RASP技术,都依赖于runtimeinstrumentation来实现。RuntimeInstrumentation是在应用层启动后,通过更换函数体或在函数前后插入检测代码来实现的。通过插入代码,可以快速获取关键点运行的应用程序的数据信息。需要注意的是,由于不同语言之间运行环境的差异,不同语言实现存根的方法也会有所不同。以Java为例,由于Java具有Instrument的特性,在类加载的过程中,需要对关注的关键类和方法的字节码进行修改,以达到插入检测逻辑的目的。从概念上看,IAST可分为广义和狭义。广义上,IAST包括流量学习和日志分析两种模式,通过对镜像流量和日志等数据的回放和分析来达到检测目的。另外,广义IAST对研发测试等用户是完全透明的,没有流程入侵,不依赖于应用程序编程语言。狭义的IAST特指运行时插桩模式,可以帮助普通研发测试人员快速完成业务安全测试,准确定位漏洞细节并提供修复指导。同时,narrowIAST分为两种模式,一种是activeIAST,通过stubinsertion分析流量数据,另一种是passiveIAST,采用动态污点分析技术。动态污点分析技术可以基于运行时检测跟踪外部可控数据对应用的影响,进而分析外部数据在应用内部的流动情况,判断应用是否存在漏洞。由于动态IAST具有无重放数据、无脏数据、可处理加密签名接口、适应复杂场景等优点,目前适用场景广泛。在动态污点分析技术中,污点传播的整个过程可以分为三个阶段:污点输入、污点传播和污点收集。在污点输入阶段,所有的外部数据都默认为不可信数据,因此需要在外部数据进入应用程序时为其添加污点标记。在污点传播阶段,主要目标是跟踪污点数据的传播过程。由于外部数据在进入应用程序时已经被污染,当被标记的数据进行操作或字符串连接等操作时,生成的新数据也会带有污染标记。在污点收集阶段,需要注意可能触发漏洞的函数。判断带有污点的数据是否会在SQL执行或文件读写等敏感函数上聚合。如果发生这种情况,则意味着应用程序中这些功能的执行流程可能存在漏洞。当然,如果在污点传播阶段,携带污点标记的数据遇到清洗函数,并成功执行过滤操作或其他安全操作,则数据携带的污点标记将被清除,以确认该链路安全。这就是动态污点分析技术的工作原理。RASP的核心是通过检测技术向应用程序中注入保护逻辑和保护功能,深入到应用程序运行时的环境,分析和理解数据流和事件流,以检测和预防不可预见的安全威胁和攻击事件(例如0day攻击)。这种运行方式使得RASP解决了WAF检测规则与功能无法匹配、服务端防御方式不可知、变形和未知威胁防御薄弱、微服务场景难以适配的痛点.RASP能够获取运行时上下文数据。其中,第一类数据是HTTP请求和响应数据以及各种RPC协议,比如dubbo的请求和响应数据,以及gRPC等各种RPC框架。第二类是相关函数的执行数据,包括函数接收到的完整参数、调用函数的对象实例、动态运行时函数执行的返回值。通过获取运行时函数整体执行的状态,可以判断运行函数执行过程中是否存在关注数据。第三类是函数执行时的调用栈。获取完整的函数调用栈,方便研发分析漏洞和攻击。另一方面,也可以通过函数调用栈来分析攻击者的行为。通过函数调用栈可以分析出一些常用的反序列化攻击手段。第四类是应用配置信息。获取应用的各种安全配置、代码内属性配置等信息,可以全面了解应用是否执行了安全策略。基于获取的运行时上下文数据,可以对RASP进行分析和使用,根据采用的算法或检测逻辑可以分为几类。第一种也是最常见的方法是规则方法,它对获取的参数或HTTP请求进行综合规则匹配。第二类是RASP的高亮功能,它是基于词法分析的。由于RASP获取的数据更加全面,RASP可以对完整的输入如SQL、命令执行等信息数据进行词法分析,判断关键函数执行点的数据是否存在异常。第三类是行为和运行栈检测,主要用于检测敏感函数的执行情况。例如,当WebShell被植入系统后,它会通过变形和混淆来逃避检测,但在执行系统命令或文件操作的过程中,肯定会调用底层运行时API。这时候通过行为和运行栈分析,就可以知道执行调用的函数或函数调用栈。第四类是应用运行配置检测,即代码中的动态安全配置等配置检测。例如,在添加了一些安全配置后,一些漏洞就无法再被利用了。这包括诸如防止SQL注入的预编译方法,以及XXE关闭对外部实体的访问的方法。这样才能全面了解当前应用中存在的安全保护情况。结合以上四类方法,可以实现应用程序运行时的自我保护。在整体防护体系中,RASP会与各个应用耦合,但与WAF、IDS/IPS、防火墙等防护并不冲突。RASP适用于现代开发或应用架构,伴随着应用和微服务。因此,这些安全解决方案中的每一个都是纵深防御系统中的一个环节。码疫苗技术实践码疫苗技术实践场景主要有四类。第一类是DevOps的检测和保护的集成。由于probe比较轻量,可以随pipeline一起发布上线。在开发测试过程中,可以使用IAST进行漏洞检测,上线后可以开启RASP进行漏洞防护,实现全流程检测和防护一体化,让DevOps更高效。第二种场景是红蓝对峙。在这种情况下,RASP充当高级漏洞攻击防护工具。目前在红蓝对抗中会更多的使用0day、1day或者一些未公开的EXP来攻防。传统的流量手段很难防御,但是RASP可以应对一些高级攻击。第三类场景是对突发漏洞的应急响应。RASP提供基于行为和调用堆栈位置的威胁检测。这可以在一定程度上缓解0day或1day攻击,为漏洞修复争取时间。您还可以利用RASP提供的热补丁功能,通过一些简单的配置来抵御第一波漏洞攻击。第四类是网上申请的自我免疫。在容器化环境下,可以将探针和应用打包,让应用上线后有自己的防攻击效果。码疫苗技术同样关注性能和熔断问题。码疫苗技术也会提供一些基于CPU或者内存,QPS/TPS的熔断策略。例如,代码疫苗技术会提供CPU、内存、QPS/TPS的阈值。当超过该阈值时,探针将进行断路器降级,在不影响业务运行的情况下保证业务优先级。码疫苗科技对IAST和RASP有一套完整的应用风险闭环管理。在IAST层面,发现漏洞后自动进行漏洞验证,通过在参数点添加payload进行数据回放(回放量小)来验证漏洞。若存在漏洞,将通过对接平台通知企业相应负责人。此时负责人可以修复漏洞或者选择启动RASP的热补丁功能模块,对漏洞进行临时保护。最后以2021年Log4j2组件远程代码执行漏洞防护为例,梳理一下代码疫苗技术的防护流程。当应用程序的某个接口或接口背后的实现应用Log4j2组件,并在模块化的JNDI的Log4j栈中开启服务输出和日志输出时,系统就会存在该漏洞。对于攻击者来说,当检测到漏洞时,可以根据漏洞的接口发送HTTP请求,将JNDI注入的数据传入Log4j的日志写入操作。当执行日志写操作时,会触发该漏洞,请求攻击者的服务器加载外部类文件到应用程序中,从而导致远程代码执行。在这个过程中,有几个步骤可以被RASP拦截。首先,在发送日志写入请求时,内部会发送一个类似SSRF的请求,这是RASP可以进行的第一层保护。其次,当攻击者进行JNDI注入时,RASP也可以拦截该操作。最后,当攻击者执行命令时,RASP也会对这种操作采取相应的防护措施。在清楚漏洞原理后,可以利用热补丁准确插入漏洞点,同时基于插桩技术,梳理出应用程序依赖的所有组件和版本号,可以结合SCA或OSS的功能分析组件漏洞。因此,代码疫苗技术可以更好地防范Log4j2等零日漏洞,为漏洞修复争取宝贵的时间。嘉宾介绍:宁戈,玄境安全CTO,拥有10年安全前沿技术研究实践经验,长期从事系统软件和应用软件漏洞研究和自动检测技术研究,专注于IAST、RASP和其他运行时检测防御技术和DevSecOps系统化产品化实践。负责玄境IAST、RASP、SCA等多条产品线的设计开发。拥有多项原创发明专利授权,多次参与国家级科研和安全保障项目,在网络安全领域获得多项国家级奖励。
