漏洞概述
Tendenci 是一个面向非营利组织、协会和公益类网站的开源内容管理系统。在 15.3.11 及更早版本中,其 Helpdesk 模块(默认未启用)存在一个关键的反序列化漏洞。该漏洞源于在 /reports/ 路径下使用了 Python 的 pickle 模块进行数据反序列化,允许具有 staff 权限的已认证用户实现远程代码执行(RCE)。此前 CVE-2020-14942 的修复不完整:虽然 ticket_list() 函数已改用安全的 JSON 反序列化,但 run_report() 函数仍使用不安全的 pickle.loads()。该问题已在 v15.3.12 中修复。
漏洞详情
- CVE 编号:CVE-2026-23946
- 漏洞类型:CWE-94(代码生成控制不当)、CWE-502(反序列化不可信数据)
- CVSS 评分:6.8(中危),向量:CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:H/I:H/A:H
- 影响版本:Tendenci ≤ 15.3.11
影响范围
所有使用 Tendenci 15.3.11 及更早版本且启用了 Helpdesk 模块的系统均受影响。需注意,Helpdesk 模块默认未启用,仅当管理员手动启用后才存在风险。
风险分析
攻击者需具备 staff 级别权限并诱导用户交互(如点击特定链接),方可利用该漏洞在服务器上执行任意代码。由于应用通常以 www-data 用户运行,其权限受限(一般无写入或执行权限,上传目录除外),因此实际危害受运行环境限制,但仍可能导致敏感信息泄露、系统完整性破坏或服务中断。
修复建议
- 立即升级至 Tendenci v15.3.12 或更高版本,该版本已彻底修复 run_report() 中的 unsafe pickle 使用问题。
- 若无法立即升级,建议禁用 Helpdesk 模块,或限制 staff 用户权限,避免非必要人员访问 /helpdesk/reports/ 路径。
