关于安全性:ASP.NET MVC是否容易受到oracle padding攻击?

Is ASP.NET MVC vulnerable to the oracle padding attack?

ASP.NET MVC 2是否容易受到Oracle填充攻击?如果是这样,应该实施什么解决方案?顾司各特博客上的说明似乎只针对网络表单。

我试过这个:

1
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="/Home/ErrorPage" />

但是,http://www.example.com/pagethatdoesnotexist仍然返回标准404错误页。

编辑:我在他的博客帖子下面看到了顾立伟的评论,他说MVC是易受攻击的,但是我仍然不清楚如何实现这个变通方案。


是的-链接到Scott Guthrie的评论。

Saturday, September 18, 2010 9:00 PM by ScottGu

@Vijay,

Will the ASP.NET MVC too get affected?

是-所有版本的ASP.NET都会受到影响,包括ASP.NET MVC。

谢谢,

斯科特

< /块引用>

我看到您已经看到了注释,但是如果您在服务器上运行vbs脚本,它应该会告诉您它是否仍然是一个问题。

编辑:另外,斯科特在一篇新文章中讨论了常见问题。


我在我的博客上发表了我对这个的全部看法(经过额外的研究)。

更新说明:已将链接移动到特定于ASP.NET MVC的日志

我强烈认为404的问题与WebResources和ScriptResources(可以禁用ASP.NET MVC BTW)有关,因为当找不到相应的资源时,它们可能会给出404(这是对给出无效资源路径/名称的有效填充的正常响应)。

其他错误代码和消息可能是其他ASP.NET功能的问题,但以404结尾只是因为您点击了一个与任何特殊处理程序都不相关的URL才不会导致该问题。

还要注意我在回答中提到的内容:这种新的ASP.NET安全漏洞有多严重,我如何解决它?

if the app is asp.net MVC we don't really need webresources.axd and/or scriptresources.axd, so those can be turned off. We also don't use viewstate.

asp.net membership provider 'caches' roles in cookies, turn that off.

The auth cookie is signed, and from the info in the paper they shouldn't be able to generate a signed cookie if they don't get to the actual keys (as they did in the video before forging the auth cookie).

As Aristos mentioned, for the session id in the cookie, that's random for the user session, so it'd have to be sniffed from an user with the target security level and cracked while that session is active. Even then if you are relying in authentication to assign/authorize the user operations, then the impact would be minimal / it'd depend a lot in what Session is used for in that app.


此问题包含在Scott Gu关于ASP.NET安全漏洞的常见问题中:

Does this affect both ASP.NET Web Forms and ASP.NET MVC?

Yes – the publicly disclosed exploit can be used against all types of ASP.NET Applications (including both Web Forms and MVC).


在你的默认路线下,你可以/应该为初学者添加这个。

1
routes.MapRoute("Catch All","{*path}", new { controller ="Home", action ="ErrorPage" });

编辑2

问题出在redirectMode="ResponseRewrite"部分,如果没有这个,它就可以工作。

但是,使用路径可以解决1个部分的问题,即找不到路径(404)

下一部分,如具有错误ID或其他数据的现有路径,可以使用

1
<customErrors mode="On" defaultRedirect="/Home/ErrorPage" />

redirectMode="ResponseRewrite"究竟做了什么?

编辑:它的作用。

重定向模式

  • responseredirect:指定指向浏览器的URL必须与原始网页不同请求URL。
  • 责任人写:指定指向浏览器必须是原始网站请求URL。

它只对.NET 3.5 SP1和.NET 4.0重要。

编辑101:

对于redirectmode="responserewrite",ASP.NET在内部调用server.execute(…),它不适用于MVC路由,因此对于MVC,它只适用于静态HTML文件。

1
<customErrors mode="On" defaultRedirect="~/Views/Shared/error.htm" redirectMode="ResponseRewrite" />

作品。


已在Windows Update上发布此错误的修补程序。

http://weblogs.asp.net/scottgu/archive/2010/09/30/asp-net-security-fix-now-on-windows-update.aspx


您是否有路由/控制器操作设置来返回/Home/ErrorPage路由的错误页?