WCF 和信息泄露威胁

  • Hartmut Wilms
  • 霍泰稳

2008 年 9 月 30 日

话题:SOA.NET安全语言 & 开发架构

Anil John最近写了一篇叙述信息泄露威胁和 Web 服务的文章。在文章中,他详细探讨了潜在黑客常用的攻击技巧,以及一些常见的 Web 服务应用又是如何“支持”了这些攻击。

Anil 谈到了“预操作监视(pre-operational surveillance)”,也就是我们从前常说的 IT 领域里的“信息泄露威胁”。他详细地介绍了两个可能的威胁:

  1. SOAP 错误的错误信息
  2. WSDL 扫描 / 踩点(Foot-Printing)/ 查点(Enumeration)

关于 SOAP 错误的错误消息,他说道:

……攻击者最喜欢的策略是试图在 Web 服务里产生一个异常或者错误,以希望连接字符串、堆栈踪迹和其他敏感信息能够在 SOAP 错误的地方泄露出来。

Anil 就此提出了两个应对措施,一个是在模式与实践书籍《Web 服务安全 /Web Service Security》[免费 PDF 版本] 和《WCF 安全指南 /WCF Security Guide》[免费 PDF 版本] 中所提到的——异常防护模式(Exception Shielding Pattern)。他同时指出还可以选用类似 XML 安全网关的硬件设备,他曾使用过 Layer 7、Cisco/Reactivity 网关等设备,碰巧晓得它们均支持此功能。

Apache Asis 团队的Steve Loughran针对本文评论说:

Apache Axis 默认情况下不会串线【译者注:意指跨越调用边界】传递完整的堆栈踪迹 [……]。你不需要额外使用 XML 安全硬件,只需要锁定端点的基本信息就可以。

他还提到了Axis 安全指南

对于第二个威胁——元数据发布,Anil 说:

在 WSDL 中发现的这类信息,也就是只需在服务端点 URL 后面加上?WSDL 就可以轻易得到的信息,对于要寻找服务中缺点的攻击者来说,是个绝对有用的信息源。因此,这样的信息不应该被提供,或者最好直接关闭。

如果元数据发布被关闭了,那么客户端如何知道定位或者唤醒 Web 服务的方法呢?据 Anil 所述,一个可能的方法是加入含有合适的访问控制机制的企业注册 / 仓库,并根据契约优先方法阻止 WSDL 的自动生成。

在文章“保护你的 WCF 元数据”中,Dominick Baier解释了一些有关 WCF 元数据发布的细节。他给出了一些保护元数据发布的方法:

  • 强制使用 SSL;

  • 通过开发实现 IMetadataExchange 和含有完整 WCF 安全特性集的定制绑定,暴露元数据交换(Metadata Exchange,MEX)端点;

  • 允许用户通过 WMI 从 WCF 服务中检索元数据。

另外在“给 WCF 元数据授予访问权限”文章中,Dominick 还从技术角度谈到了检测元数据检索请求等。

查看英文原文:WCF and Information Disclosure Threats

SOA.NET安全语言 & 开发架构