APP下载

Web应用安全检测技术研究与分析

2022-02-10郭新海张小梅蓝鑫冲

信息通信技术 2022年6期
关键词:靶场安全漏洞漏洞

郭新海 张小梅 刘 安 丁 攀 蓝鑫冲

中国联通研究院 北京 100048

背景

Web应用作为信息化和数字化时代的重要应用程序一直被各行各业所广泛使用,其作为互联网的重要组成部分,与人们的工作、生活密切相连。正因为Web应用的使用广泛,其面临的网络安全攻击也最多,近年来针对Web应用发起的攻击行为层出不穷,如典型的注入类攻击、跨站请求伪造攻击、XML外部实体引用攻击、数据泄露攻击等[1]。根据Gartner的调查统计,信息安全攻击有75%都发生在应用层面而非网络层面上,有效保证Web应用的安全已经成为关系到整个业务系统的重中之重。从Web应用安全防护之初到如今,其防护手段仍然主要依靠防火墙、防毒墙、Web应用安全防护网关、Web漏洞扫描等,这些手段注重的是在Web应用上线运行后,在其外围建立多重的安全防线和纵深防御体系。通过这些手段的有效运用,在一定程度上阻止了攻击行为,保证了Web应用的安全,但是并未从Web应用自身的防御水平出发,提高其自身的免疫力。

如今,开源和云原生时代已经到来,国内外的安全研究都逐步开始从单纯构筑应用外围纵深的防御体系转移到构筑外围防御体系和增强应用自身免疫力并重的方向上来,特别是软件供应链安全提出后,人们开始更加重视整个软件供应链的安全。开源和云原生技术的应用,使软件供应链越来越趋于复杂化和多样性,因此针对软件供应链的网络攻击也就越来越多,并且呈现出投入少、获利多的特点。Web应用作为软件应用的重要组成部分也正在遭受软件供应链所受到的各类安全攻击,有效保证Web应用安全,防止攻击者以Web应用为起点进而对内网进行端口探测、漏洞挖掘与利用、横向渗透、特权提升等攻击,才能够进一步保证大量业务系统的安全。因此,为更全面地保证Web应用安全,需要多种Web应用检测技术来对应用进行全生命周期检测,综合应用多种Web应用检测技术发现安全漏洞并进行修复,在应用上线之前使应用本身就具有良好的健康水平,从根源上消除大部分攻击发生的可能。

1 Web应用安全风险分析

Web应用自被广泛应用以来就面临着大量的网络攻击,OWASP(开放式Web应用程序安全项目)作为全球最权威的研究Web应用安全的开放社区,其提出的10项最严重的Web应用程序安全风险列表“OWASP TOP10 2017”中指出,Web应用所面临的10大类风险有:注入攻击、失效的验证与连接管理、跨站脚本攻击、不安全的直接对象引用、安全配置错误、敏感数据泄露、缺少功能级别的访问控制、跨站请求伪造、使用含有已经漏洞的组件、未验证的重定向与转发。这些风险作为典型的安全问题已经广泛被攻击者所利用,并且成为Web应用系统面临的主要威胁。

如今,随着国内外科技的高速发展,软件面临的攻击在原来的基础上已经扩展覆盖到了其整个供应链,并且呈现出多来源化、覆盖面广、攻击方式多的新特点,新的攻击类型主要有源代码污染、预留后门、开发工具污染、升级劫持等[2]。

Web应用作为软件的重要部分在当前形式下也自然面临着传统的Web攻击和软件供应链攻击的双重威胁,针对其所面临的各类攻击,需要将安全检测方法覆盖到应用的开发阶段、测试阶段以及运营阶段,以SDL软件安全开发的生命周期和DevSecOps[3]为基准,将安全检测技术贯穿于应用的整个生命周期[4]。

2 Web应用安全检测方法原理和效果分析

目前针对Web应用安全检测的方法存在多种,主要可以分为静态应用安全检测技术(Static Application Security Testing,SAST)、交互式应用安全检测技术(Interactive Application Security Testing,IAST)和动态应用安全检测技术(Dynamic Application Security Testing,DAST),三大类技术[5]均能对Web应用的安全风险进行检测,并且互相配合覆盖了应用从开发到运营的整个生命周期。分析三类技术的检测原理、特点、使用场景和检测效果等,有助于针对具体的场景选择相应的检测技术,并更好地保证Web应用安全。以下将对三类技术进行分析和实验验证。

2.1 检测技术分析

2.1.1 SAST技术

