security,

一分钟读论文:《XSS 攻击22年:全面调查及系统综述》

Unbug By Unbug Follow Feb 03, 2023 · 2 mins read
一分钟读论文:《XSS 攻击22年:全面调查及系统综述》
Share this

作为前端工程师你真的了解 XSS 吗?越来越多超级应用基于 Web 构建,如何系统的攻防 XSS 尤为重要。微软安全工程师 1999 年底披露了 XSS,22年来 XSS 一直稳居 OWASP(开放 Web 应用程序安全 ) 报告的前 TOP10。阿尔及利亚的拉尔比特贝西大学、盖勒马大学和巴吉莫赫塔尔大学的 LRS 实验室的论文《Twenty-two years since revealing cross-site scripting attacks: a systematic mapping and a comprehensive survey》 调查了147份高质量研究,总结制定了一个全面的分类法,描述了用于预防、检测、保护和防御 XSS 攻击的不同技术。

XSS 攻击都有哪些类型?

 Types of XSS attacks

基于应用的 XSS 攻击

  • 反射 XSS (RXSS):当作为 HTTP 请求的⼀部分提供的恶意数据在未经过适当清理的情况下成为服务器响应的⼀部分时,就会发⽣ RXSS 攻击。因此,嵌⼊在 HTTP响应中的恶意数据会返回客⼾端并在浏览器呈现时执⾏。RXSS的典型⽬标是具有搜索功能的 Web 应⽤程序,其中嵌⼊的恶意数据成为搜索结果或错误消息的⼀部分。
  • 存储型 XSS (SXSS):当以输⼊形式提供的恶意数据未经清理就存储在服务器应⽤程序数据库或⽂件中时,就会出现 SXSS 攻击。 SXSS 攻击的典型⽬标是在线社交⽹络应⽤程序和论坛,恶意数据可以在其中发布、存储在数据库中,从⽽感染访问它们的每个⽤⼾。SXSS 攻击也称为持久性。
  • DOM XSS (DXSS):DXSS 攻击是渲染时攻击。与 RXSS 和 SXSS 相反, DXSS 攻击中使⽤的恶意数据⽤于动态更改浏览器在渲染阶段⽣成的 DOM 树。
  • JavaScript Mimicry XSS(JSM-XSS):攻击者不是注⼊恶意脚本,⽽是利⽤ Web 应⽤程序中已经使⽤的脚本来发起 JSM-XSS 攻击。 JSM-XSS 攻击很难被检测到并且很容易通过基于⽩名单的过滤器。
  • XSS 蠕⾍(WXSS):WXSS 攻击是具有⾃我复制能⼒的 XSS 攻击。RXSS 和 SXSS 攻击被归类为WXSS。WXSS 攻击更加危险,因为它们在 Web 应⽤程序⽤⼾之间传播,并随着时间的推移逐渐感染其他⽤⼾。此类攻击的典型⽬标是在线社交⽹络应⽤程序。

基于第三⽅的 XSS 攻击

  • 通过脚本⼩⼯具重⽤代码(CR-XSS):触发 CR-XSS 攻击基本上需要了解⽬标应⽤程序使⽤的库和/或框架中包含的脚本。成功的 CR-XSS 攻击是通过注⼊带有伪装负载(即不可执⾏形式)的 HTML 代码来实现的,这些负载匹配 DOM 元素并激发脚本⼩⼯具的执⾏。
  • 通⽤ XSS (UXSS):UXSS 是由于浏览器本⾝或其扩展没有对 URL 进⾏适当的清理⽽引起的。⼊侵者可以利⽤浏览器或浏览器扩展中的漏洞,通过诱使⽤⼾单击⼀个链接,该链接会激发访问者浏览器中安装的插件的执⾏,该插件会触发链接中包含的恶意脚本的执⾏。

