【缺陷周话】第44期:Spring Boot 配置错误:不安全的 Actuator
字数 1083 2025-08-18 11:38:49
Spring Boot Actuator 安全配置指南
1. Spring Boot Actuator 概述
Spring Boot Actuator 是 Spring Boot 提供的一个用于应用监控和管理的模块,主要功能包括:
- 健康检查
- 应用审计
- 运行状况收集
- HTTP 请求追踪
Actuator 提供了多个内置端点(endpoints)来展示应用程序的监控信息,当配置不当时,攻击者可以轻易获取应用敏感信息。
2. 不安全 Actuator 配置的危害
当 Actuator 启用且权限控制不足时,攻击者可以访问默认端点获取以下敏感信息:
| 端点ID | 暴露的信息 |
|---|---|
| auditevents | 应用暴露的审计事件(如认证进入、订单失败) |
| info | 应用的基本信息 |
| env | 全部环境属性 |
| health | 应用程序的健康指标 |
| loggers | 配置的loggers信息 |
| mappings | 全部URI路径及其与控制器的映射关系 |
| shutdown | 关闭应用程序(需endpoints.shutdown.enabled=true) |
| trace | 基本HTTP请求跟踪信息(时间戳、HTTP头等) |
特别危险的是trace端点,可能泄露用户token、cookie等认证信息。
3. 不安全配置示例
3.1 缺陷配置
# 不安全的配置示例
endpoints.trace.sensitive=false
此配置表示访问trace端点不需要授权,攻击者可以直接获取HTTP请求信息。
3.2 检测工具
使用奇安信代码卫士等静态分析工具可以检测此类问题,会标记为中等风险的安全缺陷。
4. 安全配置方案
4.1 基本安全措施
禁用特定端点:
# 禁用trace端点
endpoints.trace.enabled=false
选择性启用端点:
# 先禁用全部端点
endpoints.enabled=false
# 然后只启用需要的端点
endpoints.metrics.enabled=true
4.2 使用Spring Security保护
- 添加安全依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
- 配置端点访问控制:
# 要求授权访问trace端点
endpoints.trace.sensitive=true
4.3 完整安全配置建议
- 禁用所有不必要端点
- 为必要端点启用认证
- 限制端点访问IP范围
- 修改默认端点路径(通过
management.context-path) - 启用HTTPS保护传输数据
5. 最佳实践总结
- 最小化暴露原则:只启用业务确实需要的监控端点
- 强制认证:对所有敏感端点启用认证
- 定期审计:检查Actuator端点配置和访问日志
- 生产环境差异化配置:开发/测试环境与生产环境使用不同的安全配置
- 结合网络层防护:使用防火墙限制可访问Actuator端点的IP
通过以上措施,可以充分利用Actuator的监控功能,同时避免敏感信息泄露的风险。