Report a Sentinel Security Vulnerability about SSRF #2451
Labels
area/dashboard
Issues or PRs about Sentinel Dashboard
kind/bug
Category issues or prs related to bug.
Milestone
你好,我是SecCoder Security Lab的threedr3am,我发现了Alibaba开源限流熔断组件Sentinel中的管控平台sentinel-dashboard存在认证前SSRF漏洞,恶意用户无需认证即可通过该接口进行SSRF攻击。
Issue Description
Type: bug report
由于该开源项目的sentinel-dashboard module中存在着接口/registry/machine无需授权即可访问,并且客户端接入时提交的注册数据无任何权限校验就存储在内存中,恶意用户无需认证登陆,即可发送恶意的应用注册数据,让sentinel-dashboard定时任务对其数据中ip指定的主机发起GET请求,进行SSRF攻击。
漏洞点在com.alibaba.csp.sentinel.dashboard.metric.MetricFetcher#fetchOnce
通过查看代码可以发现,该方法中会遍历注册AppInfo中每台机器MachineInfo的注册信息,构造对应的URL进行采集客户端限流熔断等数据,但其ip字段无任何校验,通过井号'#'等字符就可以截断后续的URL内容(RFC),进而控制管控平台sentinel-dashboard发起任意GET请求。
通过漏洞调用链,可以发现这是一个10秒钟执行一遍的定时任务
com.alibaba.csp.sentinel.dashboard.metric.MetricFetcher
Describe what happened (or what feature you want)
因为Sentinel的设计,该接口是用于客户端接入时进行注册用途,一般情况下,内网可信网络下无需认证,或k8s下使用类似istio等进行访问限制,所以,接口认证不存在问题。但对于拼接URL进行客户端限流熔断数据采样的行为,缺少了参数校验,导致可以任意控制URL发起HTTP GET请求的SSRF攻击。
因为port字段是Integer类型,使其具有了一定的限制,但ip字段没有任何校验,需要对其进行严格的校验,比如引入正则限制必须是ip,或者域名等等。
Describe what you expected to happen
SSRF
How to reproduce it (as minimally and precisely as possible)
可以看到,nc监听到了GET请求
Tell us your environment
Anything else we need to know?
The text was updated successfully, but these errors were encountered: