Web 2.0 应用安全深入解析:企业级 Web 2.0 应用安全解决方案
 

2009-12-11 作者:赵静 来源:IBM

 
本文内容包括:
1. 什么是 Web2.0 ?
2. Web2.0 部分技术浅析
3. Web2.0 安全总结
4. Rational 如何应对 Web2.0 ?
5. 小结
参考资料
什么是 Web2.0 ?它包含了哪些技术?这些技术的产生又对网络应用安全带来了哪些隐患和风险?本文从这些问题着手,重点探讨 Web2.0 时代的技术特征和应用安全,并通过结合 Rational 安全解决方案,为大家提供面对新时代、新问题的应用安全应对思路。

什么是 Web2.0 ?它包含了哪些技术?这些技术的产生又对网络应用安全带来了哪些隐患和风险?本文从这些问题着手,重点探讨 Web2.0 时代的技术特征和应用安全,并通过结合 Rational 安全解决方案,为大家提供面对新时代、新问题的应用安全应对思路。

1. 什么是 Web2.0 ?

互联网技术在不断发展,从传统的、以获取信息为主的 Web 应用(如各大企业门户网站),到目前被广大网民喜爱的 Blog、Wiki 等,一种变革正在悄然形成。这种变革,不但改变了我们对 Web 应用的体验,也正在渐渐改变我们的生活方式。这就是 Web2.0。

在 Web 应用早期,我们是从浩瀚的互联网数据中,自己去寻找感兴趣的、由网站开发者提供的静态信息;而在 Web2.0 时代,我们自己就是信息的构建者,通过人与人的互动而产生出创造性的内容,这些内容再被更多的人管理和使用。那么,究竟什么是 Web2.0 呢?业界对此并没有一个标准定义。我们可以通过以下认同最高的描述,体会 Web2.0 的真谛。

“Web 2.0 并不是一个技术标准,不过它包含了技术架构及应用软件。它的特点是鼓励作为信息最终利用者通过分享,使得可供分享的资源变得更丰盛;相反的,过去的各种网上分享方式则显得支离破碎。”(引自维基百科)

“将纷繁芜杂的 Web2.0 现象放置于科技发展与社会变革的大视野,Web 2.0 可以说是信息通讯技术引发信息革命、知识社会所带来的面向未来、以人为本的创新 2.0 模式在互联网领域的典型体现,是由专业人员织网到所有用户参与织网的创新民主化进程的生动注释。”(引自维基百科)

从上面的描述可以看出,Web2.0 是一种新现象、新概念、新思维方式,而并不是新的技术标准。不同的角色,感受的是 Web2.0 的不同气息:对于研究网络技术的人员而言,Web2.0 像是一组名词、一些新社会软件的合成体,比如说 Social Networking、Blog、Wiki、Ajax、Mashup 等;对于经常在互联网上交流和分享的网民来说,Web2.0 则提供了更为自由、便捷的信息互动手段,他们借助 Blog、Wiki 等,和有着共同爱好的人们交换思想、分享内容;而对于商人们而言,Web2.0 则是新业务模式、新行业游戏规则的转变。新模式下,以往在门户网站上购买广告条,期待茫茫人海中出现感兴趣的鱼儿的被动现象,可以转变为针对有着不同兴趣爱好的社会网络群体,投放不同分类广告的主动局面,甚至可以主动收集人们的网络使用习惯、偏好等,推出完全不同的个性化服务。这些转变,也相应引出了“Blog 营销”、“长尾现象”等新经济模式。

对于更为深入的理解 Web2.0,Tim O'Reilly 的七条原则会更有帮助些。

1、将 Web 作为平台

2、驾驭群体智慧

3、数据将变成未来的“Intel Inside”

4、软件不断发行与升级的循环将会终结

5、轻量型程序设计模型

6、软件运行将跨越单一设备

7、丰富的用户体验

详细描述,请参考网址:http://tim.oreilly.com/news/2005/09/30/what-is-Web-20.html。结合这七条原则,我们可以更清楚的理解图 1 所示的 Web1.0 和 Web2.0 主要特性比较。 其中,Web2.0 “复杂 & 异步”的特点,我们会在后面的技术章节中涉及到。

