使用 Rational AppScan 保证 Web 应用的安全性,第 2 部分: 使用 Rational AppScan 应对 Web 应用攻击

1 当前 Web 安全现状

互联网的发展历史也能够说是攻击与防御不断交织发展的过程。目前,全球因特网用户已达 13.5 亿,用户利用网络进行购物、银行转帐支付和各类软件下载,企业用户更是依赖于互联网构建他们的核心业务,对此,Web 安全性已经提升一个空前的高度。web

然 而,现实世界中,针对网站的攻击愈演愈烈,频频得手。CardSystems 是美国一家专门处理信用卡交易资料的厂商。该公司为万事达 (Master)、维萨 (Visa) 和美国运通卡等主要信用卡组织提供数据外包服务,负责审核商家传来的消费者信用卡号码、有效期等信息,审核后再传送给银行完成付款手续。这家公司为超过 10 万家企业处理信用卡信息,每一年业务金额超过 150 亿美圆。这家已有 15 年历史的公司怎么也没想到,竟然有黑客恶意侵入了它的电脑系统,窃取了 4000 万张信用卡的资料。这些资料包括持卡人的姓名、帐户号码等。这是美国有史以来最严重的信用卡资料泄密事件。这次攻击事件不只仅对消费者,对公司形成了巨大 的损失,甚至对美国的信用卡产业产生了严重的影响!sql

1.1 Web 安全的认识误区

然而什么才是 Web 安全呢,或者说什么样的网站才是安全的呢?用户每每有一些常见的误区。数据库

“Web 网站使用了防火墙,因此很安全”
不管是应用级仍是端口级的防火墙针对的都是网络层面的攻击,经过设置可访问的端口或者应用,把恶意访问排除在外,然而如何鉴别善意访问和恶意访问是一个问题。访问一旦被容许,后续的安全问题就不是防火墙能应对了。
“Web 网站使用了 IDS,因此很安全”
经过模式识别对网络层面的攻击作出防御措施。然而相似于防火墙,经过利用程序漏洞,经过正常链接进行攻击的访问没法被识别和处理。
“Web 网站使用了 SSL 加密,因此很安全”
SSL 对网站发送和接收的信息都进行加密处理,然而 SSL 没法保障存储在网站里的信息的安全和网站访问者的隐私信息。采用 64 位甚至 128 位 SSL 加密的网站被黑客攻陷的例子举不胜举。
“漏洞扫描工具没发现任何问题,因此很安全”
当前漏洞扫描工具已经被普遍使用去查找一些明显的网络安全漏洞。同理,扫描工具没法对网站应用程序进行检测,没法查找应用自己的漏洞。
“咱们每季度都会聘用安全人员(Pen Tester)进行审计,因此很安全”
人为的检测考察不只仅效率低,不可控因素也较多,同时对于代码变动频繁的今天,Pen Tester 也没法知足全面的安全需求

然 而这些方法远远不能保障 Web 应用的安全,针对应用层面的攻击能够轻松的突破防火墙保护的网站。例如:最为常见的 SQL 注入攻击表现层面彻底是正常的数据交互查询。对于防火墙或者入侵检测系统而言,这是最为正常的访问链接,没有任何特征可以说明此种访问链接存在恶意攻击。 因此,一些简单的 SQL 注入语句就可使得装备昂贵网络安全设备的网站被轻松攻破。后端

1.2 Web 安全现状

令 人惊诧的是,几乎全部关注 Web 安全领域的人都会存在着上面咱们阐述的误区,而当前 Web 的安全现状也同时证实了这些误区的广泛性。“防火墙、IDS 是主要安全手段,SSL 保证了安全性,…”与之相对的是:互联网发展到今天,75%的安全问题居然是出如今应用程序自己。正如上面介绍的 SQL 注入攻击同样,这是防火墙、SSL、入侵检测系统没法预防、解决、和应对的!安全

以下图所示,目前安全投资中,只有 10%花在了如何防御应用安全漏洞,而这倒是 75%的攻击来源――10% Vs 75%,这是多么大的差距!这也是形成当前 Web 站点频频被攻陷的一个重要因素。服务器

图 1. 当前安全现状统计分析图

当前安全现状统计分析图