基于协作的 XSS 攻击

  • Mutation XSS (MXSS):MXSS 攻击主要是由浏览器利⽤Web 应⽤程序中使⽤的 innerHTML 属性将格式化的 HTML 字符串转换为有效 DOM 元素的能⼒引起的。
  • Cross-API Scripting (XAS):XAS 是⼀种 XSS 攻击,针对为社交⽹络等第三⽅开发者提供 Restful API 的 Web 应⽤。攻击者在他们⾃⼰的应⽤程序配置⽂件中注⼊恶意脚本,因此第三⽅应⽤程序的⽤⼾容易受到 XAS 的攻击。恶意数据通过使⽤ API 从 Web 应⽤程序检索数据传输到受害者的浏览器。 XAS 攻击的根本原因是缺乏对数据的适当清理:(1) Web 应⽤程序本⾝允许攻击者注⼊恶意数据,(2) 第三⽅ Web 应⽤程序在没有适当的情况下接受恶意 API 的响应。
  • Content-Sniffing XSS(CS-XSS):由于浏览器对⽂件内容类型的错误解析⽽引起的 XSS 攻击。恶意数据作为单独的媒体⽂件(例如 PDF、图像)的⼀部分被提供给易受攻击的 Web 应⽤程序。这些⽂件对每个在易受攻击的浏览器中加载它们的⽤⼾都是有害的。浏览器会将它们视为 HTML ⽂件,因此会在受害者浏览器执⾏注⼊脚本的位置展示。

如何预防、检测、防御 XSS 攻击?

RQ4

XSS 预防技术

XSS 漏洞缓解技术:

  • 使⽤安全 API:浏览器通常带有内置 API,可以以⾼级⽅式执⾏复杂的操作,例如操纵 Web ⽂档的 DOM 结构。
  • 使⽤安全的 Web 模板:使⽤ Web 模板是⼀种常⻅的做法,它使 Web 设计⼈员和开发⼈员能够通过重新配置已设计的模板来⽣成他们定制的 Web 应⽤程序。
  • 使⽤适当的消毒程序:在所有敏感注⼊点消毒是防⽌ XSS 攻击的直观解决⽅案。如 WebSSARI、DOMPurify。

XSS 漏洞检测技术:

  • 静态分析:静态分析⽅法和⼯具专注于探索 Web 应⽤程序源代码,⽽不是执⾏它们,以发现安全漏洞。纳⼊的研究提出了三种主要的静态分析⽅法:基于模型驱动、基于机器学习的代码审查和静态污点分析
  • 动态分析:动态分析与静态分析相反,动态分析⽅法和⼯具旨在发现 Web 应⽤程序运⾏时的缺陷。通过向服务器动态发送请求来检测基于 HTTP响应的 XSS 漏洞的存在。纳⼊的研究提出了几种主要的动态分析⽅法:动态污点分析、安全测试(模糊测试,⾃适应随机测试,基于模型的测试,动态单元测试)、数据库流量拦截、混合动态测试
  • 测试⽤例⽣成:基于静态分析的⽅法,以及所有基于动态分析的⽅法都需要输⼊数据的集合来执⾏它们的评估过程。该集合应包括各种不同且具有代表性的输⼊测试。为了系统地⽣成输⼊测试,探索了⼏种技术:组合安全测试、遗传算法(GA)、机器学习、基于规则⽣成、基于混合的测试⽤例⽣成、基准测试
  • 混合分析:混合分析混合分析包括结合或交替使⽤静态和动态分析。除了检测所有数据流路径外,它还旨在产⽣低误报率。

XSS 漏洞防御技术:

  • 运⾏时数据代码分离:运⾏时数据代码分离为了防⽌已经注⼊易受攻击的Web应⽤程序的恶意脚本的执⾏,可以在服务器端提取HTTP响应敏感点的脚本,并以安全的⽅式单独发送到客⼾端响应每个 HTTP 请求。如果处理得当,可以防⽌⽹络浏览器执⾏恶意脚本。
  • 输⼊参数类型推断和验证:输⼊参数类型推断和验证⼤多数⽤于开发复杂 Web 应⽤程序的脚本语⾔都是⽆类型语⾔。攻击者利⽤它向输⼊字段注⼊脚本⽽不是明确的值,从⽽导致 XSS 攻击。因此,对敏感数据值强制类型是防⽌XSS 攻击的直观解决⽅案。

