Apache Kylin 配置不当导致敏感信息泄露漏洞
项目介绍
Apache Kylin是美国阿帕奇(Apache)软件基金会的一款开源的分布式分析型数据仓库。该产品主要提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)等功能。
项目地址
https://github.com/apache/kylin
漏洞概述
Apache Kylin存在配置不当漏洞,该漏洞源于KylinSecurity.xml中配置的API authenticationurl url拦截器未对/api/admin/config这个接口在逻辑上进行合理的授权,导致用户可以直接访问Kylin的系统配置信息。
影响版本
2.0.0、2.1.0、2.2.0、2.3.0、2.3.1、2.3.2、2.4.0、2.4.1、2.5.0、2.5.1、2.5.2、2.6.0、 2.6.1、2.6.2、2.6.3、2.6.4、2.6.5、2.6.6、3.0.0-alpha、3.0.0-alpha2、3.0.0-beta、3.0.0、3.0.1、3.0.2、3.1.0、4.0.0-alpha
环境搭建
1、本次复现使用了受影响的Kylin 3.0.1版本,直接拉取官方镜像:
docker pull apachekylin/apache-kylin-standalone:3.0.1
2、启动命令如下:
docker run -d
-m 8G
-p 7070:7070
-p 8088:8088
-p 50070:50070
-p 8032:8032
-p 8042:8042
-p 16010:16010
apachekylin/apache-kylin-standalone:3.0.1
3、浏览器登录系统。
①Kylin页面:http://127.0.0.1:7070/kylin/login(ADMIN/KYLIN)
②HDFS NameNode页面:http://127.0.0.1:50070
③YARN ResourceManager页面:http://127.0.0.1:8088
漏洞复现
1、登录ADMIN/KYLIN进入系统管理页面,在System-User中新增一个测试用户,用户角色选择Administrator。
2、登录刚才创建的测试用户,在浏览器中直接访问http://your-ip:7070/kylin/api/admin/config
漏洞分析
在kylinSecurity.xml中定位到第301行和第303行。
第303行表示只有角色为ROLE_ADMIN的用户才可以访问api/admin*/** 接口,而第301行表示只要角色为ROLE_ADMIN的用户就可以访问api/admin/config接口,而接口中包含了数据库URL、账号密码等敏感信息。
修复方式
①官方已发布新版本修复漏洞,可将Apache Kylin 升级到3.1.1版本。
②编辑kylinSecurity.xml,删除下列行,重启 Kylin实例以使其生效。
参考链接
https://lists.apache.org/thread/g24p72p98c5gxjyd64qsc2hgjqy8k3z4;