檢測常見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黑客還是能搜集到很多重要情報,上線到正式環境時記得關閉。