互联网的发展历史也能够说是攻击与防御不断交织发展的过程。目前,全球因特网用户已达 13.5 亿,用户利用网络进行购物、银行转帐支付和各类软件下载,企业用户更是依赖于互联网构建他们的核心业务,对此,Web 安全性已经提升一个空前的高度。web
然 而,现实世界中,针对网站的攻击愈演愈烈,频频得手。CardSystems 是美国一家专门处理信用卡交易资料的厂商。该公司为万事达 (Master)、维萨 (Visa) 和美国运通卡等主要信用卡组织提供数据外包服务,负责审核商家传来的消费者信用卡号码、有效期等信息,审核后再传送给银行完成付款手续。这家公司为超过 10 万家企业处理信用卡信息,每一年业务金额超过 150 亿美圆。这家已有 15 年历史的公司怎么也没想到,竟然有黑客恶意侵入了它的电脑系统,窃取了 4000 万张信用卡的资料。这些资料包括持卡人的姓名、帐户号码等。这是美国有史以来最严重的信用卡资料泄密事件。这次攻击事件不只仅对消费者,对公司形成了巨大 的损失,甚至对美国的信用卡产业产生了严重的影响!sql
然而什么才是 Web 安全呢,或者说什么样的网站才是安全的呢?用户每每有一些常见的误区。数据库
然 而这些方法远远不能保障 Web 应用的安全,针对应用层面的攻击能够轻松的突破防火墙保护的网站。例如:最为常见的 SQL 注入攻击表现层面彻底是正常的数据交互查询。对于防火墙或者入侵检测系统而言,这是最为正常的访问链接,没有任何特征可以说明此种访问链接存在恶意攻击。 因此,一些简单的 SQL 注入语句就可使得装备昂贵网络安全设备的网站被轻松攻破。后端
令 人惊诧的是,几乎全部关注 Web 安全领域的人都会存在着上面咱们阐述的误区,而当前 Web 的安全现状也同时证实了这些误区的广泛性。“防火墙、IDS 是主要安全手段,SSL 保证了安全性,…”与之相对的是:互联网发展到今天,75%的安全问题居然是出如今应用程序自己。正如上面介绍的 SQL 注入攻击同样,这是防火墙、SSL、入侵检测系统没法预防、解决、和应对的!安全
以下图所示,目前安全投资中,只有 10%花在了如何防御应用安全漏洞,而这倒是 75%的攻击来源――10% Vs 75%,这是多么大的差距!这也是形成当前 Web 站点频频被攻陷的一个重要因素。服务器
那 么,什么样的防御才是一个完整的解决方案呢?经过附图 2 咱们能够看到,一个完整的 Web 防御不只仅包含了常见的 IDS、Firewall 等防御手段,更须要针对应用自己作好安全防御,这也是解决 75%安全漏洞的手段。那么什么样的攻击是防火墙、IDS、或者 SSL 没法应对的呢,他们又是如何利用应用自己的漏洞进行攻击的呢?下面咱们将作详细的阐述。网络
目前经常使用的针对应用漏洞的攻击已经多达几百种,最为常见的攻击为下表列出的十种。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 语句登录进网站、对隐秘数据进行查询等等。
通 过上述原理描述咱们能够看到,对于 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 应用将成为水中花镜中月。
如 下图所示,Rational AppScan 工做方式比较简单,就像一个黑盒测试工具同样,测试人员不须要了解 Web 应用自己的结构。AppScan 拥有庞大完整的攻击特征库,经过在 http request 中插入测试用例的方法实现几百中应用攻击,再经过分析 http response 判断该应用是否存在相应的漏洞。整个过程简单易懂高效,测试人员能够快速的定位漏洞所在的位置,同时 AppScan 能够详细指出该漏洞的原理以及解决该漏洞的方法,帮助开发人员迅速修复程序安全隐患。对于攻击的特征以及测试用例用户不须要花费大量的精 力,WatchFire 团队按期的对特征库进行更新,随着保证与业界的同步,最大化的提升用户的工做效率。
下面咱们经过简单的实例介绍一下 Rational AppScan 的使用:
首先肯定扫描站点的 URL,根据默认的模板配置向导,肯定扫描的整个站点模型以及你想扫描的漏洞种类。例如,我想扫描企业应用 www.xxx.com
,想根据默认值扫描是否有安全隐患,启动 AppScan,建立一个扫描,敲入 www.xxx.com
; 根据配置向导直至完成。
只须要点击执行。
如图所示,AppScan 以各类维度展示了扫描后的结果,不只仅定位了问题发生的位置,也提出了问题的解决方案。
Rational AppScan 同时提供了不少高级功能,帮助客户对复杂应用进行检测。支持的扫描配置有:
如 上所述,用户能够经过 AppScan 进行一系列高级配置,制定所要检测的 Web 模型,即哪些须要扫描、哪些不须要、扫描的方式等等;也能够定义须要扫描漏洞的列表,从而保证了用户关心的网站模型有无用户所关心的安全漏洞。在检测出安 全漏洞以后,AppScan 又提供了全面的解决方案帮助客户快速解决这些问题,最大化的保证 Web 应用的安全。另外,对于 Web 服务 AppScan 一样能够支持。
AppScan 提供了完善的报表功能,能够支持用户对扫描的结果进行各类分析,包括对行业或者法规的支持程度;同时,AppScan 也提供了一系列的小工具,例如:Authentication Tester 经过暴力检测方法扫描被测网站的用户名称和密码;HTTP Request Editor 提供了编辑 Http request 的功能,等等。
在整个软件开发生命周期中的各个阶 段,Rational AppScan 均可以被使用,全面的保障了软件的安全性。以下图所示,软件开发过程当中,软件开发人员、软件测试人员、QA、审核人员等诸多角色均可以经过 AppScan 检测应用,将漏洞尽早挖掘出来。下面咱们经过一些使用场景介绍一下 AppScan 给软件开发带来的利益。
开发人员在开发过程当中可使用 AppScan 或者专用插件,随时开发随时测试,最大化的保证我的开发程序的安全性。越早发现问题,解决问题的成本就越低,这为 Web 应用的安全提供了最为坚实的基础保障。
系 统测试人员使用 AppScan 对应用作全面的测试,一旦发现问题,能够快速的生成 defect,经过与 ClearQuest 的集成能够实现 defect 电子化跟踪,再传递到开发人员手中,指导开发人员迅速解决问题。极大的提升了开发团队的开发效率,也提供了完整了沟通平台解决方案。
这是系统上线前的安全质量关卡。任何系统上线都应该通过严格的上线测试,这也最大化的减小了上线后问题的出现,避免生产系统上线后给企业带来的巨额损失。
上线的系统应该按期检测,一旦出现问题更应该及时检测,越快速的定位发现问题,损失就会越小。
上面咱们介绍的是比较通用的使用场景。固然,不一样的企业可能不一样的特色,AppScan 使用场景的原则是最大化的提升使用效率、尽早的把问题暴露出来,为应用安全打下坚实的基础。每一个企业均可以根据自身的开发现状定义适合本身的使用模式。
通 过上面的介绍,咱们对 Web 安全现状、应用安全重要性、以及应用安全产品 Rational AppScan 的使用有了必定的认识。可是,工具带给客户的不只仅是一些功能,更为重要的是给企业带来的深层次的收益,给企业在开发过程、安全策略等层面带来了深入的变 化 . 下面咱们从几方面阐述 AppScan 给企业带来的价值:
综上所述,随着 Internet 的蓬勃发展,Web 的安全性已经被空前重视,薄弱的安全性也成为了不少企业发展的瓶颈。然而,即使安全性如此受重视的今天,不少人对如何保障 Web 的安去性都存在着巨大的误区。现实代表,只有增强 Web 应用的防御,才能有效的防范 75%的攻击,Web 应用的防御已经成为安全话题中最为不可获缺的部分。IBM Rational 提供了 Rational AppScan 解决方案,在 Web 开发、测试、维护、运营的整个生命周期中,帮助企业高效的发现、解决安全漏洞,最大限度的保证了应用的安全性,为企业发展提供了坚实的技术保障。
转载自:http://www.ibm.com/developerworks/cn/rational/r-cn-appscan2/