二十多年来,跨站脚本(简称 XSS)漏洞一直是主流网站的心头之痛。为什么过了这么久,这些网站还是对此类漏洞束手无策呢?
对于最近 eBay 网站曝出的跨站脚本漏洞,你有什么想法?为什么会出现这样的漏网之鱼?一个如此大规模的网站,不应该具备可靠的网关安全技术以阻止任何情况下的 XSS 攻击么?
即便从上世纪 90 年代开始,跨站脚本漏洞就已经为人们所熟知。时至今日,它仍在贻害为数不少的网站。大多数主流网站,包括谷歌,CNN,PayPal 以及 Facebook,都曾受过 XSS 漏洞的影响。该漏洞也常年出现在 CWE/SANS 前 25 个最危险的编程错误、OWASP 前 10 个最致命的 Web 应用安全风险之类的榜单。
XSS 攻击与大多数应用层攻击(诸如 SQL 注入攻击)不同,因为它攻击的是应用的用户,而非应用本身或应用服务器。这类攻击会往 Web 应用的内容中注入代码,通常是 JavaScript 之类的客户端代码。大多数网站都有许许多多的注入位置,包括搜索框、反馈表格,cookie 以及论坛等。借助 XSS 漏洞,黑客可以窃取数据,控制用户的会话,运行恶意代码,或操纵受害用户浏览器中显示的内容。
像 eBay 这样的网站,几乎完全基于用户产生的内容,通常在用户的项目描述部分包含许多活动内容(Active Content),比如 JavaScript 和 Flash。由于网站必须与用户互动,接收来自用户的输入、返回数据,这意味着,攻击者也可以直接与网站互动,从而穿破传统的外围安全防护。除非所有用户提供的内容都经过严格审查,XSS 攻击代码就有可能注入拍卖清单页面,从而影响每个访问该页面的用户。用户输入的所有内容(表单数据、cookie、邮件、文件、图片等)都应该视为不可信任,需要经历审查,删除其中可能被恶意使用的字符与字符串,才能继续执行脚本或传给数据库。
导致 eBay 这样的大网站持续受到 XSS 攻击的一大原因,是这些网站过于复杂,实时生成的网页常常会包含许多外部站点的内容。这使得测试阶段,枚举用户与应用交互的所有排列组合变得不太现实,继而导致 XSS 漏网之鱼的出现。
话虽如此,eBay 居然没有一套更为严格的代码审查流程(近几周发现了多个 XSS 漏洞),还是有些令人吃惊。用于测试 XSS 漏洞的工具其实很多,它们都能在代码上线之前有效查找漏洞。此外,开发者也可以使用安全控制库(诸如 OWASP 的企业安全 API 或微软的反跨站脚本库),而不需要自己编写验证检查。而且,诸如运行时应用自我保护(RASP)等网关安全技术也有助于检测并防御对 XSS 漏洞的攻击。因此,如此主流的一个大网站(eBay),却没能有效防御如此广为人知的安全漏洞,实在是有些让人失望。
如今,多样化的攻击手段层出不穷,传统安全解决方案越来越难以应对网络安全攻击。OneRASP 实时应用自我保护技术,可以为软件产品提供精准的实时保护,使其免受漏洞所累。想阅读更多技术文章,请访问 [OneAPM 官方技术博客]。
本文转自 OneAPM 官方博客
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。