图 1. Web1.0 和 Web2.0 比较
图 1. Web1.0 和 Web2.0 比较

下面我们举一些 Web2.0 的例子:

  1. 社会网络(Social Networking):也叫做虚拟社区,是一群有着共同兴趣的人组成的大众网络。这些兴趣可以是任何类型,比如说健康状况类似、拥有同一款汽车、都购买了 IBM 产品,等等。如 Facebook(www.facebook.com),就是一个著名的社会网络服务网站。
  2. Wiki:一种网站,允许用户方便的添加、删除或者编辑网站上的内容,有时甚至无需注册。这种便捷的交互操作使其立刻成为共享群体智慧的有效工具。业界有很多著名的 Wiki 网站,如维基百科 (www.wikipedia.org),IBM 在内部也开放了 WikiCentral。本文有部分信息来自于这两个站点。
  3. Mushup:中文是混搭的意思,也有翻译为聚集。指整合网络上多个资料来源或功能,以创造新服务的网络应用程序。“混搭”一词源自于流行音乐将两种不同风格的音乐混合,以产生新趣味的作法。Google 开放了其 Google Maps 的 API,因此诞生了很多以此为 Mushup 的应用,如 Twittervision(beta.twittervision.com),就是将 Google Map 和 Twitter 功能混搭,制造出在全球地图上,不同区域的人们互发消息的有趣应用。

2. Web2.0 部分技术浅析

Web2.0 中涉及了很多名词和术语,比如 Tags、Blogs、Ajax、Flex、MalWare、Wiki、RSS、Social Networking、Podcast、Mushup 等等。由于篇幅所限,我们仅在本章节分析 Ajax、Flex,同时,还将涉及越来越受到关注的 MalWare。

2.1 Ajax 和 Web2.0

Ajax 全称为“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),是一种创建交互式网页应用的网页开发技术。如图 2 所示,在 Web1.0 时代中,客户端浏览器和服务器之间的通讯是同步的,也就是说,当我们在 Web 页面上填写表单(例如使用搜索功能),请求就会发送到服务器上,经过处理后,服务器将完整的结果页面再次发送回来。可以看出,发送请求的前后两个页面,很多内容是完全重复的。这种做法的反复执行,极大的浪费了网络带宽,也浪费了使用者很多等待多余信息的宝贵时间。

图 2. Web1.0 的通讯模式
图 2. Web1.0 的通讯模式

Ajax 应用则可以和服务器通讯更改过的内容。它借助于客户端的 JavaScript 处理来自服务器的响应。同时,还有很多任务是由客户端本身来完成。因此,在网络上的数据交换更少、Web 服务器的处理时间更短。用户感觉到的是更快的请求响应速度。如图 3 所示。注意,图中的数据刷新替代了传统 Web 应用的页面刷新。

图 3. Ajax 应用的通讯模式
图 3. Ajax 应用的通讯模式

由于 Ajax 良好的用户体验,被认为是 Web2.0 的典型技术特征,已经在很多成熟应用中被广泛采纳,如大家熟悉的 Google 地图、Google 搜索建议、Gmail 等。要了解更多 Ajax 信息,请访问 http://www.openajax.org/index.php

2.2 Ajax 技术特征

2.2.1 Ajax 动态特征

Ajax 是构建在 DHTML(动态 HTML)技术之上的,这包括:

JavaScript:在 Web 应用客户端广泛使用的脚本语言;

DOM:Document Object Model,文档对象模型,用来代表 HTML 或 XML 文档的标准对象模型,当前浏览器都支持 DOM 并且允许 JavaScript 代码使用 DOM 来动态修改 HTML 内容;

CSS:Cascading Style Sheets,级联样式表,是一种用来描述 HTML 文档展现的样式表语言,JavaScript 可以在访问 Web 页面时动态修改 CSS。

通过这些动态技术,在 Ajax 应用中,客户端 JavaScript 通过动态修改 DOM 树结构和 CSS,实现了动态的更新 Web 页面。

