跳轉至

A02:2025 安全配置错误 icon

背景

安全配置错误从上一版第 5 位上升。100% 的受测应用都被发现存在某种形式的配置错误,平均发生率为 3.00%,本风险类别中通用弱点枚举(CWE)的发生次数超过 71.9 万次。随着软件越来越多地转向高度可配置的形态,本类别排名上升并不意外。值得关注的 CWE 包括 CWE-16:配置CWE-611:XML 外部实体引用限制不当(XXE)

评分表

映射的 CWE 数量 最大发生率 平均发生率 最大覆盖率 平均覆盖率 平均加权可利用性 平均加权影响 发生总数 CVE 总数
16 27.70% 3.00% 100.00% 52.35% 7.96 3.97 719,084 1,375

描述

安全配置错误是指系统、应用或云服务从安全角度被错误设置,从而产生漏洞。

如果出现以下情况,应用可能存在风险:

  • 应用栈任一部分缺少适当的安全加固,或云服务权限配置不当。
  • 启用或安装了不必要的功能(例如不必要的端口、服务、页面、账户、测试框架或权限)。
  • 默认账户及其密码仍处于启用状态,且未被修改。
  • 缺少集中配置来拦截过多错误消息。错误处理向用户暴露堆栈跟踪或其他信息过于详细的错误消息。
  • 对已升级系统,最新安全功能被禁用或没有安全配置。
  • 过度优先考虑向后兼容,导致不安全配置。
  • 应用服务器、应用框架(例如 Struts、Spring、ASP.NET)、库、数据库等的安全设置未设为安全值。
  • 服务器没有发送安全头或安全指令,或者它们未设为安全值。

如果没有协调一致、可重复的应用安全配置加固流程,系统会面临更高风险。

如何预防

应实施安全安装流程,包括:

  • 建立可重复的加固流程,能够快速、轻松地部署另一个经过适当锁定的环境。开发、QA 和生产环境应以相同方式配置,但各环境使用不同凭据。该流程应自动化,以减少搭建新安全环境所需的工作量。
  • 使用最小化平台,不包含任何不必要的功能、组件、文档或示例。移除或不要安装未使用的功能和框架。
  • 将审查和更新配置作为补丁管理流程的一部分,确保配置符合所有安全公告、更新和补丁要求(参见 A03 软件供应链失效)。审查云存储权限(例如 S3 bucket 权限)。
  • 采用分段应用架构,通过分段、容器化或云安全组(ACL)在组件或租户之间实现有效且安全的隔离。
  • 向客户端发送安全指令,例如安全头。
  • 建立自动化流程,验证所有环境中的配置和设置是否有效。
  • 主动增加集中配置,作为拦截过多错误消息的备用措施。
  • 如果这些验证没有自动化,至少应每年手动验证一次。
  • 使用底层平台提供的身份联合、短期凭据或基于角色的访问机制,而不是在代码、配置文件或流水线中嵌入静态密钥或 secret。

攻击场景示例

场景 #1: 应用服务器附带的示例应用没有从生产服务器中移除。这些示例应用存在已知安全缺陷,攻击者可利用它们攻陷服务器。假设其中一个示例应用是管理控制台,且默认账户没有修改。攻击者就能使用默认密码登录并接管系统。

场景 #2: 服务器未禁用目录列表。攻击者发现可以直接列出目录。他找到并下载编译后的 Java 类文件,反编译并逆向工程查看代码。随后攻击者在应用中发现严重访问控制缺陷。

场景 #3: 应用服务器配置允许向用户返回详细错误消息,例如堆栈跟踪。这可能暴露敏感信息或底层缺陷,例如已知易受攻击的组件版本。

场景 #4: 云服务提供商(CSP)默认将共享权限开放到互联网。这会允许云存储中的敏感数据被访问。

参考资料

映射的 CWE 列表