ASP.NET MVC是否容易受到Oracle填充攻击的影响?

15
ASP.NET MVC 2是否容易受到Oracle padding攻击?如果是,应该采取什么解决方法?Scott Gu博客上的说明似乎只适用于Webforms。
我尝试了这个:
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="/Home/ErrorPage" />

然而,http://www.example.com/PageThatDoesNotExist 仍会返回标准的404错误页面。
编辑:我看到Scott Gu在他的博客文章评论中提到MVC是有漏洞的,但我仍不清楚如何实现解决方法。

我也非常好奇这个。 - Rohrbs
1
请参见https://dev59.com/dVDTa4cB1Zd3GeqPKZVp。 - bzlm
我刚刚更新了我的问题,因为Scott在这里发布了一个FAQ - http://weblogs.asp.net/scottgu/archive/2010/09/20/frequently-asked-questions-about-the-asp-net-security-vulnerability.aspx。 - Dan Atkinson
这里也涵盖了它。 - Stefanvds
6个回答

8

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

2010年9月18日星期六,晚上9:00,由ScottGu发布

@Vijay,

ASP.NET MVC 也会受到影响吗?

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

谢谢,

Scott

我看到你已经看到这条评论了,但如果你在服务器上运行vbs脚本,它应该会告诉你是否仍然存在问题。

编辑:此外,Scott 在一篇新文章中讨论了常见问题,在这里


我无法在Azure上运行脚本。此外,该脚本似乎无法与Casini Web服务器(VS使用的Web服务器)一起工作。谢谢您的想法。 - royco

2

在您的默认路由下,您可以/应该首先添加此内容

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

编辑2

问题出在redirectMode="ResponseRewrite"这一部分,没有它,就可以正常工作。

使用路由可以解决其中的一部分问题,即找不到路径(404)的问题。

下一部分,例如存在错误ID或其他数据的现有路径,可以通过以下方式进行修复:

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

redirectMode="ResponseRewrite"是什么意思?

编辑:它的作用是什么。

redirectMode

  • ResponseRedirect: 指定浏览器要重定向到的URL必须与原始Web请求URL不同。
  • ResponseRewrite: 指定浏览器要重定向到的URL必须是原始Web请求URL。

这只适用于.NET 3.5 SP1和.NET 4.0。

编辑101:

对于redirectMode="ResponseRewrite",ASP.NET在内部调用Server.Execute(...),但这不适用于MVC路由,所以对于MVC,它只能与静态HTML文件一起使用。

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

工作。


1
OP代码示例和你的唯一区别是,你的defaultRedirect属性末尾有.aspx,而在.NET MVC中并不需要。 - Dan Atkinson
http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx 解释了 redirectMode 是做什么的。 - amurra

2
这个问题包含在Scott Gu的ASP.NET安全漏洞常见问题中:
引用: “这是否影响ASP.NET Web Forms和ASP.NET MVC?” 是的 - 公开披露的漏洞可用于所有类型的ASP.NET应用程序(包括Web Forms和MVC)。

2

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

更新说明:将链接移动到特定于asp.net MVC的帖子


我强烈认为404错误的问题与WebResources和ScriptResources有关(在asp.net MVC中可以禁用它们),因为当相应的资源未找到时,这些资源可能会给出404错误(这将是给出无效资源路径/名称的有效填充的正常响应)。

其他错误代码和消息可能是其他asp.net功能的问题,但只有因为您点击与任何特殊处理程序无关的URL而以404结尾的问题不应该引起问题。

还请注意我在此答案中提到的内容: How serious is this new ASP.NET security vulnerability and how can I workaround it?

如果应用程序是asp.net MVC,我们实际上不需要webresources.axd和/或scriptresources.axd,因此可以将其关闭。我们也不使用视图状态。

asp.net成员资格提供程序在cookie中“缓存”角色,关闭该功能。

授权cookie已签名,根据论文中的信息,如果他们不能获得实际密钥(如在伪造授权cookie之前所做的那样),则不应该能够生成签名cookie。

正如Aristos所提到的,在cookie中的会话ID对于用户会话是随机的,因此必须从具有目标安全级别的用户中嗅探并在该会话处于活动状态时破解。即使这样,如果您依赖认证来分配/授权用户操作,则影响将是最小的/它将在很大程度上取决于该应用程序中使用Session的方式。


1

完全没有提到ASP.NET MVC。 - bzlm
漏洞存在于ASP.NET中;MVC之所以有漏洞是因为ASP.NET有漏洞。此补丁修复了根本问题。 - Josh Yeager
是的,但这里有几个关于填充预言攻击的问题。这一个是关于它在ASP.NET MVC中的具体相关性的问题。 :) - bzlm

0
你是否设置了一个路由/控制器操作来返回一个错误页面给/Home/ErrorPage路由?

是的,我肯定可以直接访问http://www.example.com/Home/ErrorPage,但是该页面并未从customErrors中调用。 - royco
当您输入一个不存在的网址时,您是否只看到标准浏览器404页面? - amurra
是的,我只看到了一个标准的404错误。我的理解是所有的错误都应该显示/Home/ErrorPage。 - royco
只要它们不可预测地基于输入显示任何内容,就需要任何东西。 - bzlm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接