2.2.2 Ajax 异步通讯特征

前面提到,Ajax 可以和服务器交换更改过的、而非整个页面的内容。这种异步通讯,是通过如下技术实现的:

JSON:JavaScript Object Notation,是一种基于文本(类似于 XML)、轻量级的数据交换格式。在 Web 应用中,可以使用 JSON 传输字符串、数字、二进制,或是数组、对象等等。由于它格式简单、容易理解、容易解析,是目前在 Ajax 应用中最为灵活的数据交换解决方案。

XMLHttpRequest 对象:是 XMLHTTP API 函数集的一个对象。该函数集在 Web 浏览器和服务器之间收发 XML 或其它数据。一个由 XMLHttpRequest 对象发送的 HTTP 请求并不要求页面中拥有或返回一个< form >元素,这意味着该对象的 send() 方法可以立即返回,从而让 Web 页面上的其它 HTML/JavaScript 元素继续由浏览器处理,而由服务器处理该 HTTP 请求并发送响应。通过这样的机制,实现动态更新页面部分元素,而无需传递整个页面的效果。它是当今 Ajax 和 Web2.0 应用的技术基础。

2.2.3 Ajax 非同源调用特征

在介绍 Ajax 调用之前,我们先来看看浏览器的“同源安全模型”。同源模型是客户端脚本运行的重要安全度量标准,它指的是来自于同一个“源”的脚本可以互相访问其方法和属性,而拒绝非同“源”的访问。该模型的精髓是:它认为从任何站点装载的内容是不安全的,当被浏览器不太信任的脚本运行时,它们应该只被允许访问来自同一站点的资源,而不是那些来自其它站点可能怀有恶意的资源。这里“源”包含了 Domain、Protocol 和 Port。如表 1 所示,当采用同源策略时,来自于 http://www.example.com/dir/page.html 页面的脚本 A,可以访问和使用来自 http://www.example.com/dir2/other.html 页面的脚本 B,因为两者在 Domain(www.example.com)、Protocol(http 协议)和 Port(默认为 80)上是一样的,被认为是同源;而脚本 A 不能访问 http://www.example.com:81/dir2/other.html 页面的脚本 C,因为他们不是同一个 Port,被认为非同源。

为什么要有同源的限制呢?这是浏览器提供的最为基础的安全保障之一。如果放开同源限制,黑客就可以通过引诱用户访问嵌入在自己恶意站点上的正常应用(如用 Iframe 将银行登录页面嵌入到黑客的恶意应用中),当用户访问该应用时,攻击脚本就可以在不同源之间互访,窃取用户登录信息,或者跟踪用户的各种操作。

表 1 浏览器的同源模型举例
 
用来比较的URL 结果 原因
http://www.example.com/dir/page.html 成功 相同的协议和主机
http://www.example.com/dir2/other.html 成功 相同的协议和主机
http://www.example.com:81/dir2/other.html 失败 相同的协议和主机,端口不同
https://www.example.com/dir2/other.html 失败 不同的协议
http://en.example.com/dir2/other.html 失败 不同的主机
http://example.com/dir2/other.html 失败 不同的主机(需要精确匹配的场景)
http://v2.www.example.com/dir2/other.html 失败 不同的主机(需要精确匹配的场景)

再回到 Ajax 调用问题上。Ajax 可以通过如下方法被调用:

XMLHttpRequest 对象:该对象受限于同源安全模型;

<Script> 标记:通过和 JSON 的结合,可以绕过同源模型,从不同域中获取信息;

浏览器扩展和插件:目前的浏览器都遵循同源模型,但是部分浏览器通过 plugin 实现跨域访问,如 FireFox 的插件 GreaseMonkey,它提供了 API(GM_XMLHttpRequest),是不受限于同源模型的 XMLHttpRequest 扩展。

