Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复ASP.NET上的oracle填充攻击?_Asp.net_Security - Fatal编程技术网

如何修复ASP.NET上的oracle填充攻击?

如何修复ASP.NET上的oracle填充攻击?,asp.net,security,Asp.net,Security,微软昨天在ASP.NET中发布了他们的产品 微软用了什么方法来终结这个载体的生存能力?一个伟大的变化总结来自 不要泄露异常信息-这可以防止利用漏洞查看已损坏的内容 不要在填充检查上短路(填充正确与填充损坏花费相同的时间)-这可以防止利用漏洞看到错误填充的时间差 不要对IHttpHandler.ProcessRequest中的异常捕获过于挑剔-这可以防止利用漏洞发现捕获了一种异常(加密异常),而不是所有异常 从基于散列的初始化向量切换到随机IVs-这可以防止利用数据和散列之间的关系进行更快的解密

微软昨天在ASP.NET中发布了他们的产品


微软用了什么方法来终结这个载体的生存能力?

一个伟大的变化总结来自

  • 不要泄露异常信息-这可以防止利用漏洞查看已损坏的内容
  • 不要在填充检查上短路(填充正确与填充损坏花费相同的时间)-这可以防止利用漏洞看到错误填充的时间差
  • 不要对IHttpHandler.ProcessRequest中的异常捕获过于挑剔-这可以防止利用漏洞发现捕获了一种异常(加密异常),而不是所有异常
  • 从基于散列的初始化向量切换到随机IVs-这可以防止利用数据和散列之间的关系进行更快的解密
  • 允许向后兼容-如果这破坏了某些东西,允许部分恢复新行为
  • 当进行代码审查时,更改以明确您已经考虑了新选项

主:对发送到浏览器的所有加密数据进行签名。这可以防止像攻击获取有效填充和无效填充信息那样弄乱值,也就是说,因为签名在所有这些情况下都不匹配

需要注意的是,允许文件检索的漏洞不应该发生。单靠简单的加密并不能防止篡改。换句话说,这并不是像oracle攻击的其余部分那样对高级场景的疏忽(oracle攻击仍然依赖于相同的事实,将修改过的加密数据发送回应用程序,而服务器上没有防篡改保护)


除了上面的主要修复程序外,还需要尝试隐藏进一步的加密端通道,并确保它不会破坏依赖于相同加密调用的其他功能(如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