如何修复ASP.NET上的oracle填充攻击?
微软昨天在ASP.NET中发布了他们的产品如何修复ASP.NET上的oracle填充攻击?,asp.net,security,Asp.net,Security,微软昨天在ASP.NET中发布了他们的产品 微软用了什么方法来终结这个载体的生存能力?一个伟大的变化总结来自 不要泄露异常信息-这可以防止利用漏洞查看已损坏的内容 不要在填充检查上短路(填充正确与填充损坏花费相同的时间)-这可以防止利用漏洞看到错误填充的时间差 不要对IHttpHandler.ProcessRequest中的异常捕获过于挑剔-这可以防止利用漏洞发现捕获了一种异常(加密异常),而不是所有异常 从基于散列的初始化向量切换到随机IVs-这可以防止利用数据和散列之间的关系进行更快的解密
微软用了什么方法来终结这个载体的生存能力?一个伟大的变化总结来自
- 不要泄露异常信息-这可以防止利用漏洞查看已损坏的内容
- 不要在填充检查上短路(填充正确与填充损坏花费相同的时间)-这可以防止利用漏洞看到错误填充的时间差
- 不要对IHttpHandler.ProcessRequest中的异常捕获过于挑剔-这可以防止利用漏洞发现捕获了一种异常(加密异常),而不是所有异常
- 从基于散列的初始化向量切换到随机IVs-这可以防止利用数据和散列之间的关系进行更快的解密
- 允许向后兼容-如果这破坏了某些东西,允许部分恢复新行为
- 当进行代码审查时,更改以明确您已经考虑了新选项
除了上面的主要修复程序外,还需要尝试隐藏进一步的加密端通道,并确保它不会破坏依赖于相同加密调用的其他功能(如asp.net成员身份)。该漏洞与CBC填充引入的缺陷有关。攻击背后的完整理论可以找到。然而,你必须先仔细阅读 迟早有人会用NDepend或Reflector比较System.Web.Extensions.dll的两个版本。@Mauricio,AES实现是非托管代码,所以我认为Reflector或NDepend不会有多大帮助:-)如果它是一个纯托管修复程序,就不会有适用于所有可以想象的Windows版本、CPU类型和,…@Darin:这只列出System.Web.Extensions.dll@Mauricio,是的,这确实是正确的,但是我的计算机上的程序集是1.75MB,补丁是7.42MB。它可能是安装程序位。只是查看补丁内容:<代码>系统。Web < /代码>和<代码>系统。Web。扩展< /代码>程序集受到影响。+ 1详细的详细信息,添加了关于我认为是主要修复的答案。太糟糕了,我没想到在这里查看并发布我的博客答案:你看了这些问题并发布了我的答案,你把它归因于我。。。这让你成为了英雄:)@IDisposable观点很好。是@Aaron干的:P