内容


评论专栏

Bill Hines:(XML) 威胁无处不在……

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 评论专栏

敬请期待该系列的后续内容。

此内容是该系列的一部分:评论专栏

敬请期待该系列的后续内容。

摘自 IBM WebSphere 开发者技术期刊

新技术,新诱惑

面向服务的系统目前大行其道,并且的确理应如此。看起来面向服务的体系结构 (SOA) 已不再是时髦的技术,这让我们不禁疑惑,它究竟是言过其实还是一种真的非常有用的技术,我们也曾对以前其他的时髦技术产生过类似的疑惑,如可扩展标记语言 (XML) 或者更近一些的 Web 服务。

与 XML 和 Web 服务一样,SOA 体系结构正在整个 IT 行业发挥着它的作用,这也是由于一些有用的支持技术,如 IBM® WebSphere® Application Server V6 中的 Service Integration Bus,及其产品化的典型代表 IBM WebSphere Enterprise Service Bus。通常,新的技术在发挥其作用的同时,也会为实现它们的系统带来一整套新的攻击方式。负责安全和系统加强的 IT 专家很有必要对新技术可能给系统带来的漏洞保持持续警惕。黑客们不再关注传统的目标,可能是由于这些平台已经比较成熟,也可能是因为它们现在已经过时了。

黑客们新的攻击领域是构建于 Web 服务和 XML 之上的系统,正是由于这些系统的普及和不成熟的原因。其中的一类攻击定义为 XML 威胁,在这种攻击中,将向您的系统发送具有有害结构的 XML 文档。如果外部人员(如通过 Internet)可以访问系统,那么有些人就会发送一些消息来破坏该系统,或者甚至仅仅是消耗其资源。这些攻击型的客户甚至可能是经过授权可以使用您的系统的用户,但却试图以一种不适当的方式来利用这种授权。当因为 XML 和 SOAP 具有“通过防火墙”的能力而将其描述为新的 IT 领域的“神奇药方”时,一些有见地的计算机专家立即发现了这种方式中潜在的安全问题。设置防火墙是有其目的的,不是吗?黑客将这种“特性”看作 XML 提供的免费服务,他们可以利用这种特性轻松地通过防火墙。

通常,程序员会为使用拙劣技术进行的攻击留下后门,如没有严格地定义 Web 服务所需的输入数据的类型。使用 xml:any 数据类型就是这样的一个例子,它并没有将输入数据限定为整数或者字符串。如此一来,攻击者就可以向该属性发送有害的 XML 数据,并且这些数据将被看作是完全合法的输入。

XML 威胁可分为以下主要的四类:

  • XML 拒绝服务 (xDoS)——降低 Web 服务性能或禁止 Web 服务,以使有效的服务请求受到阻碍或拒绝。
  • 未经授权的访问——获得对 Web 服务或其数据的未经授权的访问。
  • 数据完整性/机密性——这些攻击将破坏 Web 服务响应、请求或基础数据库的数据完整性。
  • 系统受损——损坏 Web 服务本身或承载它的服务器。

在这四种主要分类中又有一些不同的攻击类型,稍后我们将对它们进行介绍。同时请注意,这些攻击可以是单个消息或者多个消息的攻击。

用来承载 Web 服务的基于软件的应用服务器通常很容易受到这些攻击,由于性能原因,它们常常在运行过程中关闭了 XML 验证,而且可能并没有注意到大多数的 XML 攻击类型。正如我们将看到的那样,一旦 XML 到达了解析器,那么就为时已晚了。更糟的是,如果您的系统不具有 Web 服务或 SOAP 的复杂性,而直接接受 Native XML 文档,那么它更容易受到攻击。

特定类型的 XML 威胁

下面列出了四种主要类别中的特定攻击类型。其中有些攻击类型是比较常见的,这些相同的攻击类型会出现在任何可以远程访问的服务中(例如,消息篡改)。其他的攻击,尽管并不真正专门针对基于 XML 的服务,但却更有可能出现在具有 XML 本质特征的服务中。

单消息 xDoS

  • 特大有效负载——发送一个非常大的 XML 消息来耗尽目标系统的内存和 CPU。
  • 递归元素——XML 消息可以用来强制进行递归实体扩展(或其他重复性处理)以耗尽服务器资源。billion laughs 攻击就是一种该类型的攻击,它在 Internet 是比较常见的。
  • 大标记——无效的 XML 消息可能包含非常长的元素名称或非常多的标记。这种攻击可能还会导致缓冲区溢出。
  • 强制性解析——有意构造难以解析的 XML 消息,以消耗计算机资源。
  • 公钥 DoS——通过传输具有大量长密钥长度 (long-key-length) 的消息(如计算上开销很高的数字签名),利用公钥操作的不对称性本质来强制消耗接收者的资源。

多消息 XDoS

  • XML 泛滥——每秒发送数以千计的恶性消息来占用 Web 服务。这种攻击可以与应答攻击联合使用,以绕过身份验证,并且再加上单消息 XDoS 来增加其危害程度。
  • 资源劫持 (hijack)——作为一项永远无法结束的事务的一部分,发送锁定或占用目标服务器资源的消息。

