查看原文
其他

Skywalking远程代码执行漏洞预警

漏洞预警 阿里云先知 2021-02-07

01

时间轴

2021-01-23
蚂蚁安全非攻实验室 @fatansyC4t 向Apache官方报告了Apache Skywalking远程代码执行漏洞

2021-02-04
Apache Skywalking官方发布了补丁,修复了该漏洞。

2021-02-07
阿里云安全发布漏洞风险提示。

02

漏洞分析

Skywalking历史上存在两次sql注入漏洞,CVE-2020-9483、CVE-2020-13921。经过源码分析,发现两次sql注入漏洞修复并不完善,仍存在一处sql注入漏洞。(该请求无页面入口,需要根据graphql配置文件手动进行请求构造,或许这就是官方遗漏该注入点的原因)

Skywalking默认配置下使用的数据库为h2,且使用sa权限启动。 


 




通过查询官方文档得知,h2数据库存在写文件函数FILE_WRITE(需要admin权限执行),文件内容及文件名均可控。 


另一个LINK_SCHEMA函数可以指定并发起一次jdbc或者jndi请求,但由于目标环境中无tomcat和springboot依赖,所以在高版本jdk中也无法进行通用的jndi利用,需要在本地依赖中寻找reference链。 

进一步分析LINK_SCHEMA底层源码,发现代码中存在一处类加载过程,而这个类就是sql函数的第二个参数,用户可控。(这个参数用于指定本次使用的jdbc驱动类或者jndi context类) 


于是我们可以先利用任意文件写入函数在classpath中写一个恶意类,然后再使用LINK_SCHEMA函数来加载这个恶意类,实现远程代码执行。

03

漏洞证明

04

修复建议

1、升级Apache Skywalking 到最新的 v8.4.0 版本。

2、将默认h2数据库替换为其它支持的数据库。

05

安全产品


安全产品解决方案
云盾WAF
已可防护该类漏洞,并提供7天免费漏洞应急服务,为 您争取漏洞修复时间,应急开通地址:https://c.tb.cn/I3.XzCtR
阿里云云安全中心应急漏洞模块已支持对该漏洞一键检测
阿里云云防火墙 已可以防御此攻击

         


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存