如何对ASP.NET固定的oracle填充攻击?

时间:2010-09-29 17:12:43

标签: asp.net security

微软昨天在ASP.NET中发布了他们的out of band release to fix the security flaw

Microsoft使用哪些方法来终止此向量的可行性?

3 个答案:

答案 0 :(得分:14)

这些变化的精彩摘要来自http://musingmarc.blogspot.com/2010/09/ms10-070-post-mortem-analysis-of-patch.html

  • 不要泄露异常信息 - 这可以防止漏洞利用程序查看损坏的内容。
  • 不要在填充检查上进行短路(花费相同的时间来填充正确的填充符号) - 这可以防止漏洞看到不正确填充的时序差异。
  • 不要过于挑剔IHttpHandler.ProcessRequest中的异常捕获 - 这可以防止漏洞看到您捕获到一种异常(CryptographicException)而不是所有异常。
  • 从基于哈希的初始化向量切换到随机IV - 这可以防止利用数据和哈希之间的关系更快地解密。
  • 允许向后兼容 - 如果这会破坏某些内容,请允许部分恢复新行为。
  • 在进行代码审核时,请更改以明确您已考虑新选项。

答案 1 :(得分:3)

主要:签署发送到浏览器的所有加密数据。这可以防止像攻击这样的值搞乱获取有效填充和无效填充的信息,即因为签名在所有这些情况下都不匹配。

重要的是要注意,webresource and scriptresource中允许文件检索的漏洞不应该发生。单独的简单加密并不意味着篡改证据。换句话说,它不是对高级场景的监督,例如填充oracle攻击的其余部分(仍然依赖于相同的事实,将修改后的加密数据发送回应用程序而服务器上没有防篡改保护)。 / p>

除了上面的主要修复之外,还有一些预期的事情,比如试图隐藏更多的加密端通道,并确保它不会破坏依赖相同加密调用的其他功能(如asp.net成员资格)。

答案 2 :(得分:0)

该漏洞与CBC Padding引入的漏洞有关。可以找到攻击背后的完整理论here。但是,您必须先阅读block cipher modes of operation