Bodysnatcher“OpenId Provider”攻击问题

时间:2011-01-26 04:12:28

标签: openid openid-provider google-openid

好的,基本上这里是Bodysnatcher OpenId Provider攻击场景。

  1. Bob的Google声称标识符如下, TTPS://www.google.com/accounts/o8/id ID = AAtawkQvytyBNNuHpRhn36f8MLvFiJvZg8teNE

  2. Jane有一些如何找到Bob的“当前”声称标识符。

  3. 她在这里创建了自己的OpenId提供商www.jane.com/accounts/o8/id,这样当被问及它将返回Bob声称的标识符时。

  4. 她去了一个编码很糟糕的网站www.bcs.com,该网站使用开放ID,而bob有一个帐号。

  5. 她告诉www.bcs.com使用OpenId Provider www.jane.com/accounts/o8/id。

  6. 现在这是我不知道的部分,并且想知道它是否可行/现实...... www.jane.com/id如何让www.bcs.com相信声明的标识符“字符串”(即网站最终会看到的值)是ttps://www.google.com/accounts/o8/id?id = AAtawkQvytyBNNuHpRhn36f8MLvFiJvZg8teNE。

  7. 是否有可能,有些怎么样,即使主持人是www.jane.com?

    我们正在努力实施OpenId,我们不希望成为“编码错误的网站”。我们正在使用一些第三方.NET库来为我们提供声明的标识符,因此我们不确定它在何处或如何构建它。如果它可能是伪造的,那么我们正在考虑进行一些检查,提供者OpenId的url与声明的标识符中的匹配。

    这也引起了对我们是否应采取散列/加扰我们声称的标识符的额外步骤的担忧。我们这么认为,因为Google会根据请求OpenId的网站更改其标识符。我的意思是,如果不试图保护其成员,为什么还要这样做呢?

1 个答案:

答案 0 :(得分:0)

您实质上是在询问是否有可能编写一个违反规范的OpenID使用者实现,足以引入安全漏洞。是的。您可以省略整个验证过程,并相信您从用户那里得到的所有信息。

但是,如果消费者严格遵循OpenID规范,则无法进行此类攻击。

由于您说您使用.NET库,因此您可能使用DotNetOpenAuth。它与stackoverflow使用的库相同,您可能不必担心使用它时的任何漏洞。如果你正在使用另一个库,那么它可能是切换到DotNetOpenAuth的最佳选择。

关于Google返回基于域名的标识符的原因:它是为了保护用户的隐私,而不是为了提高安全性。基本上,这可以确保您无法将用户的帐户与其Google帐户相关联。