Web应用程序安全性测试平台关键技术研究

【 摘 要 】 随着Web应用的不断深化和推广,对应的Web漏洞和恶意攻击层出不穷,使得高效、准确地测试评估Web应用程序的安全性尤为重要。本文对Web应用安全测试技术,构建插件式、可扩展的安全测试技术框架,以及未知漏洞智能发掘方法和支持自定义的测试工具集成方法等关键技术进行了研究。在Web应用运行前和运行时,采用平台对其进行安全扫描和风险发现,可加强Web应用的安全检测,确保Web应用的安全可靠运行。

【 关键词 】 Web应用程序;安全测试;插件;集成框架;漏洞挖掘

【 中图分类号 】 TP393.08 【 文献标识码 】 A

Research on Key Technologies of Web Application Security Detection Platform

Sun Yi Liang Dong-yun Wang Wen-jie

(School of Computer, Beijing University of Posts and Communications Beijing 100876)

【 Abstract 】 Along with the development of Web application, it is urgent to test and evaluate the security of Web application efficiently to withstand the vulnerabilities. In this paper, key technologies like the detection framework with plug-ins、methods for discovering unknown vulnerabilities and mode of detection tools integration by user-defined are researched. Applying these technologies, the platform is able to scan and discover the vulnerabilities efficiently for Web application before and on running to insure its security.

【 Keywords 】 web application; security detection; plug-ins; integrated framework; vulnerability discovering

1 引 言

随着信息技术的快速发展,越来越多的应用开始通过Web形式对外提供,方便快捷的Web应用在政府、企业、军队等都得到了广泛应用。然而,不安全的Web应用使得我国金融、医疗、国防、能源和其他重要网络架构面临严峻的安全威胁。随着数字化架构变得越来越复杂并相互关联,实现Web应用程序安全的难度也呈指数级增加。Web应用程序越来越复杂,导致固有的漏洞和缺陷越来越多,因此也正面临着来自网络的越来越多的攻击。目前,Web应用程序安全问题已经成为我国信息技术发展重要的技术挑战,需要有针对性的防护Web应用攻击,即针对不同的攻击行为采用不同的防护技术。因此,研究设计Web应用程序综合测试平台进行安全检测,及时发现Web应用程序漏洞,对于防范各类Web应用攻击意义重大。

2 研究现状及存在不足

在Web应用软件分析和测试研究方面,Ricca和Tonella在中提出了一个基于UML的模型。Kung等人将Web应用软件或者Web网站用一张图来表示,根据页面浏览的导航顺序,构建测试树,从而生成测试用例以检测状态行为错误的方法。Kallepalli等人提出了一个基于统计使用数据信息建立统一的马尔可夫模型(Unified Markov Model)方法用于应用测试、性能评估及可靠性分析。

在Web应用脆弱性的自动探测技术方面,微软将安全漏洞分为十个大类,并在此基础上明确了Web应用程序安全框架的需求。OWASP按照若干漏洞是否紧密相关、是否使用类似的反制措施和是否经常出现在Web应用体系结构的标准,给出了十大应用程序漏洞列表。文献[6,7]针对来自不可信的来源的危险数据,利用动态追踪技术(Dynamic Tainting Technique),高效探测进入敏感区的危险数据。

相对于国外,国内对Web应用安全测试的研究还比较薄弱。比较有代表性的研究有武汉大学的卢虹等人从状态测试的角度对Web应用的测试问题进行了讨论,清华大学的武海平等人则开发了一个Web服务器性能测试系统,合肥工业大学的吴蕾等人应用环境错误注入的方法进行了安全性测试的研究,国防科技大学的郑理华等人正在研究基于网络的Web应用安全测试评估系统,解放军理工大学的Zhanwei Hui等人在基于软件安全缺陷(SSD)的Web应用安全测试方法上面进行了有益的探索。

通过上述国内外现状分析不难发现,我国现有Web应用安全性测试技术还不能满足信息系统建设的迫切需求,具体差距表现在几个方面。

(1) 缺乏集成统一的Web应用安全性测试框架。当前主流的Web应用测试框架和工具通常只针对某些特定Web应用安全漏洞,无法对安全缺陷展开全面的测试,难以满足Web应用安全性测试的要求。

(2) 缺乏有效的Web应用未知漏洞的自动扫描和发现技术。当前的Web应用安全性测试主要利用渗透攻击检测已有的安全漏洞,对未知安全漏洞的检测缺乏可行的方法。

