当前位置: 首页 > news >正文

【漏洞复现】CVE-2022-43396

漏洞信息

NVD - CVE-2022-43396

In the fix for CVE-2022-24697, a blacklist is used to filter user input commands. But there is a risk of being bypassed. The user can control the command by controlling the kylin.engine.spark-cmd parameter of conf.

背景介绍

Kylin is a high concurrency, high performance and intelligent OLAP engine that provides low-cost and ultimate data analytics experience.

• 主页:https://kylin.apache.org/

• 源码:https://github.com/apache/kylin

环境搭建

$ docker pull apachekylin/apache-kylin-standalone:4.0.0
$ docker run -d \
-m 8G \
-p 7070:7070 \
-p 8088:8088 \
-p 50070:50070 \
-p 8032:8032 \
-p 8042:8042 \
-p 2181:2181 \
-p 5005:5005 \
apachekylin/apache-kylin-standalone:4.0.0

Kylin Web UI: http://127.0.0.1:7070/kylin/login

默认账号:admin、默认密码:KYLIN

【环境搭建】Apache Kylin 各个版本Docker搭建汇总-CSDN博客

【环境搭建】使用Dockerfile构建容器搭建Kylin特定版本-CSDN博客

漏洞复现

参考:kylin CVE-2022-24697 & CVE-2022-43396 - 先知社区

和CVE-2022-24697十分相似,选择自带的项目learn_kylin,进入cube页面:

在这里插入图片描述

编辑kylin_sales_cube,点击Configuration Overwrites,新建一行数据,键值对如下所示,包含了恶意命令拼接:

kylin.engine.spark-cmd
touch Mitch311; echo

在这里插入图片描述

按照如下步骤进行build,日期随便选,最后Submit:

在这里插入图片描述

进入docker容器,可以看到恶意命令已经被执行:

$ docker exec -it <container ID> /bin/bash
$ ll

在这里插入图片描述

漏洞分析

通过IDEA远程调试,在ExecuteResult runSparkSubmit这里打一个断点:

在这里插入图片描述

和CVE-2022-24697一样,通过runSparkSubmit方法内的getSparkConfigOverride方法,从全局配置属性中(包括cube配置重写的属性)返回键值开头为kylin.engine.spark-conf.的所有属性,最终cmd在这里完成了指令拼接:

在这里插入图片描述

不同点在于CVE-2022-24697是参数可控,CVE-2022-43396是命令可控。

修复方案

补丁:https://github.com/apache/kylin/pull/2011/files

补丁中取消了从cube配置重写的属性中读取kylin.engine.spark,而是直接指定sparkSubmitCmd参数为默认值:

在这里插入图片描述

http://www.lryc.cn/news/492522.html

相关文章:

  • 文件的摘要算法(md5、sm3、sha256、crc)
  • 如何借助AI生成PPT,让创作轻松又高效
  • 云技术-docker
  • 对docker安装的mysql实现主从同步
  • 【不定长滑动窗口】【灵神题单】【刷题笔记】
  • AI写论文指令
  • 2625扁平化嵌套数组
  • QT6学习第五天 第一个QT Quick程序
  • 【开发商城系统】
  • (11)(2.2) BLHeli32 and BLHeli_S ESCs(二)
  • C++ 11重点总结1
  • 海康VsionMaster学习笔记(学习工具+思路)
  • 基于Python语言的Web爬虫设计源码
  • 学习日志 --A5rZ
  • JVM_垃圾收集器详解
  • Javascript Insights: Visualizing Var, Let, And Const In 2024
  • KL散度改写为一个可用于优化的形式
  • Java代码操作Zookeeper(使用 Apache Curator 库)
  • 【Linux】Make/Makefile
  • C++练级计划->《多态》虚函数表,菱形继承多态
  • OkHttp3 - 2. OkHttp的核心组件与架构
  • 异或操作解决一些问题
  • 操作系统之输入输出
  • Centos 安装 Node.js 和 npm
  • C语言——指针初阶(一)
  • React Native 原生开发指南
  • 【前端】JavaScript中的柯里化(Currying)详解及实现
  • 解决 docker 部署 vsftpd 速度慢问题
  • Java基础夯实——2.9 多线程如何共享数据
  • 【Leetcode Top 100】234. 回文链表