那 么,什么样的防御才是一个完整的解决方案呢?经过附图 2 咱们能够看到,一个完整的 Web 防御不只仅包含了常见的 IDS、Firewall 等防御手段,更须要针对应用自己作好安全防御,这也是解决 75%安全漏洞的手段。那么什么样的攻击是防火墙、IDS、或者 SSL 没法应对的呢,他们又是如何利用应用自己的漏洞进行攻击的呢?下面咱们将作详细的阐述。网络

图 2. Web 应用的网络防御

Web 应用的网络防御

常见针对 Web 应用攻击的十大手段

目前经常使用的针对应用漏洞的攻击已经多达几百种,最为常见的攻击为下表列出的十种。session

十大攻击手段
应用威胁 负面影响 后果
跨网站脚本攻击 标识盗窃,敏感数据丢失… 黑客能够模拟合法用户,控制其账户。
注入攻击 经过构造查询对数据库、LDAP 和其余系统进行非法查询。 黑客能够访问后端数据库信息,修改、盗窃。
恶意文件执行 在服务器上执行 Shell 命令 Execute,获取控制权。 被修改的站点将全部交易传送给黑客
不安全对象引用 黑客访问敏感文件和资源 Web 应用返回敏感文件内容
伪造跨站点请求 黑客调用 Blind 动做,模拟合法用户 黑客发起 Blind 请求,要求进行转账
信息泻露和不正确的错误处理 黑客获得详细系统信息 恶意的系统检测可能有助于更深刻的攻击
被破坏的认证和 Session 管理 Session token 没有被很好的保护 在用户推出系统后,黑客可以盗窃 session。
不安全的木马存储 过于简单的加密技术致使黑客破解编密码 隐秘信息被黑客解密盗窃
不安全的通信 敏感信息在不安全通道中以非加密方式传送 黑客能够经过嗅探器嗅探敏感信息,模拟合法用户。
URL 访问限制失效 黑客能够访问非受权的资源链接 黑客能够强行访问一些登录网页、历史网页。

咱们经过注入缺陷(Injection Flaws,排名第二的攻击)对攻击原理进行一下说明。app

在 网站的应用中须要应用到大量的数据库查询检索等功能,例如最简单的例子是网站登录,用户须要输入登录名称和密码进行登录认证。在早期的开发中一般使用最为 简单的 select 语句实现此功能,即 select * from users where username = “XXXX” and password = “XXXX”( 假设数据库 user 表名称为 users,用户名和密码字段名称为 username 和 password)。经过截取用户在文本框中录入的字符串,再进行拼接,造成 select 语句,最终若是表 users 中有符合此条件的记录(即该用户名和密码),系统将会返回有效记录,从而容许登录系统中。工具

然而,此开发方法隐藏了一个巨大的漏洞,黑客能够经过 SQL 注入攻击攻入网站。以下图所示,黑客在登录界面录入的不是用户名,而是一串字符串 (’or 1=1 --)。黑客的目的是在本来应该录入用户的地方录入了一串字符串,致使整个 select 语句发生了变化:select * from users where username=’’or 1=1。熟知 Select 语句的人知道,在条件语句中,不管用户名称是否正确,因为 1=1 永远是正确的,因此 select 将会将全部 users 表中的数据返回。最终的结果是,黑客登录到这个系统中。经过 SQL 注入攻击,黑客能够轻松的敲入一些 sql 语句登录进网站、对隐秘数据进行查询等等。

图 3. 攻击举例

攻击举例

通 过上述原理描述咱们能够看到,对于 SQL 注入攻击不管是防火墙仍是入侵检测系统都没法预防和阻止,惟一的办法是将应用自己的漏洞关闭。例如经过参数的传递配合存贮过程来实现数据库查询,这比动态 的构建 sql 语句安全不少。好比在 ASP.net 中经过下面的程序将会避免攻击:

' Visual Basic example
 Dim DS As DataSet
 Dim MyConnection As SqlConnection
 Dim MyCommand As SqlDataAdapter
 Dim SelectCommand As String = "select * from users where username = @username"
 ...
 MyCommand.SelectCommand.Parameters.Add(New SqlParameter("@username", 
 SqlDbType.NVarChar, 20))
 MyCommand.SelectCommand.Parameters("@username").Value = UserNameField.Value
 // C# example
 String selectCmd = "select * from Authors where state = @username";
 SqlConnection myConnection = new SqlConnection("server=...");
 SqlDataAdapter myCommand = new SqlDataAdapter(selectCmd, myConnection);
 myCommand.SelectCommand.Parameters.Add(new SqlParameter("@username", 
 SqlDbType.NVarChar, 20));
 myCommand.SelectCommand.Parameters["@username"].Value = UserNameField.Value;

