Web应用的安全性和脆弱性研究外文翻译资料
2023-02-26 20:36:17
英语原文共 5 页,剩余内容已隐藏,支付完成后下载完整资料
Web应用的安全性和脆弱性研究
Gopal R. Chaudhari, Prof. Madhav V. Vaidya
Department of Information Technology,
SGGS IE amp; T, Nanded,
Maharashtra, India-431606
摘要
Web应用程序是当今Internet上用于信息共享和服务的分布式平台。它们越来越多地用于金融、政府、医疗和许多关键服务。现代web应用程序常常实现用户按给定顺序执行操作所需的复杂结构。这种流行性行为给这些应用程序增加了价值,从而吸引了攻击者。攻击者非常了解通过web应用程序访问的有价值的信息,这将导致对web应用程序的严重安全攻击
本文综述了web应用安全的研究现状,首先介绍了web应用的工作原理,重点讨论了构建安全的web应用所面临的挑战。我们将现有的安全漏洞分成web应用程序应该保留的安全属性,讨论了这些漏洞产生的根本原因及其相应的防范措施。接下来,我们将重点讨论针对web应用程序的恶意软件攻击,以及web应用程序是如何被攻击并受到恶意软件的感染。最后,我们总结了经验教训,并讨论了该领域未来的视野和机遇。
关键词:安全,漏洞,Web应用程序
一、 导言
尽管传统的防火墙已经有效地防止了网络级的攻击,但未来大多数的攻击都将发生在应用程序级,而当前的安全机制严重不足[1]。web应用程序代码中固有的应用程序级安全性,与用于web应用程序开发的技术、web服务器的安全性或构建它的数据库的安全性无关。但是,由于防火墙或入侵检测系统出于在线业务目的而保持80和443端口的开放,应用程序中仍然存在漏洞。web应用程序通过web页面向用户提供对服务器功能的客户端访问。这些网页包含了HTML、图片、脚本代码等,对用户越来越友好,但也容易产生安全方面的漏洞。
金融应用、医疗应用、政府网站等web应用与后台数据库进行多次交互,以响应客户的请求。如果此类web应用程序因安全性而受到损害,将导致web应用程序的财务、信息、道德和法律问题等后果。
web应用安全联盟的报告显示,web应用的安全性是最重要的,约有49%的web应用存在严重性级别高的漏洞,其中13%的web应用会因安全漏洞而自动受到危害。不安全的web应用程序会导致已知的安全漏洞,如注入、跨站脚本、cookie盗窃、安全错误配置、会话劫持、蠕虫自传播攻击等。
大量的研究致力于强化和减轻web应用程序的不同漏洞。这些解决方案中的许多都基于对应用程序开发中使用的web技术的一些假设,并缓解了关注的安全缺陷。这些解决方案可应用于其他类似类型问题的可能性可能非常小,因为思维方式狭隘,或者从业者可能只专注于为特定技术相关漏洞提供精确的解决方案。
图1 web应用程序中的平均漏洞数
本文综述了web应用安全的研究现状,旨在根据web应用应保留的安全属性,对现有的漏洞进行大类的系统分类,探讨漏洞的根源和防范措施,重点研究恶意web应用威胁。图1显示了受不同漏洞影响的web应用程序的百分比;其中一些漏洞也出现在OWASP前10名中。OWASP排名前10是被大量组织确定的最严重的漏洞[2]。
二、WEB应用程序的工作原理
Web应用是一种分布式应用,它支持动态信息和服务的传递。如图2所示,web应用程序由客户端和服务器端组件组成。客户端组件,包括带有嵌入式脚本语言的静态网页,例如在浏览器中执行的JavaScript。客户端通过internet指定特定的URL向web服务器发出http请求。
图2 Web应用程序概述
在服务器端,客户机的请求通过执行(CGI或Java Servlets)或解释(PHP、JSP)在web服务器中使用动态HTML页面进行处理,并对客户机请求提供适当的响应。这些服务器实际上包含应用程序的业务逻辑。业务逻辑是指对数据执行的算法实现,如如何创建、显示、存储和更改数据。客户端可以使用异步调用(如AJAX)与服务器端代码通信,并动态更新HTML页面。web应用程序与后端文件系统或数据库服务器交互以存储和检索数据。web应用程序的各个方面,包括编程语言、状态维护和逻辑实现,将web应用程序与传统应用程序区别开来。
三、WEB应用程序安全属性和漏洞
安全的web应用程序应该具有安全属性,如图3所示。逻辑正确性是指应用程序逻辑应按照开发人员的预期进行正确的修正;输入有效性是指应用程序使用前验证过的用户输入;状态完整性是指应用程序状态应保持无阻尼,安全配置错误是指使用安全组件进行的配置设置,等等。
A、 逻辑正确性
逻辑正确性保证了web应用程序按照其业务逻辑正确运行。每个web应用程序都有自己的业务应用程序逻辑;很难在单个描述中涵盖所有方面。但在全局级,逻辑修正的属性是指“用户只能访问授权的信息和操作,并遵循web应用程序提供的预期工作流”。web应用程序被实现为用户以任何顺序访问的独立模块的数目。这些不同模块之间的控制流通过以下两种方法的紧密协作来执行。第一种方法是接口隐藏,在这种方法中,只有可访问的资源和应用程序的操作通过web链接呈现给用户。第二步,在任何敏感信息应用程序都可以访问之前,对应用程序状态进行显式检查。具有逻辑正确性的漏洞称为逻辑攻击或状态冲突攻击。
1) 输入验证和清除:这些技术确保正确的web应用程序行为。基本上,输入验证意味着用户对web应用程序的输入应该在被web应用程序使用之前进行验证。对于任何接受不可信数据的web应用程序,都应该包含输入验证过程,以确保计算值是合法和合理的。
在web应用程序的上下文中,输入验证应该应用于在服务器端进一步处理的客户端输入。web应用程序通过不同的方式接受输入,如HTTP请求查询字符串、POST方法体、数据库查询、HTML5 postMessages调用。
考虑图4所示的POST请求。该请求包含几个参数,包括seesionID、CSRF token、多个参数,如手机号码、信用卡号码和日期。这些参数中的每一个都需要不同的输入验证,如信用卡号需要一定数量的字符和Luhn校验,手机号也需要一定数量的整数位数,日期应该是指定格式的当前日期,如dd/mm/yyyy等。最好是在整个web应用程序生命周期中使用的输出清理。输出清理程序通常从不受信任的输入源(如“lt;”、“amp;”)中转义特殊字符,不应出现在要合并的未转义值中。
在这里,我们演示了最流行的输入验证攻击,包括SQL注入、跨侧脚本(XSS)。
一)SQL注入:这是一种代码注入技术,允许攻击者从web服务器的数据库中检索关键信息[4]。由于用户输入未经正确验证即流入SQL查询,攻击者成功发起此攻击。使用SQL关键字和用户输入,攻击者可以将SQL查询结果作为意外执行操作。SQL注入会导致身份验证绕过、数据丢失、拒绝访问,还可能导致整个数据库的破坏或主机接管。严重程度:中到高
预防措施:应考虑一些预防措施,以降低注入攻击成功的可能性,例如避免以超级用户访问的方式连接到数据库,避免使用动态SQL查询,在输入数据被web应用程序使用之前对其进行验证/清理,使用加密或哈希格式存储敏感数据,不要在错误消息中显示大量信息;而不是使用自定义错误消息来显示最少的信息[5]。
二)跨站脚本攻击(XSS):当应用程序处理来自web页面的用户提供的数据而没有正确验证或转义该内容时,就会发生XSS流。XSS使攻击者能够将客户端脚本注入利用浏览器中解释器的网页。XSS的后果可能是会话劫持、敏感信息泄露、绕过外围防御和站点信任。根据恶意脚本的注入方式,有三种已知类型的XSS流,包括存储的XSS(恶意脚本被注入到持久性存储媒体)、反射的XSS和基于DOM的XSS等。
严重程度:中到高
图4 XSS漏洞
图4显示了如何在web应用程序中执行XSS攻击。攻击者可以通过输入字段插入包含脚本代码的消息。当攻击者打开导致信息泄漏的消息页时,此脚本存储在数据库中。由于在将脚本作为消息发送到浏览器时没有执行安全检查,因此利用此漏洞可以在浏览器中运行任意脚本。
预防措施:在网页中的每个输入语句之后引入输入验证功能。对不受信任的数据使用清理,识别不安全的字符,转义特殊字符或根据不同的参数(如长度、格式、业务规则等)验证它们。使用字符编码技术(如UTF-8)并配置所有组件以使用它。
2) 状态完整性: 在典型的web应用程序中,用户的web浏览器通过发送HTTP请求与远程应用程序交互。HTTP是一种无状态协议,没有会话机制[6]。这意味着每个请求都独立于下一个请求。动态web应用程序具有由多个步骤组成的工作流,这些步骤对应于对应用程序的多个HTTP请求。这里的操作由HTTP请求的URI[7]定义,请求参数和服务器端会话记录。状态维护是构建基于状态的web应用程序的基础。攻击者针对会话管理和状态维护中的漏洞,包括会话固定、会话劫持、cookie投毒和跨域请求伪造。为了保持状态的完整性,提出了许多技术,如客户端信息可以通过消息认证码(MAC)进行保护,会话标识符以高度随机性生成并通过SSL协议传输。
i) 断开的身份验证和会话管理:在应用程序中,身份验证和会话管理功能常常不能正确实现。需要考虑的关键点包括注销功能、密码管理、超时、机密问题、帐户更新。攻击者使用身份验证和会话管理功能中的流(例如公开的帐户、密码、会话ID等)。利用身份验证和会话管理功能的漏洞,攻击者可以窃取敏感信息,包括用户凭据、会话ID等。
严重性:高
预防措施:实现强大的身份验证和管理功能、适当的请求超时功能、用户帐户注销策略、会话过期、仅允许安全和http cookies等功能、仅以加密格式遍历敏感信息、避免url中的会话id,并遵循指定要求的安全标准用于安全身份验证和会话管理。
ii)跨域请求伪造:这是一种利用漏洞的类型,攻击者利用受害者的有效会话标识符,通过图像标记、XSS或其他技术,以攻击者的名义,诱使受害者发送精心编制的web请求。由于浏览器会自动发送会话cookies等敏感信息,受害者的会话会被篡改,导致敏感信息丢失,攻击者还可以伪造与合法请求不可区分的请求。
严重程度:中等
预防措施:CSRF可以通过在每个HTTP请求中使用不可预知的令牌来防止。这些令牌对于每个用户是唯一的,对于每个请求也是唯一的。将这些唯一的令牌包含为隐藏字段,使该值在正文HTTP请求中发送,并避免将其包含到URL中,否则会暴露该值。这些唯一的令牌也可以包含在URL本身中,但是这样的放置会有暴露给攻击者的风险,因此可能会危害机密令牌。
3) 安全配置:web应用程序是一个复杂的生态系统,由大量的硬件/软件组件组成,包括web服务器、数据库服务器、请求处理队列等等。这种类型的漏洞主要集中在组件的正确配置、其中的访问控制机制、使组件保持最新状态等方面。错误配置或未经授权的访问会导致web应用程序显示错误行为或匿名用户可以访问web应用程序基础结构的漏洞。
一)安全配置错误:不正确的安全配置会导致此漏洞。此漏洞可发生在应用程序堆栈的任何级别,包括应用程序服务器、web服务器、数据库服务器和平台等组件。此流允许攻击者获得对系统数据或功能的未经授权的访问。可能导致整个系统受损。严重程度:中等
预防措施:web应用程序的良好安全性要求正确定义、实现和维护所有组件(包括平台、框架和服务器组件等)的安全配置。定期运行扫描和审核,以检测将来的错误配置和丢失的修补程序。一个可重复的强化过程也使得部署另一个适当锁定的环境变得快速和容易。
二)使用具有已知漏洞的组件:Web应用程序由许多易受攻击的组件组成,如外部库、框架和其他始终以完全权限运行的软件。很多时候,应用程序开发人员不知道这些组件的版本及其依赖关系,这可能会导致更糟的情况。利用此漏洞可能会导致严重的数据丢失或服务器接管。严重程度:中到高
预防措施:最好不要使用您不会编写的组件。但也有一些开源项目没有为旧版本的易受攻击版本创建漏洞修补程序;它们只是减轻了下一版本的问题。软件项目包括识别合法组件、其版本以及所有依赖项、监视这些组件的安全性并使其保持最新的过程。
图4显示了web应用程序的端到端工作,以及在web应用程序的不同阶段可能出现的上述漏洞。
图4 web应用程序不同阶段存在的漏洞
四、 WEB应用程序-恶意软件威胁
恶意软件攻击是web应用程序安全中讨论最多的领域。近年来,许多攻击都发生在银行网站上,包括谷歌的黑名单。通常恶意软件攻击会损害未修补的浏览器、操作系统服务和流行的应用程序(如ActiveX、Microsoft Office、outlook mes
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[234087],资料为PDF文档或Word文档,PDF文档可免费转换为Word