likes
comments
collection
share

Spring Boot Actuator中你不得不防的安全风险

作者站长头像
站长
· 阅读数 22

这里是小奏,觉得文章不错可以关注公众号小奏技术

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文件后可以利用VisualVMheapdump进行详细分析

VisualVM相关的使用教程可以参考之前的博文

然后利用Spring Boot提供的OQL语句可以获取到对象的一些属性信息,比如我们一些配置文件中reidsmysql数据库信息等

如果数据库相关的信息加密了可能稍微还好一点

OQL这里的语法就不详细的介绍了,感兴趣自己可以去查阅相关的资料学习使用

也可以获取到一些缓存的用户信息,还是非常危险的

如何防范

  1. ci检测对application.yaml进行检查禁止开启heapdump Actuator

  2. 如果排查问题等非常需要开启heapdumpActuator可以考虑使用如下方式进行加强安全

    1. management.endpoints.web.base-path基础路径配置一个自定义的外界比较难猜测的路径,而不是使用默认或者通用的

    2. 对所有Actuator接口进行拦截鉴权,只有特定角色或者携带特定token才能进行访问

    3. 监控Actuator访问记录

    4. 添加指定内网ip限制访问Actuator

    5. 可以考虑再网关层面限制所有Actuator的直接访问

    6. 需要时开启,用完马上关闭

总结

总的来说线上服务如果对外提供服务还是不推荐开启heapdump Actuator

虽然研发不是专门搞安全的,但是平时也还是要注意一下安全问题

如果真的有需要一定要注意添加鉴权或者监控,否则线上服务的底裤可能都被人扒干净

转载自:https://juejin.cn/post/7392412382658904103
评论
请登录