DEV Community

CVE Reports
CVE Reports

Posted on • Originally published at cvereports.com

CVE-2026-23946: Pickle Rick-rolled Again: The Zombie RCE in Tendenci CMS

Pickle Rick-rolled Again: The Zombie RCE in Tendenci CMS

Vulnerability ID: CVE-2026-23946
CVSS Score: 6.8
Published: 2026-01-21

A classic case of 'patch it once, shame on you; patch it twice, shame on me.' Tendenci CMS suffered from an authenticated Remote Code Execution (RCE) vulnerability due to an incomplete fix for a 2020 issue, leaving the Helpdesk module exposed to Python pickle deserialization attacks.

TL;DR

Tendenci CMS failed to fully remove unsafe pickle deserialization in its Helpdesk module, reviving a vulnerability thought to be dead since 2020. Authenticated staff members could achieve Remote Code Execution (RCE) by saving a malicious report query. Fixed in version 15.3.12 by replacing pickle with simplejson.


⚠️ Exploit Status: POC

Technical Details

  • CWE ID: CWE-502 (Insecure Deserialization)
  • CVSS v3.1: 6.8 (Medium)
  • Attack Vector: Network (Authenticated)
  • Impact: Remote Code Execution (RCE)
  • Language: Python
  • Affected Component: tendenci.apps.helpdesk

Affected Systems

  • Tendenci AMS
  • Tendenci: <= 15.3.11 (Fixed in: 15.3.12)

Code Analysis

Commit: 63e1b84

Fix RCE in run_report by replacing pickle with simplejson

- query_params = pickle.loads(b64decode(str(saved_query.query).encode()))
+ query_params = simplejson.loads(b64decode(str(saved_query.query).encode()))
Enter fullscreen mode Exit fullscreen mode

Commit: 23d9fd8

Add strict validation to SavedSearchForm

+ if k not in valid_keys:
+    raise forms.ValidationError(f'{k} is not a valid parameter.')
Enter fullscreen mode Exit fullscreen mode

Exploit Details

  • Internal Research: Exploit logic derived from patch diff showing removal of pickle.loads

Mitigation Strategies

  • Input Validation
  • Secure Deserialization
  • Principle of Least Privilege

Remediation Steps:

  1. Upgrade Tendenci to version 15.3.12 or higher.
  2. Audit settings.py and remove tendenci.apps.helpdesk if the helpdesk functionality is not required.
  3. Review all staff accounts and revoke unnecessary is_staff privileges.
  4. Search the codebase for other instances of pickle.loads.

References


Read the full report for CVE-2026-23946 on our website for more details including interactive diagrams and full exploit analysis.

Top comments (0)