CVE-2026-23946Tendenci是一个面向非营利组织、协会和公益网站的开源内容管理系统。该系统在15.3.11及以下版本中的Helpdesk模块存在严重的反序列化漏洞。攻击者可以利用/helpdesk/reports/路径下的run_report()函数,通过构造恶意的pickle序列化数据进行反序列化攻击,从而实现远程代码执行(RCE)。此漏洞需要攻击者具有认证的staff级别用户权限。由于系统使用Python的pickle模块进行反序列化,而pickle.loads()默认允许执行任意代码,这使得攻击者可以执行系统命令。该漏洞是之前CVE-2020-14942补丁的不完整修复,虽然ticket_list()函数已改用安全的JSON反序列化,但run_report()函数仍使用不安全的pickle.loads()。受影响系统的默认运行用户(如www-data)通常权限受限,仅在上传目录有写入权限,但这仍可能导致严重的服务器沦陷风险。官方已在15.3.12版本中修复此漏洞。
漏洞位于Tendenci CMS的helpdesk/reports/功能模块中的run_report()函数。该函数直接使用Python的pickle.loads()对用户可控的数据进行反序列化操作,而没有使用安全的反序列化方式如json.loads()。Python的pickle模块在反序列化时,如果对象类定义了__reduce__()或__reduce_ex__()方法,反序列化过程会执行任意代码。攻击者可以通过构造包含恶意__reduce__()方法的Python对象,序列化后提交给run_report()函数,从而在服务器上执行任意系统命令。典型的恶意payload会创建一个对象,其__reduce__()方法返回执行系统命令的函数(如os.system或subprocess.Popen)。由于该函数位于/helpdesk/reports/路径下,攻击者需要先获取具有staff安全级别的用户账户,然后通过HTTP请求提交恶意序列化数据。CVSS向量显示此漏洞需要网络访问(AV:N)、高权限认证(PR:H)和用户交互(UI:R),但一旦利用成功,可造成高机密性(C:H)、高完整性(I:H)和高可用性(A:H)影响。