Web应用系中注入类漏洞调研

本文基于Securing web applications from injection and logic vulnerabilities: Approaches and chanlleengs[1]

首先给出一张典型的Web架构图, 分为前后端两个部分,从Architecture,Software,以及Technology三个方面去说的。

Web漏洞分类

Web系统面临的主要攻击有: - 不充分地输入验证(improper input validation),缺少或者错误的输入验证,可触发注入类漏洞(Injecton Vulnerabilities)。 - 不充分地身份验证(improper authentication and authorization mechanisms),错误地实现身份验证(authentication functions)与会话管理(access-control policies)。可触发业务逻辑类漏洞(Business Logic Vulnerabilities)。 - 不充分地会话管理(improper managerment of session information),与session令牌的使用有关,可触发会话管理类漏洞(Session Manangement Vulnerabilities)

根据上图,总结一下,Web系统里最常见也是流行度最广的漏洞类型有三类: 注入类、业务逻辑类、会话管理类。

本文主要介绍注入。

注入漏洞

注入类漏洞本质上是攻击者可以通过操纵用作某种查询的user-input parameters,来改变该查询的语法。从而造成了应用系统的安全问题。主要引发该类漏洞的原因是缺少输入验证或者验证不充分。主要的注入漏洞有XSS和SQL注入两种。

相关工作

(先整理XSS)

XSS

尽管已经有很多XSS漏洞相关的工作了,但是XSS攻击在Web系统中仍然十分的流行。 Weinberger et al.的工作生成web开发框架不能够很好地提供XSS的防护(在上下文敏感分析方面),以及不能够应对DOM-based XSS攻击。另一方面,taint-based的漏洞挖掘方法不能够handle动态特性与object-oriented code。

防止XSS可以通过secure coding pratices以及使用secure development frameworks。 目前的漏洞探测方法聚焦于identifying missing sanitization routines 以及 analyzing the effectiveness of sanitization routes。 ### XSS安全编程(Secure programming) XSS漏洞可通过安全编程(secure coding practices)来排除,如:sanitization of untrusted input for removing the harmful properties. 具体方法包括强制输入限制(impose restrictions on user-input), 采用转义序列表示特殊字符(use escape sequences for referencing special characters),以及从输入中更换或者移除恶意字符串replacement or removal of malicious characters from the input

XSS漏洞挖掘(Vulnerability detecion)

  • Di lucca et al.提出对web页面进行控制流图构建的XSS挖掘方法。
  • 尽管XSS漏洞的主要原因是input sanitization function实现的不正确。很少有web应用程序没有包含input sanitizers for filtering out malicious characters.
  • 污点分析使用用的发现缺少input sanitization的手段。他用来跟踪user-input流并加测untrusted input是否应用于HTML output statements.Pixy是比较早的一个工作,使用过程内,上下文敏感的数据流分析来验证漏洞。Pixy验证user-input在到达sink之前,是不是被sanitized了,but cannot guarantee the correctness of sanitization。 对于消毒方法的正确性验证(Correctness of sanitization routines),可以使用string taint analysis方法,Wassermann and Su使用该方法验证input string。 在黑盒方面,Kals et al. 开发了黑盒漏洞扫描系统,用来探测SQL注入和XSS漏洞,该工作使用一个爬虫进行web页面爬取,使用攻击载荷填写form field,

XSS漏洞防护(Vulnerability prevention)

XSS漏洞预测(Vulnerability prediction)

XSS攻击发现(Attack detection)

XSS攻击防护(Attack prevention)

  • 保护Web应用程序免受XSS漏洞影响的缓解机制:

  • 保护Web应用程序免受XSS攻击的缓解机制:

对于XSS防护机制,在web应用服务端存在以下问题: 1. 性能开销,大多数防护都是设置为HTTP请求与响应间的中间代理。 2. 他涉及检测应用程序的源代码以防止攻击。 3. 一些方法需要开发者人为定义安全策略。

参考1