CVE-2026-22688 是 WeKnora 框架中披露的一处高风险安全漏洞,WeKnora 是一款基于大语言模型(LLM)的应用框架,主要用于复杂文档的深度理解、语义解析与检索,在智能搜索、知识问答及企业知识库等场景中被广泛使用。
研究发现,在 WeKnora 0.2.5 之前的版本中,其对 MCP(Model Context Protocol)标准输入输出配置的安全校验存在缺陷。已通过身份认证的攻击者可在 stdio_config 配置项中注入恶意的 command 或 args 参数,从而影响后端子进程的启动行为。
在特定条件下,服务器在启动子进程时会直接使用被篡改的参数执行系统命令,导致命令注入风险,攻击者可能借此在服务器环境中执行任意指令,进而引发主机失陷、数据泄露或服务被进一步利用等安全问题。
目前,该漏洞已在 WeKnora 0.2.5 版本中完成修复。官方通过加强对 MCP 配置参数的校验与限制,避免不可信输入被用于子进程执行,从根本上消除了该安全隐患。
全球资产分布图如下:

漏洞编号:CVE-2026-22688
漏洞等级:严重
受影响版本:WeKnora < 0.2.5。
漏洞类型:远程命令执行
复现流程图:

1.创建独立实验目录
mkdir WeKnora && cd WeKnora
2.获取 WeKnora 源码并切换漏洞版本
从官方仓库拉取 WeKnora 项目代码,并切换至存在漏洞的版本:
git clone https://github.com/Tencent/WeKnora.gitcd WeKnora git checkout v0.2.4
确认当前代码版本:git describe --tags
输出结果应为:v0.2.4
3.固定 Docker 镜像版本
默认 docker-compose.yml 中部分镜像使用 latest 标签,为确保漏洞可稳定复现,需统一调整为 v0.2.4 版本。
检查并修改相关镜像配置:
image: wechatopenai/weknora-ui:v0.2.4
image: wechatopenai/weknora-app:v0.2.4
image: wechatopenai/weknora-docreader:v0.2.4
4.配置环境变量文件(.env)
在项目根目录创建 .env 文件,完成基础运行参数配置。以下为复现环境使用的示例配置(敏感字段仅用于测试环境):
# ========= 基础配置 =========
GIN_MODE=release
DISABLE_REGISTRATION=false
# ========= 数据库 =========
DB_DRIVER=postgres
DB_USER=weknora
DB_PASSWORD=WeKnora@2026!SecurePass
DB_NAME=weknora
# ========= 向量与存储 =========
RETRIEVE_DRIVER=postgres
STORAGE_TYPE=local
LOCAL_STORAGE_BASE_DIR=/data/files
AUTO_RECOVER_DIRTY=true
# ========= Redis =========
STREAM_MANAGER_TYPE=redis
REDIS_PASSWORD=Redis@2026!StreamPass
REDIS_DB=0
REDIS_PREFIX=weknora:
# ========= 安全密钥 =========
JWT_SECRET=9f3b1a8c5e7d2f6a4c0b9e1d8f3a7c5b2e6d9f0a1c4b8e3d7f2a5c9b6e0d4f1a
TENANT_AES_KEY=k3x9LmQpR7vYzN2sA5tG8wE1uH4jC6bF
# ========= Ollama =========
OLLAMA_BASE_URL=http://host.docker.internal:11434
# ========= 并发控制 =========
CONCURRENCY_POOL_SIZE=3
# ========= 服务端口 =========
APP_PORT=8080
FRONTEND_PORT=80
DOCREADER_PORT=50051
# ========= 其他 =========
APK_MIRROR_ARG=mirrors.tencent.com
ENABLE_GRAPH_RAG=false
NEO4J_ENABLE=false
5.启动服务组件
使用 Docker Compose 拉取镜像并启动所有服务(包含 MinIO 组件):
docker compose --profile minio up -d
6.检查容器运行状态
确认所有服务容器均已正常启动:
docker ps
7.日志验证(报错检查)
查看后端服务日志,确认无异常报错:
docker logs -f weknora-app
8.Web 访问与初始化
http://xxx.xxx.xx.x
已部署 WeKnora 0.2.5 之前版本的环境中,攻击者需首先获取一个合法的登录身份。完成身份认证后,使用获取到的访问令牌(Bearer Token),向系统提供的 MCP 服务管理接口发起请求。
攻击过程中,攻击者通过向 /api/v1/mcp-services 接口发送 POST 请求,在创建 MCP 服务时,将 transport_type 设置为 stdio,并在 stdio_config 参数中人为构造恶意配置。通过篡改 command 与 args 字段,使其不再是预期的安全执行参数,而是包含系统命令的执行指令。
由于后端在处理 MCP 标准输入输出配置时,未对 stdio_config.command 和 args 参数进行有效校验与限制,服务器在启动子进程时直接使用了攻击者提交的参数,最终导致系统命令被执行。
复现结果显示,恶意命令可在服务器本地成功执行,并生成对应的文件或写入系统信息,表明攻击者已具备在目标服务器上执行任意命令的能力,漏洞复现成功。
创建服务流程

访问Test-CVE-2026-22688服务,在web设置中选择MCP服务进行激活

进入docker验证是否执行成功


1.立即升级至安全版本
建议受影响用户第一时间将 WeKnora 升级至 v0.2.5 及以上版本,该版本已对 MCP stdio_config 参数的处理逻辑进行了安全加固,可有效防止恶意命令被注入并执行。
2.严格限制 MCP 执行参数
对 stdio_config.command 与 args 参数实施白名单策略,仅允许预期的可执行程序与参数组合,禁止直接调用系统 Shell(如 bash、sh 等),避免用户可控输入参与子进程命令构造。
3.强化运行权限与审计能力
建议将 WeKnora 服务运行在最小权限账号下,限制对系统关键目录的访问权限,并同步开启子进程创建、命令执行等关键行为的日志审计,便于及时发现异常操作并进行追溯。
和中科技作为互联网网络安全服务企业,以维护网络安全为己任,为全周期守护数字安全!做到预防有手段、阻击有利器、溯源有依据、恢复有保障,从灵鹫峰到战鹰、从工业网关到日志溯源,用科技铸就网络安全的铜墙铁壁,让您的安全您做主!