【问题标题】:Security issuses and risks concerning debugging production environment调试生产环境的安全问题和风险
【发布时间】:2013-06-24 17:45:19
【问题描述】:
我正在研究有关调试生产环境的安全漏洞和风险。我想听听您的意见以及关于此类环境可能存在的风险。
我所说的调试不仅是指使用调试器检查软件,还包括各种调试技术,例如日志记录、测试、审查代码,尤其是使用小型转储的事后调试。我对与 .NET 框架相关的一般问题和问题特别感兴趣。我还想了解有关错误管理过程的其他风险。
在下面的回答中,我还发布了我目前的研究结果。
为了将来的调查,我发现此帖子相关:
【问题讨论】:
标签:
security
debugging
production-environment
data-security
【解决方案1】:
1) 最明显的问题与私人数据暴露有关。使用调试器,我们可以访问之前加载到进程内存的所有数据。这意味着我们忽略了软件访问控制逻辑的构建。在许多国家,将私人数据暴露给未经授权的人也存在法律问题。
这也是日志记录的一个问题,我们应该小心我们正在记录什么信息,以便我们有足够的数据来调查错误原因,但不要在日志中存储易受攻击的数据(财务记录、医疗记录)。还有其他一般性问题,通常我们的安全级别与生产数据库和日志文件的安全性不一致。
.NET 正在使用SecureSting 类解决这个问题,但它并没有消除这个问题,它只是最小化了数据暴露长度。为了处理数据,我们必须在某个时间点获取字符串值,因此如果在进行处理时进行内存转储,安全信息将暴露在转储文件中。解决此问题的其他方法是阻止开发人员在将任何数据复制到本地环境之前通过数据匿名访问生产数据。
2) 另一个问题是在修复和调查报告的错误时向软件引入新缺陷所涉及的风险。错误修复过程往往比正常的开发过程更加临时。它有一些原因,因为生产中存在的错误可能会花费公司资金,因此存在快速修复它们的压力。
这里的解决方案是保持与新功能开发过程相同的质量程序。