Ajax 代理:它是一种应用级代理服务器,用于调解 Web 浏览器和服务器之间的 HTTP 请求和响应。Ajax 代理允许 Web 浏览器绕过同源模型,这样便可以使用 XMLHttpRequest 访问第三方服务器。图 4 是一个 Mushup 应用的例子,在 Ajax 代理使用前,由于同源模型限制,XMLHttpRequest 对象不能访问不同 Site 的内容;而图 5 则是 Ajax 代理使用后,它把对于不同 site 的请求进行转发,对于客户端而言,访问的仅是代理服务器上的同源资源。

图 4. Ajax 代理使用前
图 4. Ajax 代理使用前

图 5. Ajax 代理使用后
图 5. Ajax 代理使用后

2.3 Ajax 应用安全隐患

虽然 Ajax 技术极大地推动了 Web2.0(如 Mushup 应用)的发展,但是由于上述讨论的 Ajax 特征(动态、异步、突破同源限制),给应用安全带来了隐患。

2.3.1 Ajax 和 XSS(跨站脚本攻击)

XSS 是目前发生频率最高的网络攻击手段之一,它是通过引诱用户执行恶意的 JavaScript 脚本(如引诱用户点击包含恶意脚本的链接),来达到窃取用户信息或者实现其它恶意行为的目的。正是由于 Web2.0 鼓励信息分享、信息交互和协作,用户就有了更多的机会去看、去修改他人的信息,比如通过 Wiki、Blog 或 SNS(Social Networking Service),从而创造了更多的 XSS 攻击机会。Web1.0 时代的 XSS,是作为服务器端 Web 应用安全隐患被广泛注意,由于 Ajax,它已经蔓延到客户端。现在的浏览器允许在 Web 页面运行时主动插入 HTML 代码(比如使用 innerHTML 属性),如果这些代码中包含恶意的 JavaScript,则会被浏览器立刻执行,带来安全隐患。

2.3.2 Ajax 和 CSRF(跨站请求伪造)

CSRF 中,攻击者在用户完全未察觉的情况下,代表用户发送请求。这可以通过引诱用户点击链接,或是将请求嵌入到 Image Tag 等 HTML 标记中,强迫用户发送。这里列举一个攻击场景:攻击者向用户发送一封电子邮件,邮件中包含一个银行链接请求,请求的目的是从用户的银行账户向攻击者账户进行转账,用户使用该链接进入银行网站并进行了登录操作,该请求就会偕同用户 Cookie 信息自动发送给银行。如果银行网站仅把 Cookie 值当做验明用户身份的唯一手段,那么 Web 应用就认为该请求是合法的,转账操作立刻被执行。

在 Ajax 应用中,客户端和服务器的交互是通过 HTTP 协议实现的,如果站点安全保护措施不够强健,一旦 CSRF 成功,将会带来一系列隐患,如利用 Web-Mail 服务发送邮件、代表用户在 Blog 上写注释、在 SNS 中修改用户信息等等。

2.3.3 Ajax 和 DoS(拒绝服务攻击)

DoS 是通过某种手段让服务器资源耗尽,阻断正常用户访问的攻击方法。比如说向服务器提交大量请求,使服务器负荷过重。用户浏览器如果可以执行第三方 JavaScript,就会带来 DoS 攻击的可能性,因为第三方 JavaScript 逻辑中,很可能包含大量导致服务器资源耗尽的循环程序,所以允许大量 JavaScript 使用的 Ajax 应用中,DoS 攻击概率大大提高。

2.3.4 其它安全隐患

Mushup 应用通常是将任意第三方的 mushup 组件组合在一起,如果攻击者向 Mushup 应用提供了恶意的 mushup 组件,同时该应用没有提供足够的安全保护的话,用户和整个 Mushup 应用就面临着巨大的安全隐患。因为一个恶意的 mashup 组件可以向整个 Mushup 应用中注入恶意代码,从而触发多种攻击行为,包括 XSS、CSRF、DoS。如果该 Mushup 应用还提供服务器端的 Ajax 代理服务,由于 Ajax 代理突破了同源限制,恶意的客户端 mushup 组件就可以将用户的隐私发送到外部站点。

2.4 Flash/Flex 和 Web2.0