除 了注入缺陷攻击,常见的应用攻击还有跨网站脚本攻击、恶意文件执行攻击、不安全直接对象应用攻击、跨站点请求伪造攻击、信息泄漏以及利用错误处理机制展开 攻击、等等。每种攻击都相似与 SQL 注入攻击,根据应用程序自己的漏洞,对系统进行破坏工做,例如:获取系统权限、获取机密信息、模拟合法用户等等。

综 上所述,这些利用 Web 应用漏洞的攻击是 Web 安全最主要的威胁来源,75%的攻击来源于此,只有对应用程序自己进行改造才能避免攻击。然而,如何发现这些应用漏洞是保证安全的第一前提,咱们如何以最 快最有效的方式发现 Web 应用自己的漏洞呢?没有高效检测手段,安全的 Web 应用将成为水中花镜中月。

3 经过 Rational AppScan 如何应对网站攻击

IBM Rational AppScan 正是应对这一挑战的利器。

如 下图所示,Rational AppScan 工做方式比较简单,就像一个黑盒测试工具同样,测试人员不须要了解 Web 应用自己的结构。AppScan 拥有庞大完整的攻击特征库,经过在 http request 中插入测试用例的方法实现几百中应用攻击,再经过分析 http response 判断该应用是否存在相应的漏洞。整个过程简单易懂高效,测试人员能够快速的定位漏洞所在的位置,同时 AppScan 能够详细指出该漏洞的原理以及解决该漏洞的方法,帮助开发人员迅速修复程序安全隐患。对于攻击的特征以及测试用例用户不须要花费大量的精 力,WatchFire 团队按期的对特征库进行更新,随着保证与业界的同步,最大化的提升用户的工做效率。

图 4. Rational AppScan 工做示意图

Rational AppScan 工做示意图

下面咱们经过简单的实例介绍一下 Rational AppScan 的使用:

  • 定义扫描

首先肯定扫描站点的 URL,根据默认的模板配置向导,肯定扫描的整个站点模型以及你想扫描的漏洞种类。例如,我想扫描企业应用 www.xxx.com,想根据默认值扫描是否有安全隐患,启动 AppScan,建立一个扫描,敲入 www.xxx.com; 根据配置向导直至完成。

图 5. 默认的模板配置向导

默认的模板配置向导

图 6. 建立一个扫描

建立一个扫描

  • 扫描启动,进行测试

只须要点击执行。

  • 扫描结果查看

如图所示,AppScan 以各类维度展示了扫描后的结果,不只仅定位了问题发生的位置,也提出了问题的解决方案。

图 7. 扫描后的结果

扫描后的结果

4 Rational AppScan 深刻介绍

Rational AppScan 同时提供了不少高级功能,帮助客户对复杂应用进行检测。支持的扫描配置有:

  • Starting URL:起始 URL,制定被测应用的起始地址
  • Custom Error Pages:制定错误网页提升测试效率
  • Session IDs:管理测试过程当中的 session
  • Automatic Server Detection:自动检测应用所在的应用服务器、web server、操做系统
  • Exclusion and Inclusion:制定哪些 Web 被扫描或者被排除,哪些文件类型不被扫描
  • Scan Limits:其余高级扫描限制,例如扫描次数限制等
  • Advanced:扫描的方式,是宽度扫描仍是深度扫描
  • Communication Settings:对扫描中的延时、线程数量进行配置
  • Proxy Settings:代理设置vLogin/logout:对被测应用的登录进行设置,能够采用录制回放的方式、也可使用自动登录的方式
  • configure a Test Policy: 配置测试测量,即想测试哪些漏洞。
  • ……

如 上所述,用户能够经过 AppScan 进行一系列高级配置,制定所要检测的 Web 模型,即哪些须要扫描、哪些不须要、扫描的方式等等;也能够定义须要扫描漏洞的列表,从而保证了用户关心的网站模型有无用户所关心的安全漏洞。在检测出安 全漏洞以后,AppScan 又提供了全面的解决方案帮助客户快速解决这些问题,最大化的保证 Web 应用的安全。另外,对于 Web 服务 AppScan 一样能够支持。

