CVE-2026-102490: Zammad Privilege Escalation
Active exploitation confirmed in the wild. CISA added this to the KEV catalog on 2026-10-02. Federal agencies must patch by 2026-10-05.
TL;DR - CVE-2026-102490 lets an attacker with write access as the
zammadservice account escalate to root on affected packaged installations. - DEB and RPM deployments are affected; source installs and official Zammad container images are not affected according to the available advisory data. - CISA lists the CVE in KEV, confirming exploitation in the wild. Upgrade to Zammad 7.2.2 or later and investigate potentially exposed hosts.
Summary
CVE-2026-102490 is a Zammad vulnerability involving improper privilege management in packages built with packager.io. The flaw affects installations delivered as DEB and RPM packages. A local attacker who can write files as the unprivileged zammad service account may modify content executed by services that initially run with root privileges, resulting in full root access.
The vulnerability has a CVSS base score of 7.8. NVD does not expose the complete CVSS vector in the available record, so the precise component values should not be inferred. CISA added the vulnerability to its Known Exploited Vulnerabilities catalog on 2026-10-02, with a remediation due date of 2026-10-05. That status makes this an urgent remediation and incident-response concern.
Organizations reviewing this issue should also understand how software flaws fit into broader operational resilience requirements. Our DORA FAQ explains related requirements for ICT risk management and incident response.
| Field | Value |
|---|---|
| CVE ID | CVE-2026-102490 |
| Product | Zammad |
| Vendor | Zammad GmbH |
| Vulnerability type | Improper privilege management, local privilege escalation |
| CVSS base score | 7.8 |
| Attack vector | Local, based on the described requirement for filesystem write access |
| Authentication or foothold required | Access capable of writing as the zammad service account |
| Patch status | Yes, Zammad 7.2.2 is identified as patched |
| CISA KEV | Yes |
| Exploitation status | Confirmed in the wild through CISA KEV listing |
| Ransomware association | Unknown |
The issue is not described as unauthenticated remote code execution. An attacker must first obtain a suitable foothold, such as code execution or filesystem-write capability under the zammad account. That foothold could result from another vulnerability, a compromised integration, a malicious plugin or job, or a separate local compromise.
Analyst’s Take: Patch the packaged deployments first, then investigate how the
zammadaccount could obtain filesystem-write access. The KEV listing means defenders should treat vulnerable hosts as possible incident-response cases, not only as routine package updates.
Root Cause
The root cause is an unsafe relationship between service startup privileges, executable ownership, and installation-directory permissions in affected packaged deployments. The affected service processes initially run as root, execute files owned and writable by zammad, and then drop privileges to the unprivileged service account. If an attacker can replace or modify those files, the altered content may execute during a privileged service start or restart.
This design becomes particularly dangerous because the affected services restart automatically when they stop. An attacker does not necessarily need an administrator to manually restart Zammad. By stopping or triggering a service restart after modifying the relevant content, the attacker may cause code under their control to execute with root privileges.
The exploitation sequence described by the available records is:
- Obtain filesystem-write capability as
zammad. - Modify executable content or another file used during privileged service startup.
- Trigger or wait for an automatic service restart.
- Allow the modified content to execute before the service drops privileges.
- Obtain root-level access to the host.
The vulnerability represents a privilege-boundary failure rather than a direct network attack. The initial access path remains important: defenders should investigate how an attacker could write as zammad, not only whether the vulnerable package is installed.
Technical Notes
A basic local review should identify the service account, installation paths, and ownership of executable files. Run these commands as an administrator and adapt paths to the distribution’s package layout:
getent passwd zammad
systemctl list-units --type=service | grep -i zammad
systemctl cat zammad
ps -eo user,group,pid,ppid,comm,args | grep -i '[z]ammad'
Inspect package ownership and writable paths:
dpkg -l | grep -i zammad
rpm -qa | grep -i zammad
find /opt/zammad /usr/share/zammad /var/lib/zammad \
-xdev -type f -user zammad -writable -ls 2>/dev/null
find /opt/zammad /usr/share/zammad /var/lib/zammad \
-xdev -type f -perm /022 -ls 2>/dev/null
The exact directories vary by package and operating system. Do not treat the absence of a result from these example paths as proof that a host is safe.
Who’s Exposed
The affected installation method is the most important scoping criterion. The vulnerability affects Zammad installed from DEB or RPM packages built with packager.io. The DIVD CSIRT advisory identifies the affected version range as Zammad v1.5.0 through v7.2.2 when installed through those package formats.
The GitHub security advisory gives a narrower boundary, listing affected versions as <= 7.2.1 and identifying 7.2.2 as the patched version. Because the available sources use different boundaries, organizations should not rely on a version-only conclusion without checking the package provenance and exact deployment method.
The NVD description states that all released packaged versions were affected, while the vendor advisory adds runtime-specific context: exploitation is possible in practice on Zammad 6.5 and earlier, and Zammad 7.0 and later are not affected in practice under the vendor’s runtime environment. These statements should be reconciled against the exact package, runtime, operating system, and service configuration in use.
| Deployment | Exposure assessment |
|---|---|
| DEB package built with packager.io | Treat as affected if running below 7.2.2; validate against the vendor advisory |
| RPM package built with packager.io | Treat as affected if running below 7.2.2; validate against the vendor advisory |
| Zammad 7.2.2 or later packaged deployment | Patched according to the GitHub security advisory; verify package installation |
| Source installation | Not affected according to the NVD description |
| Official Zammad container image | Not affected according to the NVD description |
| Unknown package provenance | Assume exposure until provenance and version are verified |
Administrators should inventory both the Zammad version and how it was installed. A system may appear current in an application interface while still running an older package, a partially updated service component, or a custom package derived from an affected build.
Severity Breakdown
CVE-2026-102490 has a CVSS base score of 7.8, placing it in the high-severity category. The available NVD record does not expose the complete CVSS vector, so the precise values for attack complexity, privileges required, user interaction, scope, confidentiality, integrity, and availability should be obtained directly from the authoritative record before using them in automated scoring or risk dashboards.
The practical severity is driven by the resulting privilege level. The attacker begins with access associated with the unprivileged zammad account but can potentially reach root on the host. Root access can expose Zammad application data, credentials, configuration files, locally stored secrets, database access, backups, operating-system files, and other services on the same machine.
The local prerequisite reduces the set of directly exposed attackers compared with a remotely reachable unauthenticated flaw. It does not make the issue low risk. A separate vulnerability or compromised integration that enables writes as zammad can become a reliable path to full host compromise. The CISA KEV listing further indicates that attackers have successfully exploited the vulnerability in real-world environments.
| Severity consideration | Assessment |
|---|---|
| Initial access | Existing local or service-account foothold required |
| Privilege transition | zammad service account to root |
| Interaction | Automatic service restart may remove the need for administrator action |
| Confidentiality impact | Potentially high after root compromise |
| Integrity impact | Potentially high after root compromise |
| Availability impact | Potentially high after root compromise |
| CVSS | 7.8 |
| Exploit priority | Critical operational priority because of KEV status |
Exploitation Status
Exploitation in the wild is confirmed by CISA’s KEV listing. CISA added CVE-2026-102490 on 2026-10-02 and assigned a remediation due date of 2026-10-05. The KEV record does not identify a specific threat actor, exploit kit, campaign, or intrusion set.
CISA records the ransomware-campaign field as Unknown. The available KEV data does not associate this vulnerability with a known ransomware campaign; it does not mean that ransomware involvement has been ruled out across all environments.
No standalone public proof-of-concept repository was identified in the reviewed references. The GitHub security advisory documents the issue and remediation but, based on the available material, does not provide an exploit repository. Defenders should distinguish between “no public PoC identified in the reviewed sources” and “no exploit exists.” The KEV status demonstrates that exploitation has occurred regardless of whether a public PoC is available.
Organizations with exposed or vulnerable deployments should assume targeted exploitation is plausible. Preserve evidence before making destructive changes if compromise is suspected, particularly where the zammad account may have written to executable paths or where unexpected root-level activity occurred.
Sources
The primary references for this assessment are:
-
NVD: CVE-2026-102490
Provides the CVE description, CVSS base score, affected installation context, and publication metadata. -
CVE Record: CVE-2026-102490
Provides the CVE record and coordinator information. -
CISA Known Exploited Vulnerabilities Catalog
Records the KEV listing, 2026-10-02 date added, 2026-10-05 due date, and unknown ransomware-campaign status. -
Zammad vendor advisory
Provides vendor-specific impact and runtime context. -
GitHub Security Advisory: GHSA-p97w-927q-8vxq
Identifies affected versions as<= 7.2.1and patched version 7.2.2. -
DIVD CSIRT advisory for CVE-2026-102490
Identifies the broader affected range of Zammad v1.5.0 through v7.2.2 for DEB and RPM installations. -
DIVD case DIVD-2026-00015
Provides additional coordinator case context.
For related terminology, see our cloud security glossary.
Where these sources differ on version boundaries or runtime conditions, administrators should use the conservative operational position: identify package provenance, upgrade packaged installations to Zammad 7.2.2 or later, verify the resulting service configuration, and investigate systems that ran affected versions.
This article may contain affiliate links. We earn a commission on qualifying purchases at no extra cost to you.
Detection Guidance
Detection should combine package inventory, filesystem monitoring, service telemetry, and host-based investigation. The key behaviors are unexpected writes by the zammad account, changes to files executed during Zammad service startup, unusual service restarts, and a transition from a zammad process to a root shell or unexpected root process.
First determine whether the deployment is in scope:
# Debian and Ubuntu
dpkg-query -W -f='${Package}\t${Version}\n' 2>/dev/null | grep -i zammad
# RPM-based systems
rpm -qa --qf '%{NAME}\t%{VERSION}-%{RELEASE}\n' 2>/dev/null | grep -i zammad
# Service and recent restart history
systemctl status zammad --no-pager
journalctl -u zammad --since "30 days ago" --no-pager
The following indicators are especially relevant:
- Writes by UID or username
zammadto root-owned executable directories. - Changes to service units, startup scripts, wrappers, hooks, or files loaded before privilege dropping.
- Zammad service restarts outside approved maintenance windows.
- A root process whose ancestry includes a Zammad process or a shell launched from a Zammad-related process.
- New SSH keys, cron entries, systemd units, sudoers changes, or privileged binaries created after suspicious Zammad activity.
- Package changes that cannot be tied to an approved update.
Technical Notes
For systems using auditd, a targeted rule can monitor writes and attribute them to the zammad account. Replace paths with the actual package and service directories:
sudo auditctl -a always,exit -F arch=b64 -S openat,creat,truncate \
-F dir=/opt/zammad -F uid="$(id -u zammad)" \
-F perm=wa -k zammad-service-account-writes
sudo ausearch -k zammad-service-account-writes -i
A useful journal query for suspicious service activity is:
journalctl --since "30 days ago" --no-pager \
| grep -Ei 'zammad|systemd.*(start|stop|restart)|permission denied|exec'
A generic SIEM query should alert when the service account writes to executable locations or when a Zammad-related process launches a privileged shell. For example, in an Elastic-style schema:
event.category:process and
process.parent.user.name:"zammad" and
process.user.name:"root" and
process.name:(bash or sh or dash or sudo or su)
This query is a starting point, not a universal detection rule. Field names differ by agent and operating system. Correlate process events with file-integrity alerts and service restarts to reduce false positives.
Remediation Steps
Upgrade affected DEB and RPM installations to Zammad 7.2.2 or later. The GitHub security advisory identifies 7.2.2 as the patched release. Before updating production, confirm compatibility, back up the database and application data, and verify that the package repository supplies the intended version.
Example package-manager commands are:
# Debian or Ubuntu: inspect available versions first
apt-cache policy zammad
# Upgrade the package
sudo apt-get update
sudo apt-get install --only-upgrade zammad
# RPM-based systems: inspect available versions first
dnf info zammad
# Upgrade the package
sudo dnf upgrade zammad
These commands do not guarantee that the available repository contains 7.2.2 or later. Confirm the installed result:
dpkg-query -W -f='${Version}\n' zammad 2>/dev/null
rpm -q --qf '%{VERSION}-%{RELEASE}\n' zammad 2>/dev/null
If the package manager cannot provide the patched release, obtain the supported package from the vendor’s official distribution channel. Do not substitute an unrelated source build without reviewing the deployment and support implications.
Technical Notes
After upgrading, verify that all service components are using the new package and that no stale copies remain:
systemctl daemon-reload
sudo systemctl restart zammad
systemctl status zammad --no-pager
systemctl show zammad -p ExecStart -p User -p Group
Review ownership and permissions for executable and service paths:
sudo find /opt/zammad /usr/share/zammad -xdev -type f \
\( -perm /022 -o -user zammad \) -ls 2>/dev/null
sudo systemctl cat zammad
The goal is to ensure that the zammad account cannot modify files later executed with root privileges. Do not apply broad recursive ownership changes without understanding the package’s expected permissions; an incorrect change can break the application or create a new security problem.
If immediate patching is impossible, isolate the deployment from untrusted networks, restrict access to administrative and integration interfaces, disable unnecessary plugins or jobs that can write to the host, and follow the vendor’s mitigation instructions. These controls are temporary risk reduction, not a replacement for upgrading.
Because CISA lists the CVE in KEV, treat vulnerable systems as potentially compromised. Preserve logs, package metadata, filesystem timestamps, and relevant disk or host telemetry before remediation where feasible. Investigate the zammad account, service restarts, modified executable files, new root processes, persistence mechanisms, credentials, and outbound connections. Rotate secrets after determining whether configuration files or application data may have been accessed.