Threat actors have weaponized a devastating two-stage remote exploit chain targeting Zammad, the open-source web-based ticketing system relied upon by thousands of organizations worldwide. By chaining an unauthenticated session fixation defect (CVE-2026-102489) with an improper privilege management vulnerability (CVE-2026-102490), attackers achieve remote, unauthenticated code execution with full root privileges on host servers. CISA cataloged CVE-2026-102490 under emergency remediation directive BOD 26-04.

The Two-Stage Weaponization Chain

The threat campaign executes in two coordinated phases to transition from zero credentials to complete host takeover:

Phase 1: Session Fixation & Admin Account Hijacking (CVE-2026-102489)

In older releases of Zammad (notably 6.5 and earlier), the authentication controller failed to regenerate session tokens upon successful user logon. An attacker pre-seeds a valid session token in an unauthenticated HTTP request. When an administrator subsequently logs into the helpdesk, the backend accepts the attacker's token without issuing a fresh cookie. The attacker then assumes the administrative session, enabling access to system settings, custom hooks, and Ruby background job schedulers.

Phase 2: Local Privilege Escalation to Root (CVE-2026-102490)

Once initial script execution is established within the context of the service account (zammad), the attacker triggers CVE-2026-102490. Due to improper file permissions and misconfigured sudoer delegation scripts used for database backups and service maintenance, the zammad user can overwrite helper wrapper scripts executed by root cron tasks. Within seconds, the attacker spawns an interactive root shell.

Threat Intelligence & Indicators of Compromise

Active intrusions demonstrate threat actors immediately dumping PostgreSQL database credentials, downloading customer communication threads, and harvesting OAuth tokens integrated with Microsoft 365 and Google Workspace.

Telemetry Indicator Type Description & Forensic Signature
/var/log/zammad/production.log Log Pattern Repeated GET requests to /api/v1/sessions with static cookie headers prior to login events
/tmp/.zammad_svc_cache Artifact Staged ELF binary or reverse shell script spawned by user zammad
/etc/cron.d/zammad-maintenance Persistence Modified cron entry containing piped bash or netcat connections to external C2 IPs

Defensive Playbook & Emergency Incident Triage

Security teams operating self-hosted or cloud-hosted Zammad instances must execute immediate containment and verification:

  • Immediate Patching: Upgrade all Zammad installations to 7.1.0 or apply the official security hotfixes immediately.
  • Audit Active Sessions: Terminate all active web sessions across the database:
    zammad run rails r "Session.delete_all"
  • Inspect Sudoers & Cron Entries: Verify the integrity of /etc/sudoers.d/zammad and ensure permissions on maintenance scripts are strictly owned by root:root with mode 0750.
  • Rotate Credentials: Given that helpdesks store inbound/outbound SMTP credentials, IMAP passwords, and third-party webhook secrets, all integrated secrets must be rotated following server verification.