AppScan 提供了完善的报表功能,能够支持用户对扫描的结果进行各类分析,包括对行业或者法规的支持程度;同时,AppScan 也提供了一系列的小工具,例如:Authentication Tester 经过暴力检测方法扫描被测网站的用户名称和密码;HTTP Request Editor 提供了编辑 Http request 的功能,等等。

5 Rational AppScan 的使用场景

在整个软件开发生命周期中的各个阶 段,Rational AppScan 均可以被使用,全面的保障了软件的安全性。以下图所示,软件开发过程当中,软件开发人员、软件测试人员、QA、审核人员等诸多角色均可以经过 AppScan 检测应用,将漏洞尽早挖掘出来。下面咱们经过一些使用场景介绍一下 AppScan 给软件开发带来的利益。

图 8. AppScan 使用场景

AppScan 使用场景

5.1 开发人员使用 AppScan

开发人员在开发过程当中可使用 AppScan 或者专用插件,随时开发随时测试,最大化的保证我的开发程序的安全性。越早发现问题,解决问题的成本就越低,这为 Web 应用的安全提供了最为坚实的基础保障。

测试人员使用 AppScan

系 统测试人员使用 AppScan 对应用作全面的测试,一旦发现问题,能够快速的生成 defect,经过与 ClearQuest 的集成能够实现 defect 电子化跟踪,再传递到开发人员手中,指导开发人员迅速解决问题。极大的提升了开发团队的开发效率,也提供了完整了沟通平台解决方案。

5.3 审核人员上线前使用 AppScan

这是系统上线前的安全质量关卡。任何系统上线都应该通过严格的上线测试,这也最大化的减小了上线后问题的出现,避免生产系统上线后给企业带来的巨额损失。

5.4 上线后审计、监控人员使用 AppScan

上线的系统应该按期检测,一旦出现问题更应该及时检测,越快速的定位发现问题,损失就会越小。

上面咱们介绍的是比较通用的使用场景。固然,不一样的企业可能不一样的特色,AppScan 使用场景的原则是最大化的提升使用效率、尽早的把问题暴露出来,为应用安全打下坚实的基础。每一个企业均可以根据自身的开发现状定义适合本身的使用模式。

 

6. 为企业带来的收益

通 过上面的介绍,咱们对 Web 安全现状、应用安全重要性、以及应用安全产品 Rational AppScan 的使用有了必定的认识。可是,工具带给客户的不只仅是一些功能,更为重要的是给企业带来的深层次的收益,给企业在开发过程、安全策略等层面带来了深入的变 化 . 下面咱们从几方面阐述 AppScan 给企业带来的价值:

AppScan 是 Web 应用安全的坚实保障
正如上面所论述的同样,当前 Web 安全 75%的漏洞出自于应用自己,快速全面的定位问题并提供完善的解决方案将会帮助开发团队构建一个健壮的应用。
AppScan 使得开发成本下降、开发效率提升
开发测试人员经过 Rational AppScan 能够迅速的定位安全隐患,早期发现问题不只有助于解决问题,更下降了开发成本,避免问题过晚出现所形成的巨大损失。
AppScan 给企业提供了统计分析能力
Rational AppScan 提供了灵活报表功能,能够支持对扫描结果进行统计分析;支持对规范法规遵循的分析;更提供了 Delta 比较报告,能够比较两次检测的结果从而做为质量检验的基础数据  AppScan 帮助创建企业级的测试策略库
Rational AppScan
  帮助企业根据不一样的应用类型创建不一样的测试策略,同时用户能够定义针对不一样威胁的解决方法,持续的知识积累保证了企业拥有更完善的安全解决方案。

总结

综上所述,随着 Internet 的蓬勃发展,Web 的安全性已经被空前重视,薄弱的安全性也成为了不少企业发展的瓶颈。然而,即使安全性如此受重视的今天,不少人对如何保障 Web 的安去性都存在着巨大的误区。现实代表,只有增强 Web 应用的防御,才能有效的防范 75%的攻击,Web 应用的防御已经成为安全话题中最为不可获缺的部分。IBM Rational 提供了 Rational AppScan 解决方案,在 Web 开发、测试、维护、运营的整个生命周期中,帮助企业高效的发现、解决安全漏洞,最大限度的保证了应用的安全性,为企业发展提供了坚实的技术保障。

 

转载自:http://www.ibm.com/developerworks/cn/rational/r-cn-appscan2/

相关文章
相关标签/搜索