在当前Web应用开发强调持续交付和开发周期不断缩短的情况下,应用系统在开发阶段成为了风险和漏洞大量引入的阶段,其来源主要有两个方面:一是开发人员自己编写的代码存在的安全风险和漏洞;二是开源组件或开源框架的引用所带来的风险和漏洞。要修复这些安全风险和漏洞,首先需要将风险和漏洞有效地检测出来。SAST技术能够在应用的开发阶段对源代码或二进制文件的语法、结构、过程、接口等进行分析从而自动化地检测出应用代码存在的安全漏洞[6]。另外,SAST技术除了进行应用代码审计功能之外,也随着软件供应链安全的发展增加了软件成分分析(Software Composition Analysis,SCA)功能,通过代码审计功能和SCA功能既能自动化地完成应用的代码检测又能对应用程序的开源组件和开源框架进行分析。

代码审计的技术原理主要是自动化地将源代码通过调用编译器或解释器转换成中间代码,然后明确源代码之间的调用关系、执行环境和上下文,并利用词法分析、语义分析、数据流分析、控制流分析、配置分析和结构分析等方法,分析程序的组成和特点,最终结合分析结果匹配已有的规则库,发现程序中的漏洞。

SCA技术对二进制软件的组成部分进行识别、分析和追踪,通过读取软件的lib文件或者pom.xml文件识别和清点开源软件(OSS)的组件构成和依赖关系,然后通过对比国内外的漏洞库如CVE、CNNVD和CNVD确定开源组件中存在的已知安全漏洞和潜在的许可授权问题等。

2.1.2 IAST技术

IAST技术是2012年Gartner公司提出的一种新的应用程序安全测试技术,如今随着软件供应链面临安全风险的增多开始受到广泛重视,IAST技术推动了整个安全测试工作的左移,该技术在应用的功能测试阶段同时进行安全漏洞检测,成为了SDL软件安全开发生命周期和DevSecOps安全工具链中的必备测试手段,该技术能有效地发现静态安全检测和动态安全检测无法发现的安全漏洞。

IAST技术具有两种代表性的模式,分别为插桩模式和流量代理模式[6],两种模式的原理不相同,下面分别说明两种模式的原理。

插桩模式采用污点跟踪和对底层函数进行hook的方法,利用插桩的Agent通过字节码注入的方式,将Agent自身融入到应用程序中,对应用程序输入的参数进行污点跟踪和数据标记,同时它还对应用系统的关键函数进行hook[7]。当受污染的数据进入hook点的时候,IAST就能对系统进行安全检测,定位安全漏洞所在的代码行位置,展示出风险参数或者风险数据的字节码流走向,同时上报安全漏洞。通过结合动态污点分析技术还能在线对Web应用程序所使用的第三方组件进行检测并匹配CVE、CNNVD和CNVD漏洞库,从而确定开源组件中存在的已知安全漏洞和潜在的许可授权问题等。插桩模式可以细分为被动插桩模式和主动插桩模式,两种插桩模式的原理图分别如图1和图2所示。

图1 IAST检测被动插桩模式原理

图2 IAST检测主动插桩模式原理

图1中被动插桩模式的漏洞检测流程如下:

1)终端用户向已经安装好IAST agent的Web服务器发送正常请求,正常请求到达Web服务器后,IAST的agent对请求的参数和代码流进行标记和跟踪;

2)agent将获取的信息传送给IAST服务器,IAST服务器依据内置的规则展示漏洞风险信息;

3)终端用户登录IAST服务器,可以查看Web服务器存在的安全漏洞和风险。

图2中主动插桩模式的漏洞检测流程如下:

1)扫描引擎服务器向装有IAST agent的Web应用服务器发起扫描测试任务,agent获取扫描测试请求并对代码流进行标记和跟踪;

2)agent将获取的信息传送给IAST服务器,IAST服务器依据内置的规则展示漏洞风险信息;

3)终端用户登录IAST服务器,可以查看Web服务器存在的安全漏洞和风险。

流量代理模式是将IAST系统设置为代理服务器,代理服务器收集到功能测试的流量后,IAST系统可以将流量复制一份然后对流量进行重新改造,改造成含有安全测试payload的流量包进行转发,根据应用系统返回数据包中所包含的信息判断应用是否存在漏洞。代理模式的原理图如图3所示。

图3 IAST检测代理模式原理

图3中代理模式的漏洞检测流程如下:

1)终端用户将自己的代理服务器设置为IAST服务器后发起请求;

2)IAST服务器转发正常的用户请求发送给Web服务器;

3)IAST服务器复制一份用户请求流量,并改造为含有测试payload的请求包发送给Web服务器;

4)Web服务器将对测试请求的响应信息回传给IAST服务器,IAST服务器完成对响应信息的分析,并展示漏洞风险信息;

5)终端用户登录IAST服务器可以查看漏洞风险信息。

2.1.3 DAST技术

