安全配置错误
安全配置错误在某种程度上是一个总称,它涵盖了由于应用程序配置设置而不是错误代码而起作用的常见漏洞。这是一个范围广泛的话题,它在很大程度上取决于您的技术堆栈等因素。
通常,解决这些问题看起来很简单,例如更改配置文件甚至一行代码,但是这些漏洞的影响和后果可能很严重。
让我们来看看下面的一些类别。
类别
网络服务器
Web 服务器上一个典型的错误配置是启用了目录列表。
虽然启用 “目录列表” 通常几乎没有直接影响,但它确实使攻击者很容易发现可能还存在的其他错误。这些可能是故意隐藏的页面、备份文件和其他类似的项目。
值得注意的是,所有这些东西本身本质上也是不良的做法,默默无闻地算作安全。
禁用目录列表很简单,而且可以提高攻击者的深度防御能力,从而增加攻击者枚举主机以找到针对该主机的潜在攻击媒介的成本。
框架
调试模式
大多数框架为开发人员提供 “调试” 模式。除其他外,当发生未处理的异常时,此模式通常会显示堆栈跟踪详细信息。有些框架甚至会在堆栈跟踪旁边显示代码片段。这在你的开发过程中可能非常有用,但也可以为攻击者提供大量他们本来不应该获得的信息。
监控端点
许多框架还具有一组可以启用的端点,无论是在生产环境还是在测试/开发环境中,这些端点都允许监控应用程序。
这些可能包括:
- 指标(普罗米修斯)
- 日志
- 环境信息
- 路径/网址映射
虽然这些信息不是 平时 敏感,它仍然可以提供详细信息,帮助潜在攻击者更好地了解您的应用程序。当然,您的环境或日志可能会 其实 包含敏感信息,因此请务必注意如果有人窥视这些信息,可以看到和利用的内容。
生产环境与非生产环境之间的区别
人们经常犯的错误是没有遵循诸如在开发/测试环境中禁用目录列表、调试模式和调试端点之类的指导方针,而且只能在生产环境中这样做。其理由是,这些非生产系统是用来测试的,获取这些功能提供的信息很重要。
但是,这种心态是错误的。攻击者仍然能够探测和披露来自非生产系统的信息,然后利用从测试系统收集的信息攻击您的生产系统。在测试系统中使用其生产数据库副本的公司也并不少见,这进一步增加了风险。
XXE
一种非常严重的安全配置错误是 XML 外部实体 (XXE)。
当您从启用实体解析的不可信来源进行解析时,就会发生这种情况,历史上就是这种情况。XXE 可能导致任意文件读取和服务器端请求伪造等。
请查看下面的示例以获取更多详细信息,尤其是此示例的简单示例。
Secure coding made practical
Explore secure coding guidelines to understand and mitigate software vulnerabilities like the OWASP Top 10, and dive into guided training Missions to practices in real-world app simulations.