MaxKB 反序列化沙箱逃逸漏洞分析

Posted on 2025-09-10  103 Views


这个洞是我上上周挖的,因为感觉挖的难度太低了,怕被别人挖,所以直接交的CNVD,想混个证书

但是CNVD要我提供漏洞debug过程,问题是MaxKB文档里没说怎么debug,而且MaxKB是用docker直接装的,折腾debug环境太费力了

所以我只能把漏洞提交给作者飞致云了,他谢谢我

image

其实飞致云当天就修复了,隔天就把CI/CD配置文件docker镜像打包参数设置成已修复的2.1.1版本

这里向大家再次介绍《强烈推荐但是不给你用》星选集的新成员,它在实战使用过程中展现了自己的价值,它就是《开源项目代码监控平台》:

开源项目的漏洞生命周期监控 – zgbsm's note

《开源项目代码监控平台》监测到当天已修复漏洞

image

《开源项目代码监控平台》监测到隔天发布修复版本
image

不过目前CVE编号还没下来,vuldb说他们忙死了,可能要两周

那我们先来看看这个洞是怎么回事,其实非常简单

玩过AI工作流的大伙都知道,通常需要一点点代码量去处理AI的数据输入和输出,在MaxKB中,允许用户创建python代码作为AI工作流节点

现在写文章这台电脑没有漏洞环境,我找个图给大伙看看

image

这是b站上面官方演示视频的截图,存在漏洞的这个功能老版本叫函数库,新版本叫工具

在2.0.2版本中,用户输入的python代码会嵌入到一个python脚本里

image-fVKI

就是上面绿绿的那一片,用户代码会放在exec函数那里

这一段绿绿的代码会放在沙箱里运行,MaxKB是基于linux权限做的沙箱

既然有沙箱,为什么还会RCE呢?因为在读取结果的时候用了pickle反序列化,所以就RCE了

我是直接网上找了一个pickle的poc就打成功了

2CA85B1D@CCB5CE3F.AA49B96800000000
8BC98BC6@D0E89643.AA49B96800000000

其实MaxKB针对用户输入还做了过滤,不过反序列化的poc正好可以绕过过滤,大伙可以自己研究一下,2.1.0和之前的版本应该都有洞

这篇文章准备发布了,但是发现一个问题

image

dockerhub上面还是漏洞版本2.1.0,还没更新

差点就发出来了,好危险


你好