DAST作为一种传统的黑盒测试技术主要是在Web应用上线运行后,通过利用专用的Web应用漏洞扫描器来进行漏洞扫描,作为最传统和应用最广泛的Web应用检测技术,其能够发现一些典型的Web应用漏洞,如各类注入类漏洞、跨站脚本漏洞、安全配置错误、敏感数据泄露等风险。利用该技术发现漏洞后,需要运营人员和开发人员进行漏洞修复,修复漏洞后再更新业务系统,因此整个漏洞的修复完成周期会更长,但是由于该方法使用的简易性和便捷性,其仍然居于很重要的地位。

目前国内外都已经有相当成熟的Web应用漏洞扫描器,国内的主要有启明星辰Web漏扫、绿盟Web漏扫和安恒Web漏扫,国外的主要有AWVS和AppScan等,各类漏洞扫描器的原理基本相同,如图4所示,主要是通过扫描器向Web应用服务器发起漏洞扫描任务,任务会爬取整个Web应用的页面和参数,然后依托爬站的结果继续对Web应用发起含有攻击的payload请求包,通过Web应用返回的response响应信息来确定应用系统是否存在漏洞[8]。

图4中漏洞扫描流程如下:

图4 DAST检测原理

1)扫描器建立扫描任务向Web服务器发起漏洞扫描;

2)Web服务器将response响应回传给扫描器,扫描器完成漏洞分析;

3)终端用户登录扫描器,查看漏洞信息。

2.2 实验对比及效果分析

在了解SAST、IAST和DAST三种检测技术原理的基础上,需要分析三种检测技术漏洞检测的效果和优劣。本次检测分析使用的安全漏洞靶场有3个,分别是WebGoat7、Benchmark1.2和场景化靶场。

WebGoat是OWASP组织提供的Web漏洞实验型Java靶场,该靶场中含有多类Web应用漏洞,主要包括:跨站点脚本攻击(XSS)、外部实体引用(XXE)、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、Open Authentication失效、危险的HTML注释等。

Benchmark是OWASP组织提供的一个用于验证检测工具检测准确度、覆盖率和速率的开源Java靶场,其包含命令注入、弱密码、弱哈希、LDAP注入、路径遍历、不安全的cookie、SQL注入、违反信任边界、弱随机数、XSS、Xpath注入等共计2740个漏洞,其中真漏洞有1415个,假漏洞1325个,各种检测器利用Benchmark靶场扫描后,能生成相应的评分表,得分成绩能够有效显示出检测工具的检测准确性、误报率、漏报率等。

场景化靶场为自研靶场,包含的漏洞主要有防篡改场景、一次性资源场景、多污染源场景、编码场景,利用这些场景来验证不同的检测技术对这些场景中漏洞的检测能力。

各靶场的检测效果说明如表1~3所示。

表1 Webgoat7靶场检测漏洞报出情况

通过上述实验对三种检测技术的效果进行总结可知道三类技术各有优劣,其中SAST技术作为静态检测技术是从代码级别进行检测,可以支持多种语言,检出率高但是误报率也高;IAST技术基于字节码流进行检测,语言覆盖率是其面临的一大问题,目前Java语言的支持性比较好,其他语言的支撑仍需要改进,漏洞检出率高,误报率极低;DAST基于请求payload,通过response信息进行检测,不区分语言和平台,漏洞的检出率相对IAST技术要低一些,误报率也比较低。三种技术的详细检测效果和功能性对比见表4。

表2 Benchmark1.2靶场检测得分情况

表3 场景靶场检测

表4 三种技术检测效果和功能性对比

3 总结

Web应用一直受到广泛的网络攻击,特别是在当前软件供应链被威胁的时代,Web应用也同样受到了供应链攻击。为了保护Web应用整个供应链安全,需要的已经不再是某一种单一的检测或防御技术,而是需要各类技术共同配合展开全方位的检测防御,构建覆盖软件系统全生命周期的纵深防御体系。本文详细讲述了三类主流Web应用检测技术的原理并进行了实验验证,客观分析了三类技术的优劣和特点,希望能为Web应用检测技术的选择和使用提供参考,以在新形势下更好地保证Web应用的安全性。

猜你喜欢

靶场安全漏洞漏洞
漏洞
精细化理念推动靶场总装管理体系的构建与实施
2021年6月18日,一架F-16战隼在联合太平洋阿拉斯加靶场上空
基于模糊测试技术的软件安全漏洞挖掘方法研究
探析计算机安全漏洞检测技术
贵阳建首个“大数据安全综合靶场”
智能设备安全漏洞知多少
安全漏洞检测技术在计算机软件中的应用
三明:“两票制”堵住加价漏洞
漏洞在哪儿