2008注定是不平凡的一年,在网络安全界也是一样。2008年初,SQL群注事件使得SQL注入重新成为网络安全界的一个关注焦点,机械化的注入工具出现,数以十万计的网站在数天内被攻击。SQL群注风暴硝烟未散,XSS(跨站脚本)攻击又提马杀到:6月25日,来自Darkreading.com的消息,Cenzic宣布,Yahoo Mail中存在XSS漏洞,同一天来自Theregister.com的消息,安全网站xssed.com称,“英国汇丰银行的多个网站上都存在跨站脚本漏洞,攻击者可以藉由这些跨站脚本漏洞,将访问这些合法银行网站的用户欺骗到其精心构建的网络钓鱼网站上,从而获取用户敏感的银行账户和密码信息。由于汇丰银行在修补网站漏洞方面动作缓慢,因此这些网站上存在的漏洞将在较长的时间内对网站用户的安全造成较大威胁”。 1.什么是XSS(跨站脚本)攻击?
XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。XSS是一种经常出现在Web应用中的计算机安全漏洞,它允许恶意Web用户将代码植入到提供给其它用户使用的页面中,比如HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击”,而JavaScript是新型的“ShellCode”。
XSS攻击和前段时间甚嚣尘上的SQL注入攻击一样,都是由于Web业务的代码编写人员不严谨的字符限制而导致的:当某个站点允许用户提交java script脚本(这在Web2.0年代非常普遍),而又没有对这些脚本进行严格分析,就有可能存在XSS漏洞。这就决定了XSS漏洞的独特性:任何允许提交脚本的页面都可能存在XSS漏洞,而且这些漏洞可能各不相同。
2.如何防御XSS攻击?
业内对XSS漏洞的防御一般有两种方式。
第一种方式就是代码修改,对用户所有提交内容进行验证,包括URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其它的一律过滤。接下来就是实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。最后一步就是确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。
但这种方法将降低Web业务的交互能力,用户仅能提交少量指定的字符,不适应那些交互性要求较高的业务系统。而且Web业务的编码人员很少有受过正规的安全培训,即便是专业的安全公司,由于侧重点的不同,也很难完全避免XSS:2008年1月,xssed.com的一份报告指出McAfee、Symantec、VeriSign这三家安全公司的官方站点存在约30个XSS漏洞。
第二种方式就是部署专业的防御设备,目前较为流行的有入侵防御产品,利用的就是入侵防御产品对应用层攻击的检测防御能力。用户在选择相应的产品之前,最好先了解一下相关产品的XSS、SQL注入等Web威胁的检测方式,有一些入侵防御产品采用的还是传统的特征匹配方法,如对经典的XSS攻击
比较好的方式是选择那些基于攻击手法或者说基于攻击原理检测的入侵防御产品。启明星辰公司于近期发布天清入侵防御系统的新版本,没有采用传统的特征匹配方式,而是采用了行为特征分析方式,通过分析XSS所有可能的攻击手法,建立一个XSS攻击行为库来分析判断XSS攻击。采用了这种方法的入侵防御产品可以避免传统安全产品在XSS攻击检测上的漏报和误报,实现精确阻断,为面临XSS威胁的广大网络管理员提供一个很好的选择。