互联网从 1996 年引入了 Flash 技术后,通过动画和交互,极大的改变了 Web 页面的用户体验。2004 年 3 月,Macromedia 公司基于其专有的 Macromedia Flash 平台,发布了 Flex。它涵盖了支持 RIA(Rich Internet Applications)开发和部署的一系列技术。在 Web2.0 时代,越来越多的开发者使用 Flex 技术开发 Flash 应用,由此引入的安全隐患也不容忽视。

通常,对于 Flash 的访问,可以通过嵌入到 HTML 页面中,如图 6 所示。也可以使用 URL 直接访问,如图 7 所示。

图 6. 嵌入到 HTML 的 Flash 访问
图 6. 嵌入到 HTML 的 Flash 访问

图 7. 在 URL 中直接访问
图 7. 在 URL 中直接访问

Flash 使用 Action Script 脚本语言,该语言支持全局变量。 通常我们使用如下三种方式在 Flash 中指定全局变量:

  1. 直接引用
图 8. 直接引用
图 8. 直接引用
  1. 嵌入 URL 中
图 9. 嵌入 URL 中
图 9. 嵌入 URL 中
  1. 通过 Flash 属性
图 10. 通过 Flash 属性
图 10. 通过 Flash 属性

2.5 Flash 应用安全隐患

由于 Flash 支持全局变量,因此带来了很多安全隐患。只要攻击者控制了全局变量,那么他就可以实施多种攻击行为。

2.5.1 Cross-Site Flashing(跨站 Flash 攻击)

和 XSS 原理相似,不过 XSF 是通过向网站注入恶意的 Flash 程序来实施攻击。 由于 Web2.0 时代的应用复杂性(如 Mushup 应用),注入的恶意 Flash 不但可以攻击同源内的应用,还可能在非同源的各个组件中传播。

请看 XSF 的一个例子:

首先,某网站 Flash 中可能有事先定义好的全局变量 _root.movieURI,并且给该变量赋予正常 Flash 文件调用,然后通过 loadMovieNum() 方法加载 Flash 文件 movie.swf,如图 11。

图 11. 事先定义好全局变量
图 11. 事先定义好全局变量

对于攻击者,当他了解到此全局变量后,将恶意 Flash 文件 maliciousFile.swf 付给该变量,浏览器就通过 loadMovie() 方法装载了文件。如图 12。

图 12. 通过变量接收 Flash 文件
图 12. 通过变量接收 Flash 文件

2.5.2 Cross-Site Scripting through Flash(通过 Flash 进行跨站脚本攻击)

该方法使用易受感染的 Flash 文件进行典型的 XSS 攻击。和 XSF 很相似,攻击的发生同样来源于对全局变量的引用,如将全局变量作为装入函数(如 getURL())的参数,见图 13。

图 13. 定义全局变量
图 13. 定义全局变量

这样,攻击者可以通过调用 Flash 文件中的参数来装入恶意脚本,如图 14。

图 14. 调用参数执行脚本
图 14. 调用参数执行脚本

攻击者使用恶意脚本,可能执行如下操作:

1、将用户的 Cookie 值发送给攻击者;

2、将用户的共享 Flash 对象发送给攻击者;

3、将可通过 DOM(如 URL、表单字段等)访问的信息发送给攻击者。

2.6 MalWare 和 Web2.0

MalWare 是 Malicious Software(恶意软件)的缩写,它是指在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上安装运行,侵犯用户合法权益的软件。它包含很多类型,如广告软件、间谍软件、恶意共享软件等。

恶意软件已经成为计算机行业的“毒瘤”,虽然它并不是 Web2.0 的产物,但是在 Web2.0 时代,它有了更多的新传播渠道。除了通过传统方式,如邮件、即时通讯工具、网络安全漏洞传播外,现在的恶意软件,更多的是通过 Wiki、Blog、SNS 等传播。一方面,恶意软件制造者在新渠道中主动传播恶意软件;而另一方面,网络上的众多 Web 应用,因为没有保护意识,或者是没有防范的能力,为恶意软件提供了滋生的乐土。目前,很多大型公共网站,都发现了恶意软件的存在,这不仅影响了品牌形象、失去了客户信任,更是对客户的隐私和利益带来了极大的隐患。图 15 反映了近年来恶意软件的传播渠道变化趋势。

