安全配置错误
安全配置错误是一个涵盖范围较广的术语,指代那些因应用程序配置设置不当(而非代码缺陷)而引发的常见漏洞。这是一个涉及面很广的主题,且在很大程度上取决于您的技术栈等因素。
解决这些问题看似简单,有时只需修改一个配置文件或一行代码,但这些漏洞可能带来的影响和后果却非常严重。
让我们来看看以下几个类别。
类别
Web 服务器
Web 服务器中一个典型的配置错误是启用了目录列表功能。
虽然启用目录列表通常不会产生直接影响,但它确实让攻击者能够轻易发现可能存在的其他错误,例如本应隐藏的页面、备份文件以及其他类似内容。
值得注意的是,这些做法本身就是不规范的,属于“隐蔽式安全”的范畴。
禁用目录列表非常简单,它能增加攻击者枚举主机以寻找潜在攻击路径的难度,从而实现纵深防御。
框架
调试模式
大多数框架都为开发人员提供了“调试”模式。除其他功能外,该模式通常会在发生未处理异常时显示堆栈跟踪详情。有些框架甚至会在堆栈跟踪旁边显示代码片段。这在开发过程中非常有帮助,但也可能向攻击者泄露他们本不应获取的大量信息。
监控端点
许多框架还提供了一组可启用的端点,用于监控生产环境或测试/开发环境中的应用程序。
这些端点可能包括:
- 指标 (Prometheus)
- 日志
- 环境信息
- 路径/URL 映射
虽然这些信息通常不属于敏感数据,但仍可能提供有助于潜在攻击者深入了解您应用程序的细节。当然,您的环境或日志实际上可能包含敏感信息,因此务必留意这些信息在被他人窥探时可能带来的风险。
生产环境与非生产环境的区别
人们常犯的一个错误是:仅在生产环境中禁用目录列表、调试模式和调试端点,而在开发/测试环境中却不遵循这些准则。其理由是这些非生产系统仅用于测试,而这些功能提供的信息对于测试至关重要。
然而,这种心态是错误的。攻击者仍然能够探测并泄露非生产系统中的信息,然后利用从测试系统中收集到的信息来攻击您的生产系统。此外,许多公司在测试系统中使用生产数据库的副本,这也进一步增加了风险。
XXE
XML 外部实体(XXE)是一种非常严重的安全配置错误。
当您在启用实体解析的情况下解析来自不可信来源的数据时,就会出现这种情况,而这在过去是很常见的。XXE 可能导致任意文件读取、服务器端请求伪造等问题。
请查看下方的详细说明,了解该漏洞的一个简单示例。
实用安全编码
探索安全编码指南,了解并缓解 OWASP Top 10 等软件漏洞,并通过引导式训练任务在真实的应用程序模拟中进行实践。