Vulnerabilities
AI agent chains two Zammad zero-days to root at DIVD
An AI agent hacked DIVD through two Zammad flaws, one still unpatched. Affected versions, the upgrade, log checks and what to rotate on a helpdesk server.
The Dutch Institute for Vulnerability Disclosure (DIVD), the volunteer group that warns organisations about exposed and vulnerable systems, was breached on September 21 through its own Zammad helpdesk. Zammad is an open-source ticketing platform with more than 2,000 customers and about 55,000 users. The attacker chained two flaws nobody knew about: CVE-2026-102489, a session hijack that leads to remote code execution, and CVE-2026-102490, a local privilege escalation from the zammad service account to root.
DIVD believes an AI agent ran the intrusion, choosing each next step itself and getting from the first request to root in seconds. The remote code execution flaw is exploitable in Zammad 6.3.0 to 6.5.4, and upgrading to version 7 blocks it. The root flaw affects every release from 1.5.0 up to the latest alpha, and Zammad is still working on a fix. If you run a self-hosted Zammad on version 6, upgrade or take it offline today, then check its logs.
How the chain works
Zammad is a Ruby on Rails application that runs under its own zammad Linux account. CVE-2026-102489 lets an attacker with no account take over a logged-in user's session and run code on the server as zammad. DIVD has not published the request involved. Its log check script, though, searches Zammad and nginx logs for ERROR lines that contain a "Cookie"=>" value or an @clients={ structure, which suggests that session cookies end up in error output. DIVD has not said how the attacker read them from there.
Code execution as zammad already exposes everything the application can read: tickets, attachments, customer contact data and the database password in /opt/zammad/config/database.yml on package installs. CVE-2026-102490 then lifts that shell to root. DIVD's CVE records describe it only as a way for the local zammad user to escalate privileges, present in all versions including the latest alpha.
Both CVEs carry a CVSS 4.0 score of 9.4 in the scenario where they are chained, which is the figure most reports quote. On their own, DIVD scores the session hijack at 8.7 and the privilege escalation at 8.5, because the second needs a local foothold first. Both records are marked as exploited and automatable.
DIVD says versions 7.0.0 to 7.1.3 still contain the session hijack code but are not exploitable because of "environment conditions", without saying which. Version 7 stops the published chain, but the flawed code is still there, so keep it patched as fixes arrive.
What the attacker did
After root on the helpdesk server, the attacker reached other DIVD services and took data. DIVD's statement of October 1 says volunteer data got out, such as DIVD email addresses and possibly contact details, and that whose data and exactly which fields are still under investigation. Network segmentation and the response team stopped the attacker from going deeper. DIVD found the activity on September 22, blocked access to every system in its datacentre and started forensics with Merlon Security.
The case for an AI agent rests on behaviour. DIVD calls the attack "loud and very messy", with the agent working automated and deciding each step at speed on sloppy logic. Its scripts carried comments in which it justified its own actions and argued that what it was doing was not phishing. It also spoiled its own adversary-in-the-middle setup by running password spraying, guessing common passwords across many accounts, at the same time. DIVD says those comments made reverse engineering easier, and it sees no link to any known threat actor.
DIVD has been scanning the internet for exposed vulnerable Zammad instances since September 26 and is notifying their owners. If your helpdesk is internet-facing, expect a notice.
What to do
1. Upgrade or take it offline
Find your version under the admin settings or with your package manager, then upgrade any 6.x install to a current 7.x release. DIVD's advice is to upgrade to version 7 or take the system offline. Zammad has not published its own advisory for either CVE on its GitHub security page yet, so watch that page and the release notes for the CVE-2026-102490 fix.
2. Reduce exposure while the root flaw stays open
No vendor workaround exists for CVE-2026-102490. It needs code execution as zammad first, so the practical defence is to make that harder to reach. Put the agent interface behind your VPN or an IP allowlist on the reverse proxy, and keep the customer portal public only if you use it. Keep the Zammad host on its own network segment with outbound traffic limited to your mail servers, directory and update mirrors. DIVD credits segmentation for limiting its own damage.
3. Check whether you were hit
- Download DIVD's script from case DIVD-2026-00015 and run
sh cve-2026-102489_ioc_check_script_v2.shon the server. With no arguments it scans/var/log/zammadand/var/log/nginx, including rotated.gzfiles, for session material in error output. On Docker installs, pass the paths where the container logs end up. - Run it before upgrading and copy the logs off the host first. Help Net Security notes DIVD's advice to preserve application and network logs before patching.
- A clean result only covers that one indicator. DIVD's script itself asks you to look for unfamiliar processes and files: run
ps -u zammad -fandps -u root -ffor shells or tools Zammad would never start, andfind / -xdev -user zammad -newermt 2026-09-01 -not -path '/opt/zammad/*'for recent files outside the install tree (move the date back if your server ran 6.x for longer). - In the admin console, open System > Sessions and end any session you cannot tie to a known agent, location and browser.
- Check firewall logs for connections from the Zammad host to anything except your mail, directory and update servers.
4. If you find signs of compromise
Assume root. Rebuild the server on version 7 from a clean image, restore the database from a backup, and do not copy the old /opt/zammad tree across. Then rotate what the server held: the PostgreSQL password, the IMAP and SMTP passwords for every email channel, the LDAP or Active Directory bind account, API tokens for integrations, and every agent's password. Your customers' data sat in those tickets, so bring in whoever handles breach notification for your organisation.
The wider lesson
Helpdesk systems collect passwords, screenshots and contact details that people paste into tickets, and they often sit outside the patch priority given to VPNs and firewalls. At DIVD the whole chain ran in seconds, and segmentation was what limited the damage. Put the helpdesk in the same patch group as the systems that hold customer data, keep its agent interface off the open internet, and limit where the server can connect.
Our web application penetration tests cover helpdesk and portal software like Zammad, and our safeguarding and hardening work sets up the segmentation and access limits that contain a compromised application server. Open the chat and Yaali, our AI agent, will pass your question to the engineer who would do the work.
Sources: DIVD case DIVD-2026-00014, DIVD case DIVD-2026-00015, DIVD log check script, CVE-2026-102489 record, CVE-2026-102490 record, Help Net Security, SecurityWeek, The Register, Security Affairs, Tech Times, Zammad admin docs: Sessions.