图 15. 恶意软件传播渠道变化趋势
图 15. 恶意软件传播渠道变化趋势

现在,恶意软件受到了前所未有的关注。在基础防范层面上,可以通过从客户端和服务器端着手。客户端保护包括:

    1. 明智的判断,不要接受不明来源的软件下载和安装,不要忽视浏览器警告和安全报警;
    2. 采用反病毒或反恶意软件工具;
    3. 保持操作系统、浏览器和其它软件的定期更新;
    4. 使用 Web 网关保护;

服务器端保护包括:

  1. 通过入侵防御系统(IPS)进行运行时过滤;
  2. 使用服务器端的反病毒软件;

3. Web2.0 安全总结

从上面章节的分析可以看出,Web2.0 时代的应用安全,有着明显的特征,可以总结为如下两个方面:

  1. 由于新技术的引入,带来了新的安全隐患,如 XSF 攻击等;
  2. 很多 Web1.0 时代的安全隐患,出现了新的传播渠道,如 Ajax 应用,就提高了 XSS、CSRF、DoS 等攻击的机会。图 16 列举了一些 Web1.0 的安全隐患,如 Cross-Site Scripting、Cross-Site Request Forgery、Authentication Issues、Phishing & Malware 等,而每个安全隐患下面,则列举了 Web2.0 时代导致该隐患的新渠道,或者说新面孔。

4. Rational 如何应对 Web2.0 ?

4.1 Web2.0 新安全隐患应对策略

考虑到 Web2.0 时代的应用安全特点,Rational Web 应用安全解决方案不仅加强了对原有 Web 安全隐患的诊断能力,还提供了针对新安全隐患的诊断和防御功能。

4.1.1 Flash 安全防御

Rational AppScan SE 7.8(AppScan 标准版)提供了对 Flash 安全隐患的完整分析和测试。这包括:

1、将 Web 应用中的 Flash 代码解析为文本数据,从中收集链接,进行安全隐患分析;

2、播放应用中的 Flash 文件,动态发现仅通过解析发现不了的链接;

3、测试由 Adobe® Flex 应用程序发送的后台 AMF 协议消息。

图 17. 是在配置 AppScan 扫描某 Web 应用时的 Flash 选项,用户可以根据需要选择如何处理应用中的 Flash。


图 17. AppScan 中 Flash 配置选项
图 17. AppScan 中 Flash 配置选项
 
  1. 提供对 Flash 应用错误配置的测试,如服务器是否对 crossdomain.xml 文件进行过多授权、是否对 Flash 安全沙箱机制进行过多授权、Flash 程序调试信息是否保留在最终版本中等等。根据这些最佳实践,可以在早期预防部分跨站攻击、信息泄漏等隐患。
  2. 提供十余种专门针对 Flash 的测试用例,如跨站点 Flash 脚本攻击、通过 Flash 钓鱼、通过 Flash 进行的跨站点脚本攻击、主机允许从任何域进行 Flash 访问等等。如图 18。

图 18. AppScan 的 Flash 测试用例
图 18. AppScan 的 Flash 测试用例
 

4.1.2 恶意软件扫描

Rational AppScan SE 7.8 中,引入了恶意软件扫描功能(注:7.8 版本中,是作为 Extension 插件提供,在 AppScan 即将发布的新版本中,已经作为内置功能)。

该功能具有如下 2 个特色:

  1. 构建在 AppScan 全面的常规扫描之上

网站进行常规安全扫描之后,恶意软件扫描功能可以在此结果之上进行分析,发现潜藏在 Web 应用中的恶意软件和恶意的外部链接。由于常规扫描的全面性,在完整的网站链接中发现恶意软件链接的概率将大大提高。对于扫描到的通向外部域(domain)的每一个链接,AppScan 都会返回其 ISS 分类。

