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