看到一篇国外 MVP Troy Hunt 的文章: 67% of ASP.NET websites have serious configuration related security vulnerabilities,大意是依据他搜集到的统计数字,约67%的 ASP.NET 网站因配置不当,存在安全风险。
Troy Hunt 文章的分析数据来自他所开发的一个简易网站扫瞄服务--ASafaWeb, Automated Security Analyser for ASP.NET Websites。使用者只要提供 Internet 上公开ASP.NET 网站的 URL,ASafaWeb 会发出几个 Request,藉此检查网站是否存在一些常见的安全漏洞。
由今年1至3月扫描过的网站记录,排除掉 ASafaWeb 测试网站及非 ASP.NET 网站后共有7,184份检测结果,Hunt 做出简单的统计。虽然我觉得这份结果由于是使用者主动提供网站进行检测,甚至无法排除用户会刻意制造问题情境考验 ASafaWeb 的检查效果,因此数据高低未必能精确反应实际情况,但还是很有参考价值,值得我们关心一下 ASP.NET有哪些常见的配置漏洞,确定自己都了解并检查手边网站有无类似状况,绝对是件好事。
以下是 Hunt 列出的常见 ASP.NET 配置安全漏洞:
- 未隐藏错误讯息
开发人员常会将<customErrors mode="Off" />方便排错,但正式上线时却忘了移除,导致一旦程序出错,相关程序代码细节甚至程序片段就赤裸裸地展示出来。黑客可能由其中找到相关的文件位置、数据库信息、组件版本... 等信息,提供入侵的指引。 - 关闭 Request Validation
依 Hunt 的统计,近30%的网站豪迈地关闭了全站的 Request 验证。若真有需要,针对页面关闭就好,至少伤害面变小,但如果心有余力,避开此限制保持后门紧闭还是上策。 - 未更新 Windows/IIS
去年底被揭露的 HTTP POST Hash DoS 漏洞,攻击者用简单的 Request 就能让网站忙到死去活来,终至服务瘫痪。微软已在2月发布补定,但是似乎还有50%的网站未完成更新。 - ELMAH 存取未设限
关于 ELMAH 存取设定的风险之前也有文章 《大叔手记(18):利用Elmah和Google体验一把入侵的快感》提过,稍有不慎,程序里的秘密就会大放送,十分危险,甚至黑客还可能藉此伪造ASP.NET Session冒充身份,挺恐怖的。 - 未关闭 Trace
虽然比例不高,但通过 trace.axd 黑客还是能搜集到很多重要情报,上线到正式环境时记得关闭。
时间: 2024-10-27 09:09:16