Spring Boot Actuator中你不得不防的安全风险
这里是小奏,觉得文章不错可以关注公众号小奏技术
heapdump安全问题
spring boot
提供了开箱即用的spring-boot-starter-actuator
模块,只需引入依赖,然后在application.yaml
里面添加如下配置
management:
endpoints:
web:
exposure:
include: health,metrics,heapdump
就能获得一系列应用监控管理信息。
比如应用的存活状态、bean
信息等。
官方支持的Actuator也非常多,基本啥都有很齐全
详细最新文档可以参考 官方文档: docs.spring.io/spring-boot…
其中heapdump
是非常核心并且非常容易泄漏导致严重的安全隐患的一个Actuator
组件。
我们在使用的时候务必要非常小心,如非必要,尽量不要开启
线上也不要使用如下方式全部开启
management:
endpoints:
web:
exposure:
include: *
最好是只开启health
Actuator
即可
如何泄漏
比如某个服务,在开启heapdump
这个Actuator
后。
我们可以直接通过http://127.0.0.1:9999/heapdump
获取到服务运行的heapdump
文件
获取到heapdump
文件后可以利用VisualVM
对heapdump
进行详细分析
VisualVM相关的使用教程可以参考之前的博文
然后利用Spring Boot
提供的OQL
语句可以获取到对象的一些属性信息,比如我们一些配置文件中reids
、mysql
数据库信息等
如果数据库相关的信息加密了可能稍微还好一点
OQL
这里的语法就不详细的介绍了,感兴趣自己可以去查阅相关的资料学习使用
也可以获取到一些缓存的用户信息,还是非常危险的
如何防范
-
ci
检测对application.yaml
进行检查禁止开启heapdump
Actuator
-
如果排查问题等非常需要开启heapdumpActuator可以考虑使用如下方式进行加强安全
-
management.endpoints.web.base-path基础路径配置一个自定义的外界比较难猜测的路径,而不是使用默认或者通用的
-
对所有Actuator接口进行拦截鉴权,只有特定角色或者携带特定token才能进行访问
-
监控Actuator访问记录
-
添加指定内网ip限制访问Actuator
-
可以考虑再网关层面限制所有Actuator的直接访问
-
需要时开启,用完马上关闭
-
总结
总的来说线上服务如果对外提供服务还是不推荐开启heapdump
Actuator
虽然研发不是专门搞安全的,但是平时也还是要注意一下安全问题
如果真的有需要一定要注意添加鉴权或者监控,否则线上服务的底裤可能都被人扒干净
转载自:https://juejin.cn/post/7392412382658904103