2010-08-06 17:20:51 来源:安全在线
本文我们讨论的是面向服务体系架构(SOA)的安全应用。在展开讨论之前,首先让我们来解析面向服务体系架构的实际含义。面向服务体系架构是一种涉及若干以服务为导向的应用软件的体系架构。最初面向服务体系架构中的服务与一系列技术相关,包括SOAP, WSDL和UDDI。不过许多研发人员对REST(表象化状态转变,简称REST)服务显示出更大的兴趣,由此REST成为面向服务体系架构中广为接受的组成部分。由于REST被广泛应用于Web 2.0软件,因此Web2.0的兴起也巩固了REST在面向服务体系架构领域中的地位。最近云服务(诸如亚马逊在线的简单查询服务SQS)也开始和本地服务并驾齐驱,共同创建混合面向服务体系架构环境。所有这些使得面向服务体系架构成为包含最初的SOAP/REST/VDDI堆栈,REST服务和云的集合体。从安全应用的专业角度来看,所有这些都必须得到安全保障。
提及面向服务体系架构安全,首先要问的是为什么。为什么要对面向服务体系架构实施安全保障呢?毋庸置疑的答案就是要保护面向服务体系架构不受攻击。这是一个合理的理由,但是应用面向服务体系架构安全还有其他不可忽视的动因,诸如监控面向服务体系架构中服务的使用。我们首先从审查面向服务体系架构技术(包括SOAP和REST)的攻击漏洞开始。然后我们将审核诸如WS-Security等安全标准如何应用到面向服务体系架构,如何通过协议实现控制使用和监控,最后我们将检查企业在整合本地网站应用软件和云计算服务时可能产生的安全隐患。
面向服务体系架构风险综述
在面向服务体系架构中影响XML和REST服务的内容风险是什么?在XML里,有几种大家所熟知的攻击风险,诸如XML Entity-Expansion和SQL注入式攻击。
SQL注入式攻击
在面向服务体系架构中,SQL注入式攻击会将SQL碎片插入XML数据,然后将错误的数据返回,或者制造泄露数据库访问信息的错误。
在面向服务体系架构中能实施成功的SQL注入式攻击需要两个先决条件:
--面向服务体系架构中服务接受的数据被直接插入SQL Statement。
--SQL Statement在执行攻击时有足够的优先权
为了避免受到攻击,必须确保从可疑用户处接受的数据不会直接插入SQL Statement。对接受的文件内容执行内容验证和风险侦测以便进行防范。
捕捉-重放攻击(Capture-replay attack)
想象一下:面向服务体系架构中的服务受到协议的保护,服务请求需要数字签名。这看起来很安全,但结果真是这样吗?答案是这种系统存在重放攻击的弱点,系统只需简单的重新播放验证的签名信息就能实现未经授权的访问。
解决这种问题的答案涉及时间戳的使用。网络服务安全性(WS-Security)标准就包括对时间戳的支持。网络服务协议(WS-Policy)可以用来掌控信息中出现的签名时间戳,因此重新播放的信息时间戳过期就会被系统侦测到。用户必须认真制定时间戳信任间隔。这个间隔必须足够短,只有这样攻击者才没有时间对验证信息进行捕捉,破解和重放。但是时间戳信任间隔又必须足够长,以便在网络服务系统时钟和网络服务请求之间细微的差别不会导致验证信息被阻隔。
XML外部实体攻击(External Entity Attack)
所谓的XML外部实体攻击是通过DTD(文件类型定义)入口将外部数据嵌入到XML文档中。通过指定一个本地文件会产生某些XML引擎,通过本地文件系统访问未经授权的信息。请注意SOAP不允许使用DTD。
XPath注入(XPath Injection)
XPath注入式攻击与SQL注入类似,它被用于从XML数据库中窃取信息。如果能确保进入XPath的数据本身不包含XPath,那么XPath注入攻击就能被阻断。
XML拒绝服务(XDOS)
这种攻击包含了文件类型定义的特性,即攻击可以进入DTD定义的实体。通过递归进入实体,攻击者可以制造在内存中爆炸的XML信息(因此这个术语也被称之为“XML炸弹”),从而导致拒绝服务。
有害的SOAP附件
像电子邮件信息一样,SOAP信息也包含附件。如果这些附件很大而且很难打开,那么它可能含有病毒或者其它危险。解决这个问题的方案是确保SOAP附件可以基于MIME类型进行阻断和过滤,或者通过病毒扫描进行侦测。
XML签名差异攻击(Signature dereference attack)
XML签名包括指向签名数据的参考要素。解析应用软件必须对参考URI解除参照。XML签名标准陈述如下:“XML签名应用软件必须能够解析URI语法。我们推荐在HTTP中对URI进行参照解除”。不过如果参考数据是伪造的就会带来风险。
REST Web 2.0和面向服务体系架构
尽管面向服务体系架构最初是和SOAP,WSDL和VDDI三者联系在一起的,但许多研发人员宁愿使用REST服务,因为REST更加接近网站上的浏览器界面。Web 2.0的蓬勃发展对其起到了推波助澜的作用,因为丰富互联网应用软件(RIS)就是利用REST服务将数据从网络服务器传递到浏览器。能利用Web 2.0的技术包括浏览器端的JavaScript,多数称之为REST网络服务的部分都是在服务器端发生的。举例来说,Flickr网站包括在浏览器中运行的JavaScript脚本,我们称之为服务器端的网络服务,可以对照片进行更名。为了撤销XML或者JSON(JavaScript目标符号)数据,客户端的“AJAX”(非同步JavaScript和XML)可以召回服务器上的网络服务。这种行为不是同步发生的,用户无需浏览新的网页。
在Web 2.0的世界中,这成为攻击关键点的后端网络服务。有时这种网络服务被定义为Web 2.0的“大型攻击界面”。攻击者会试图通过它的客户端界面攻击应用软件,或者他们会简单的绕过后端网络服务界面长驱直入。
免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。
