ASP.NET的安全漏洞

ZDNet软件频道 时间:2003-02-24 作者:BUILDER.COM |  我要评论()
本文关键词:
微软公司在安全方面的名声是在是不敢恭维,我下面要谈到几个最新发现的问题。尽管如此,但我仍认为我们开发者应该为我们设计的应用程序担负责任——这个责任不仅仅是微软公司的。
微软公司在安全方面的名声是在是不敢恭维,我下面要谈到几个最新发现的问题。为此,我查阅了安全专家H.D.Moore的声明,在这个声明中,他指出了新的ASP.NET平台中几个未覆盖的而又严重的安全漏洞。尽管如此,但我仍认为我们开发者应该为我们设计的应用程序担负责任——这个责任不仅仅是微软公司的。

三大问题

Moore先生在最近召开的CanSecWest会议上介绍了他的发现(你可以在digitaloffense.com上看到他的文章)。在介绍完他在ASP.NET平台上发现的三个安全问题后,Moore示范了如何利用它们来攻击系统。其中的某些攻击手段,特别是利用“cookie-less会话(session)”会让你觉得简单的不可思议。

Cookie-less会话漏洞

“cookie-less会话”利用了ASP.NET中cookie-less会话管理模式的一个漏洞,它包括了任何URL中的会话标识(id)。尤其是当新会话的id交给服务器时,新会话就创建了,而不是服务器负责创建这些会话。这个漏洞使得攻击者可以窃取会话并装扮成一个合法用户自由访问程序。

按照Moore的说法,攻击过程大致如下:

1、提交一个有效但是伪造的会话id,这个过程实现起来并不困难,因为会话id并没有加密处理。

2、把上述的会话id嵌入到一个URL中,并通过电子邮件或者其它手段发送到用户手中。

3、当用户点击这个URL并进入URL对应的页时,会话id仍保持有效,这时攻击者就有了被欺骗的用户的所用系统访问的权限。

不良配置控制带来的信息泄漏

Moore还发现一个潜在攻击者可以用来检查有问题的应用程序的结构甚至在某些情况下程序实际代码的方法。这个问题部分出于应用程序的开发者不良配置控制,部分归咎于错误的技术资料。

ASP.NET可以在应用程序出错时可以向用户显示出自定义错误信息。当调试应用程序时,常常关闭这个特性,这就造成服务器向客户返回堆栈轨迹(stack trace)以及调试信息(不仅仅是常见的“发生一个错误”消息)。如果自定义错误信息未被使能,调试信息仍会保留在正式发布的应用程序中(这是Visual Studio.NET默认设置),文家名和路径以及源代码环境中的任何错误都会返回给用户。

Moore说,这些信息嵌入在错误页的HTML内容中,所以你只有查看页面的源代码才可以看到它,但是这造成了一个潜在的危险问题。这些信息可能会给攻击者侦察你的应用程序帮了大忙,这些信息还可能帮助你的竞争对手对你的程序进行反向工程(破解)。

如果上面说得这些对你来说还不够的话,那么让我们看看ISAPI文件扩展名过滤器的情况吧,它用来保护特定类型的文件不被任意下载和浏览,不过它不会自动保护txt、csv和xml格式的文件不被身份通过验证的用户访问。如果你没有看出这里出现的问题,请参考微软操作规程建议中关于用xml文件来进行用户身份鉴定的部分,假定你把users.xml文件放到根目录下,这样任何一个有合法身份的用户都可以下载并查看该文件,这样他/她就会得到该应用程序所有用户的口令了。

Moore说新版的微软操作规程建议建议把该文件保存到一个受保护的目录下,这样这个门就关闭起来了。但是工程中剩余的文件(例如扩展名为sln和slo的文件)和其它可能引发问题的东西仍可能被访问到。他建议在应用程序发布之前删除这些文件,并建议开发者不要在根目录上存放任何文件以防被他人看到。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134