有很多性能原因导致应用程序不能以debug =“true”模式运行(good rundown from Scott Gu),但是这种做法是否暴露了任何攻击媒介?这不是“你应该或不应该”的问题,很明显,问题是它是否会引入任何特定的漏洞。
我倾向于认为remotely detect it结合已知性能问题的能力可能导致对服务可用性的利用,但我想要更明确一些。有没有人知道可以针对运行debug =“true”的应用程序进行编排的特定攻击?
答案 0 :(得分:5)
我对这个问题有一些有趣的反馈,特别是在Security Stack Exchange上。有很多与堆栈跟踪(自定义错误问题,而不是调试问题)和性能(不是[直接]安全问题)相关的响应。
最引人注目的反应是条件编译常量(#if DEBUG ...)可能会导致意外行为,但这又是一种功能风险(在实时环境中执行意外代码),而不是安全风险。
我怀疑调试模式可能会根据应用程序的性能开销和远程检测它的能力(可能是服务连续性风险)打开其他漏洞的一些途径。我已将我的结论作为OWASP Top 10 for .NET developers part 6: Security Misconfiguration的一部分写出来。
因此,为了完整起见,答案似乎是在调试模式下运行没有明显的安全风险,但鉴于上述因素,对于生产应用程序来说肯定不是一个好主意。
答案 1 :(得分:3)
这在某种程度上取决于DEBUG条件编译包含的代码。
您是否有任何可以被利用的仅调试代码?在调试模式中找到'carte blanche'管理员权限并不罕见......
如果您只有零调试代码,那么我唯一能想到的就是在Web错误报告中发布过多的堆栈错误信息。
如果您的应用程序具有良好的(级别可配置的)日志记录(例如log4Net),那么这一点就没有用了。
答案 2 :(得分:0)
我认为您应该将所有调试操作转移到定制的控制台,以防止出现提示提示,使攻击者能够滥用您应用的漏洞。