除链接之外,AppScan 还可以检查应用的内容,分析恶意模式(malicious patterns)。这还包括通过链接指向其它域(domain)的内容,来寻找恶意软件模式,比如恶意可执行代码。可以在如下内容中查找恶意模式:通过应用内部 URL 得到的内容、从外部 URL 得到的内容、在常规安全扫描中排除的文件类型。

上述两项工作用到了 IBM ISS 技术。

  1. 引入 IBM ISS(Internet Security Systems)技术

IBM ISS 致力于为企业提供端到端的完整安全解决方案,包括针对桌面、服务器、网络和网关的解决方案。其中的 X-Force 团队是全球最著名的商业安全研究团体之一,为因特网安全的先发制人型方法奠定了基础。

针对恶意软件功能,AppScan 引入了 ISS X-Force VPS(Virus Prevention System) 引擎和 ISS WebFilter 引擎。

VPS 引擎在不需要进行更新的情况下,即可检测并阻断间谍软件以及高达 90% 的新型或未知病毒和蠕虫。不同于依靠病毒特征码的检测技术,VPS 采用 ISS 专有的行为识别技术,该技术能分析可执行文件的活动并检测整个恶意代码家族。AppScan 正是利用了这种深度分析,实现对扫描内容的恶意模式(malicious pattern)检测。

Webfilter 引擎结合了文本和图像分析技术,并使用业界最大的 URL 和图像数据库(该数据库存储了超过 1 亿条经过分类和标识的 Web 站点 URL,并且每日的更新量在 15 万条,可以通过如下链接访问该数据库 http://filterdb.iss.net/urlcheck/),快速而全面的对扫描结果中的链接进行分类,判断其是否为恶意链接。

使用恶意软件扫描器的工作步骤 1:评估 URL,如图 19。

图 19. AppScan 恶意软件扫描步骤 1
图 19. AppScan 恶意软件扫描步骤 1

使用恶意软件扫描器的工作步骤 2:发现的恶意软件和链接列表,如图 20。

图 20. AppScan 恶意软件扫描步骤 2
图 20. AppScan 恶意软件扫描步骤 2

使用恶意软件扫描器的工作步骤 3:掌握详细信息,如图 21。

图 21. AppScan 恶意软件扫描步骤 3
图 21. AppScan 恶意软件扫描步骤 3

使用恶意软件扫描器的工作步骤 4:根据修复建议改正问题,如图 22。

图 22. AppScan 恶意软件扫描步骤 4
图 22. AppScan 恶意软件扫描步骤 4

4.1.3 其它增强

  1. 增强的 JavaScript 引擎

Web2.0 使 JavaScript 得到了充分的应用。AppScan 可以分析 Web 应用中的 JavaScript,并且在新版本中,通过不断改进对内存的占用,提高 JavaScript 分析的性能。

  1. 新增的安全测试

1) 使用 RSS 种子注入的跨站脚本攻击测试

a、远程 RSS 种子注入测试

AppScan 现在可以测试使用 RSS 种子的应用,发现注入隐患。

b、文件上传测试

AppScan 现在可以测试允许文件上传到服务器的应用,发现安全隐患。

2) MD5 签名算法测试

AppScan 现在可以对在 SSL 认证中使用 MD5 签名算法进行测试,以发现该算法可能引起的钓鱼攻击。

3) Flash 代码暴露测试

Flex 制作工具允许用户查看 Flash 的源代码,这将导致源代码泄漏。AppScan 可以测试这种漏洞。

4.2 提高 Web 应用整体安全的应对策略

Web2.0 时代应用安全,除了应对由于新技术或新渠道带来的安全隐患之外,构建整体安全防护体系,从不同的角度和阶段解决安全问题,才是真正全面的应对之道。

Rational 应用安全解决方案就提供了全面应对的方法和平台,如图 23 是该解决方案的全景图。该平台贯穿于 Web 应用开发整个生命周期,在应用代码开发、程序构建、测试、安全管理阶段,由不同的版本支持不同的角色。