针对Web应用程序安全性测试的切实需求,本文针对上述不足,深入研究Web应用的安全性测试技术体系,建立一个插件式、可扩展、重动态交互的Web应用安全性测试工具。以确保安全测试准确性和高效性为出发点,突破未知漏洞智能发掘方法和支持自定义的测试工具集成方法等关键技术,最终为Web应用安全测试提供一整套健壮的、智能化的综合测试工具奠定基础,从而在Web应用运行前和运行时,对其进行安全扫描和风险发现,确保Web应用的安全可靠运行。

3 Web应用程序安全

Web应用是一个客户机/服务器软件应用系统,其中的客户程序和服务器程序通过HTTP/HTTPS协议进行交互,通常包括五个组成部分,即客户端(浏览器)、Web服务器、应用服务器、Web应用程序、数据源,它们彼此之间通过一定的机制来进行通信,典型的Web应用架构模型如图1所示。

由于组成Web应用的软件系统相对复杂,涉及网络、操作系统、服务器等多个方法,目前国内外对Web应用安全并没有一个统一的、标准的定义。严格意义上来讲,Web应用安全应该包括其体系结构中涉及的所有安全问题,如网络安全、操作系统安全、浏览器安全、Web服务器安全、应用服务器安全等。企业、政府、军事单位多采用防火墙、SSL、杀毒软件、入侵检测系统等措施来保护Web应用安全,但据Gartner调查,当前大多数Web攻击都直接针对Web应用程序本身。攻击者通过构造表面合法的HTML、XML、SOAP和Web Services等数据流,传送恶意代码直接针对Web应用程序的安全漏洞进行攻击。OWASP(Open Web Application Security Project)组织发布的Web应用程序安全风险报告显示,跨站脚本、SQL注入等已成为Web应用程序安全的重大威胁,如图2所示,传统的边界防护、病毒查杀等安全手段对此心有余而力不足。

Web应用程序是开发和组成Web应用的核心组成部分,要保护Web应用程序安全,需要针对不同的攻击行为采用不同的防护技术。这就要求在真实攻击发生前,及时的发现Web应用程序存在的各种安全漏洞,并采取相应的防范措施进行加固。WhiteHat调查报告指出,漏洞发现得越早、弥补得越及时,攻击者利用漏洞进行攻击的机会就越小。因此,深入研究Web应用程序的安全性检测技术,开发测评工具对Web应用程序进行安全性测试,及时发现Web应用程序所存在的漏洞,对于防范Web应用攻击意义重大。

4 Web应用安全综合测试平台关键技术研究

4.1 基于插件的Web应用安全测试集成框架

Web应用安全漏洞成为应用系统安全风险的重灾区,而且呈现逐年上升的趋势。当前的Web应用安全测试工具虽然种类繁多,但是无一例外存在一些缺陷,运行效率相对较低。为克服这些缺陷,本文设计了图3所示的基于插件的Web应用安全测试集成框架,主要由三大部分构成:插件管理部件、扫描管理部件和全局管理部件。

插件管理部件主要负责对漏洞扫描插件的管理与维护,主要包含以下模块:插件接口层,为扩展层提供插件接插的标准接口和规范;插件管理模块,维护插件库的完整性和时效性,保证框架自身的安全性;插件调度模块,根据Web应用系统的业务逻辑属性,自主智能地调度最优的测试插件进行测试,保证系统运行效率和漏洞检出率。在这三个模块之上,是插件库及插件库维护模块,插件库用于存储各种插件,包括本地库和在线库两个部分,以方便系统快速检索并加载插件,其中包括标准的CVE漏洞扫描插件、第三方基准测试插件(包含接口合规性测试等插件),以及用户根据系统特定属性定义的漏洞扫描插件等。插件库维护模块主要负责本地库与在线库之间的插件传输、插件审核以及插件库的完整性维护等功能。

扫描管理部件负责调用各种扫描插件,利用插件基于各种先验知识库、基准漏洞库对Web应用展开漏洞扫描。其中主要包括几种模块:知识库/基准漏洞库,用于存放各种已知的或习得的先验知识和基准漏洞,作为扫描以及启发式学习的基础;Web应用信息收集模块,主要用于截获测试框架与Web应用间的消息,以提供给扫描插件作为分析的资料;插件调用代理模块,作为具体插件在扫描部件中的抽象,通过该模块,扫描部件可以调用相应的插件,并保持扫描部件与插件管理部件的松散耦合;测试报告生成模块,根据测试结果生成相应的测试报告并反馈给测试人员。

