漏洞信息
Sentinel是阿里巴巴发行的面向分布式服务架构的高可用防护开源组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。Sentinel开源生态如下:
Github地址为:
Sentinel
https://github.com/alibaba/Sentinel
最近发现有大佬提交了`issue`,sentinel-dashboard接口无需认证即可访问,并且存在未授权SSRF漏洞,存在重大安全隐患。下面给小伙伴们简单分享下漏洞细节。
漏洞分析
直接拉取老环境:
利用idea启动工程即可。
系统基于SpringBoot架构进行设计,定位`com.alibaba.csp.sentinel.dashboard.controller.MachineRegistryController`控制器类:
`receiveHeartBeat`定义了`/registry/machine`路由规则,对IP地址、端口等输入参数进行一系列检查,注意这里只验证了端口是否为整数,但是对IP地址字符串没有任何检查,完成检查后,新增了一个实例化的`MachineInfo`对象:
同时我们注意到在类`com.alibaba.csp.sentinel.dashboard.metric.MetricFetcher#MetricFetcher`的构造函数中会自动调用`start`函数:
在`start`中启动了一个定时器调用`fetchAllApp`函数:
通过`appManagement.getAppNames`获取全部app对象(包括上面创建的),遍历调用`doFetchAppMetric`:
进入`fetchOnce`:
取出`machine`对象中的IP地址和端口信息,构建URL对象并发送HTTP请求,整个过程缺少必要的验证和访问控制,导致恶意用户可以通过控制IP(字符串未做任何检查)和端口,从而构造URL发送SSRF攻击。
修复方式
最新版本进行了修复:
增加了对IP地址格式的检查,可以一定程度限制SSRF攻击,但是仍然可以对内网进行端口扫描。
由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。
点关注,不迷路!
原文始发于微信公众号(且听安全):【最新漏洞预警】阿里巴巴Sentinel开源组件SSRF漏洞分析