未经授权的访问

  • 字典攻击——根据字典词汇,使用蛮力搜索的方式推测一个有效用户的密码。
  • 非法改装的消息——伪造来自有效用户的消息,如通过使用“中间人 (Man in the Middle)”来获得一个有效的消息,然后对其进行修改并发送一个不同的消息。
  • 应答攻击——为实现恶意的效果,重新发送一个以前曾经有效的消息,其中可能只是重放部分消息(如安全令牌)。

数据完整性/机密性

  • 消息篡改——修改传递的请求或响应消息中的部分内容,在未能检测到的时候最为危险(有时也称作消息改动)。
  • 数据篡改——利用访问控制机制中允许攻击者对 Web 服务进行未经授权调用的弱点来更改数据。
  • 消息探听——通过检查消息中所有或部分内容对数据隐私进行直接攻击。以明文方式传输消息、传输加密的但以明文方式存储的消息、或者由于密钥被窃取或通过密码分析获取后对消息进行解密,在以上几种情况下都可能发生这种攻击。
  • XPath/XSLT 注入——向应用程序逻辑中注入表达式。更新的修改中还包括暗藏 XPath 注入,它降低了安置攻击所需的知识。
  • SQL 注入——将 SQL 插入到 XML 中以获取服务设计返回内容以外的数据。
  • WSDL 枚举——检查 WSDL 中列出的服务以推测并获取对未列出的服务的访问。
  • 消息探听——使用 SOAP 路由 Header 来访问内部 Web 服务。

系统受损

  • 恶意包含——使得 Web 服务在其输出中包含无效的外部数据或者从服务器的文件系统中返回特权文件。例如,使用嵌入的文件:向攻击者返回 UNIX 密码文件或其他特权数据的 URL。
  • 内存空间缺口——通过栈溢出、缓冲区溢出或堆错误来实现,以宿主进程的权限执行攻击者提供的任何代码。
  • XML 封装——在 XML 负载中嵌入系统命令,如通过 CDATA 标记。
  • XML 病毒 (X-Virus)——使用带附件的 SOAP 或其他附件机制来传递恶意的可执行代码,如病毒或蠕虫。

XML 威胁保护

既然已经让您意识到了威胁(希望如此),那么让我们来讨论如何保护系统免受这些攻击。解决方案是使用加强的支持 Web 服务的网关。这种新类型的高性能设备可以在开启验证的情况下处理进入的 XML 消息,同时注意 XML 威胁。因为这些设备以线速运行并经过加强,它们适合用于 DMZ 中作为防御攻击的前线,而因为基础平台的复杂性和解析/处理的速度过慢,所以基于软件的代理或网关不适合用于该目的。

最近 IBM 兼并了一家名为 DataPower® 的公司,它提供了这样的产品并可以保护免受这些类型的威胁。这些产品都是硬件设备,它们在出厂前经过各种方式的彻底加强,例如,它们并不包含真正的操作系统或者硬盘。

主要的 DataPower 前端配置对象(多协议网关、XML 防火墙、应用程序防火墙和 Web 服务代理)都包含对 XML 威胁的配置页,可以用来保护免受前面列举的特定类型的威胁。事实上,根本无需配置,DataPower 就能够对其中的一些威胁进行保护,如图 1 所示。

图 1. 威胁保护配置
图 1. 威胁保护配置
图 1. 威胁保护配置

XML 威胁配置页的另一个部分,针对单消息攻击类型,提供了限制消息、附件、节点大小、属性数目以及元素深度的能力,前面我们已经讨论了在单消息攻击中所使用的这些内容。

该页面中的第三个部分,针对多消息攻击,提供了定义特定间隔大小的特别有用的能力,在这个间隔期间只允许一定数量的请求(如果您希望这样),它可以针对特定的 IP 地址或子网。

最后,XML 威胁窗格还可以预防不需要的协议(或者防止某些较低的版本的协议到达承载 Web 服务的服务器),以及针对 XML 病毒提供保护,通过移除或限制消息中所能够包含的附件来实现。同时还提供了可用的出口,这样就可以使用外部病毒扫描程序来对病毒进行扫描。保护免受更复杂的攻击(如 SQL 注入字典攻击)需要更多自定义的配置,如用户自定义字典所允许的语法。XML 威胁保护只是这些令人惊讶的设备所能完成的任务中的一小部分。

结束语

要真正地加强使用 Web 服务的系统,您需要执行几个重要的安全步骤(Gartner 和其他人所推荐的),具体包括:

  • 检查消息是否良构。
  • 验证模式。
  • 验证数字签名。
  • 对消息进行签名。
  • 通过 XML 转换和路由实现服务虚拟化以屏蔽内部资源。
  • 在现场级别对数据进行加密。

还需要使用前面介绍的针对不同攻击类型的其他监视类型以及配置来确保与服务级协议的兼容性。可以由网关设备(如 DataPower)在前端执行这些密集的操作,这样可以显著地节省后端资源的消耗和配置。承载 Web 服务的系统,特别是面向公共 Internet 的系统,应该认真地考虑使用加强的网关设备作为 XML 防火墙以保护您的系统免受 XML 威胁。

需要进行自我保护,因为威胁无处不在,并且它们会给您带来危害。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere, SOA and web services, XML
ArticleID=110945
ArticleTitle=评论专栏: Bill Hines:(XML) 威胁无处不在……
publish-date=05082006