全局管理部件,负责对整个框架的运行进行监控与支持。主要包括以下模块:系统配置模块,对全系统各个部件进行配置,保证系统按照测试人员的预期运行;虚拟用户生成与管理模块,产生并维护具有不同权限的不同角色的虚拟用户,利用虚拟用户可以对Web应用展开近似于实际环境的测试;用户交互模块,使用测试报告生成模块生成的测试报告产生友好的供测试员阅读的测试分析结果;错误处理模块,对系统运行中出现的错误进行及时的响应和处理。

4.2 支持未知漏洞发现的漏洞智能挖掘技术

为了最大可能的发掘新型安全漏洞、检测与具体Web应用紧密相关的安全缺陷,本文提出并设计了基于智能挖掘的未知漏洞检测方法,流程如图4所示。

在基于智能挖掘的未知漏洞检测中,智能漏洞挖掘模块在常规漏洞检测中,通过自学习服务不断学习并获取具体的业务逻辑和应用特征。然后基于已知的漏洞库,在启发模板的指导下,采取类似“基因变异”的思想,通过未知漏洞服务生成特定的针对具体Web应用的新攻击向量,检测应用是否存在已知漏洞库之外的未知漏洞。针对各种Web应用新型漏洞和与具体应用紧密相关的漏洞层出不穷的问题,论文提出的基于智能挖掘的未知漏洞检测技术,能够采用启发式学习机制和自学习机制来检测可能存在的未知漏洞,增强了对Web应用未知漏洞的检测能力,提高了工具自动化、智能化检测能力,能够更加有效的测试应用安全。智能漏洞挖掘建立在常规漏洞检测基础之上,并不能取代常规漏洞检测。智能漏洞挖掘需要通过常规漏洞测试,获取Web应用输入和输出信息以及数据流、控制流信息,取得具体的应用特征后,才能扩大测试覆盖面并生成新的攻击去检测新的安全漏洞。

4.3 Web应用安全性测试工具实现技术

根据上述理论和技术,最后实现一个针对Web应用的可用的安全性综合测试工具。该工具将集成上述安全测试技术,对Web应用的已知漏洞、接口合规性、业务动态安全性以及未知漏洞展开全面的测试,确保在Web应用上线前发现大部分潜在的安全漏洞,保证基于Web应用的新型信息系统的安全可靠运行。一个利用该工具的典型Web应用安全测试场景如图5所示。

测试人员使用控制台对测试工具进行配置并启动测试过程,测试框架根据测试人员的配置调用相应的插件构造测试代理(即一个经定制的测试工具的实例),该代理生成若干具有不同身份、不同角色的虚拟角色,虚拟角色通过网络向带测试的Web应用发起测试请求,测试工具截获请求与服务返回的响应,之后使用配置好的插件对Web应用的安全漏洞进行智能的发现与挖掘,高效地发现大部分Web应用安全漏洞。

5 结束语

本文研究了Web应用程序安全测试技术,并构建了插件式、可扩展的安全测试技术框架。以确保安全测试准确性和高效性为出发点,突破未知漏洞智能发掘方法和支持自定义的测试工具集成方法等关键技术,最终为信息系统建设中的Web应用安全测试提供一整套健壮的、智能化的综合测试工具,在Web应用运行前和运行时,对其进行安全扫描和风险发现,确保Web应用的安全可靠运行,为推进Web应用安全提供支撑和保证。

参考文献

[1] Ricca, F. and P. Tonella. Analysis and testing of web applications. 2001: Published by the IEEE Computer Society.

[2] Kung, D.C., C.H. Liu, and P. Hsia. An object-oriented web test model for testing web applications. 2000: IEEE.

[3] Kallepalli, C. and J. Tian, Measuring and modeling usage and reliability for statistical web testing. IEEE transactions on software engineering, 2001: p. 1023-1036.

[4] Microsoft. 备忘单:Web 应用程序安全框架. 2005; Available from: http:// msdn.microsoft. com /zh-cn /library/ms978518.aspx.

[5] OWASP. OWASP Top 10 Application Security Risks - 2010. 2010; Available from: https://.cn/qkpdf/xxaq/xxaq201401/xxaq20140109-2.pdf" style="color:red" target="_blank">原版全文

推荐访问:技术研究 应用程序 安全性 关键 测试