XSS 漏洞检测与修复技术:

  • 静态污点分析来从生成的 Web 应用程序页面的控制流图中识别输入和可能易受攻击的输出节点。
  • 模式匹配用于识别每个节点的 HTML 上下文。 最后,通过匹配 OWASP XSS 预防规则并使用 ESAPI API7 进行检测,确定了 OWASP 的适当转义机制。
  • Pixy 工具的静态污点分析用于检查 Web 应用程序页面的源代码并生成相应的控制流图,从结果图中删除了不可行的路径。
  • 遗传算法(GA) 用于从 XSS 攻击向量的初始种群生成不同的测试用例。
  • HTMLPurifier 用于在检测到的易受攻击路径处清理用户数据。

XSS 攻击检测技术

运⾏时检测构成了抵御⽹络中新的和未知攻击的最后⼀道防线。本综述确定了两种⽤于运⾏时攻击检测的探索技术:

  • HTTP 流量监控:通过运⾏时 HTTP 流量监控,捕获与正在运⾏的 Web 应⽤程序相关的每个请求和响应,并检查是否存在⾮受控⽤⼾数据的 潜在更改。表 8总结了采⽤这种⽅法的五项研究。每个解决⽅案都根据采⽤的检测⽅案、安装位置、优缺点进⾏了描述。
  • 机器学习:各种机器学习的模型被建⽴来检测 XSS 攻击,这些模型的开发旨在学习攻击向量的隐藏属性并在运⾏时做出正确的预测。

XSS 攻击防御技术

过滤防御:

  • 基于⽩名单/⿊名单的过滤:通过识别和列出所有良性/恶意脚本,系统可以区分和阻⽌XSS攻击。实际上,这是⼀个不可⾏的解决⽅案,因为在实践中⽆法列出所有恶意或良性脚本。为了缓解这个问题,除了开发⼈员⽤来构建⽬标 Web 应⽤程序的脚本外,所有脚本都被视为恶意脚本。
  • 基于正则表达式的过滤:不是使⽤正则表达式来描述此类脚本的⼀般模式,客⼾端或服务器端过滤器使⽤这些模式在运⾏时匹配和阻⽌恶意脚本。
  • 基于规则的过滤:规则可⽤于匹配可疑链接并检测输⼊数据中的异常。
  • 内容安全策略 (CSP): CSP 是另⼀种类型的过滤功能。它是⼤多数现代浏览器实际上完全或部分⽀持的计算机安全标准。它可以限制浏览器可以加载和执⾏的资源。 CSP 在服务器端指定,在 HTTP 响应中作为 HTTP 标头传输,并在客⼾端由浏览器执⾏。 CSP 通常⽤于防御 XSS 攻击,但实际上⽤于防御多种代码注⼊攻击。
  • 运⾏时污点跟踪:运⾏时污点跟踪可以控制攻击者在 URL 中注⼊的数据是否到达敏感接收器并导致浏览器执⾏其合并的脚本。
  • 上传过滤上传过滤:当⽂件内容上传到服务器时检查⽂件内容是否存在潜在的恶意脚本注⼊。检测到的可疑⽂件要么通过删除注⼊的脚本进⾏修改,要么⼲脆拒绝。它是防御 CS-XSS 的强⼤技术。

移动⽬标防御(MTD): MTD 技术旨在通过不断改变正在运⾏的应⽤程序的配置和参数值来降低攻击的成功率。这加强了对 Web 应⽤程序结构和⾏为的理解,从⽽增加了对⼿的不确定性并防⽌传统攻击。随机性是 MTD 技术的成功关键,因为攻击者可以学习确定性的变化,从⽽允许他们设计新的成功攻击向量。 MTD 技术已经展⽰了它们抵御复杂⽹络攻击的能⼒。

沙盒防御: 沙盒是一种隔离技术,可以完全控制正在运行的应用程序并防止传播可疑操作。一种改进的沙盒技术可防止 WXSS 攻击。 呈现的页面在客户端是隔离的。 根据特定的策略,每个网页都被分成不同的、独立的部分,命名为视图。 每个视图都有一个预定义的授权操作列表。可以通过 per-url 会话令牌和基于引用的视图验证等技术来实现。 该技术具有合理的延迟和内存开销(分别约为 1% 和 4%)。