图 23. Rational Web 应用安全解决方案全景图
图 23. Rational Web 应用安全解决方案全景图

1、应用代码开发阶段,可以使用 AppScan 开发版(AppScan Developer Edition),通过和流行 IDE 的结合,保证研发人员代码的安全性,也可以使用 AppScan 企业版的 Web 客户端,进行开发阶段的黑盒扫描。

让开发人员使用的安全工具,必须具备容易使用、花费时间少、结果精确和修改建议可操作性强的特点。AppScan DE 版,专门针对研发人员设计,可以容易的和 Eclipse、RAD 等 IDE 集成,包括了静态代码分析(白盒测试)、动态代码分析(黑盒测试)、运行时分析,以及具有 IBM 专利的字符串分析功能,界面简单直观,不需要研发人员具备任何专业的安全知识。通过一次扫描,可以同时得到上述功能的所有结果,这些结果备有详细的修改说明,白盒分析更能精确的定位问题代码的位置,方便研发人员立刻修改。图 24 是使用 AppScan DE 版白盒测试的结果示例:

图 24. AppScan DE 白盒扫描示例
图 24. AppScan DE 白盒扫描示例

图 25. 是使用 AppScan DE 版黑盒测试的结果示例:

图 25. AppScan DE 黑盒扫描示例
图 25. AppScan DE 黑盒扫描示例

2、程序构建阶段,可以使用 AppScan 构建版(AppScan Build Edition),通过和自动构建工具或脚本的结合,在每次构建之后,自动触发应用的安全扫描。图 26 说明了使用 AppScan BE 版的流程:

图 26. AppScan BE 工作流程
图 26. AppScan BE 工作流程

3、测试阶段,可以使用 AppScan 测试版(AppScan Tester Edition),通过和测试管理工具(RQM、QC)的结合,将在测试阶段发现的安全漏洞全部纳入缺陷库进行过程管理,保证漏洞的及时、全面的解决。如图 27,是 AppScan TE 和 RQM 的集成使用。

图 27. AppScan TE 和 RQM 集成示例
图 27. AppScan TE 和 RQM 集成示例

4、在安全管理阶段,也就是 Web 应用上线后,可以使用 AppScan 标准版(AppScan Standard Edition)进行漏洞诊断,也可以通过 AppScan 企业版的 Web 客户端。

5、AppScan 企业版,是一个全面而丰富的企业级安全解决方案。要了解详细信息,可以参考文章《 IBM Rational AppScan Enterprise Edition 护驾企业 Web 应用安全》(参见 参考资源

5. 小结

通过本文对 Web2.0 时代的应用安全分析得知,在新时期保护企业 Web 应用,需要分成两个步骤来实施,其一是针对 Web2.0 引入的新安全隐患,及时更新防御手段;其二是建立完整的 Web 应用安全防御体系,对应用构建的各个环节都应该加以重视。

IBM Rational 安全解决方案,不仅有应对 Web2.0 时代的新功能,更从全面应用安全出发,为企业提供完整的应用安全应对思路。

参考资料

学习 获得产品和技术
  • 访问 Rational AppScan 产品专题,了解最新的 IBM Rational AppScan 产品文档和产品信息,获得技术文档和与 Web 应用安全相关的参考资源,可以查阅产品概览、产品手册、产品技术支持、试用版下载,以及相关文章、教程、多媒体课堂和产品演示等信息。
  • 访问 IBM Rational 软件交付平台 V7 专题,了解 Rational V7 产品的方方面面。
  • 获取免费的 Rational 软件工具包系列,了解最新的 IBM Rational 软件开发工具技术文档和资源。
  • 下载免费的 IBM Rational AppScan 试用版
  • 下载免费的 IBM Rational 试用版软件,了解 IBM Rational 软件的最新特性。
  • 获取更多 IBM 试用版软件,并熟练掌握来自 DB2®、Lotus®、Tivoli®,以及 WebSphere®的开发工具和中间件产品,用这些试用版软件开发您的下一个项目。这些试用版软件可以免费直接从 developerWorks 下载。
讨论

火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织