ASP.NET Form Authentication安全漏洞及对策

在 NT-Bugtraq 的邮件列表上首先报告的 Security bug in .NET Forms Authentication 适用于 ASP.NET 1.0 (RTM, SP1, SP2, SP3) 和 ASP.NET 1.1 (RTM, SP1).

当 Form Authentication 被使用时,匿名用户在试图访问被保护的页面如 http://localhost/WebApplication2/secret.aspx 时会被 redirect 到登录网页如 http://localhost/WebApplication2/login.aspx?ReturnUrl=%2fWebApplication2%2fsecret.aspx.

但是如果使用 Mozilla ,匿名用户可以这样未经认证就访问被保护的页面: http://localhost/WebApplication2\secret.aspx ;对 IE ,可以使用 %5C 达到类似的效果: http://localhost/WebApplication2%5Csecret.aspx

微软在 10 月 5 日发布了 What You Should Know About a Reported Vulnerability in Microsoft ASP.NET 网页以提供针对此安全漏洞的对策。当前的对策主要是如 KB887459 所描述的那样在 Global.asax 或其 Code-Behind 中在 Application_BeginRequest 中增加检查

    if (Request.Path.IndexOf('\\') >= 0 ||  
        System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath)   
    {  
        throw new HttpException(404, "not found");  
    }

显然每个 Application 都需要有这样的检查以应对此安全漏洞。微软还会提供其他的对策,请关注 What You Should Know About a Reported Vulnerability in Microsoft ASP.NET 网页更新。

对 ASP.NET 2.0 Beta1 ,并没有此漏洞而是得到 404 错误。

Published At
Categories with Web编程
Tagged with
comments powered by Disqus