DEV Community

Cover image for AI Agent Chained 2 Zero-Days to Root in Seconds: 4 Checks
Kiell Tampubolon
Kiell Tampubolon

Posted on

AI Agent Chained 2 Zero-Days to Root in Seconds: 4 Checks

An AI agent got root on a vulnerability disclosure nonprofit in seconds, using two zero-days nobody had published. The org that finds bugs for a living now runs its own breach case file, and CISA put the first CVE on the KEV list with a federal deadline of October 5. If you run any internet-facing self-hosted app, the four checks below are for you, and one of them takes 30 seconds of grep.

The short version: attackers hit DIVD (Dutch Institute for Vulnerability Disclosure) on September 21. DIVD noticed the next day, cut off its datacenter, and spent the week figuring out how. The answer: a session fixation bug in Zammad chained with a local privilege escalation, from an unauthenticated web session to root faster than an analyst could blink. DIVD attributes the whole thing to an autonomous AI agent. Whether that attribution holds is where this gets interesting, and where I want your take at the end.

Here is the 30-second check for your own Zammad logs:

# DIVD's log-check pattern (from their case file), run against
# preserved /var/log/zammad and /var/log/nginx
grep -rE '("Cookie"=>|@clients=\{)' /var/log/zammad /var/log/nginx
Enter fullscreen mode Exit fullscreen mode

A hit means session material leaked into error output. Per DIVD's guidance, treat any sign of exploitation as full host compromise, because the attacker had root. Now the breakdown.

What actually happened at DIVD, minute by minute?

The case file timeline is unusually honest. September 21: first unauthorized access. September 22: detection and a full datacenter block, with forensics handed to Merlon Security. September 24: public disclosure, vendor notification, and reports to the Dutch data protection authority, NCSC-NL, and the police. September 30: CVE publication, DIVD being a CVE numbering authority itself. October 1: the data accounting, which confirmed volunteer email addresses were exfiltrated and the CSIRT ticketing system was partially extracted.

What did not save them: faster patching. These were zero-days. What did save them, by DIVD's own account, was network segmentation and a noisy attacker. Keep those two words apart, because only one of them is under your control.

Why does the Zammad chain matter more than the sum of its bugs?

Two bugs, each moderate, chained into total compromise:

CVE-2026-102489  session fixation (CWE-384) -> RCE as the zammad user
                 CVSS 4.0: 8.7 alone, 9.4 chained
                 exploitable on Zammad 6.3.0 through 6.5.4; present but not
                 exploitable on 7.0.0 through 7.1.3 (environmental conditions)
CVE-2026-102490  local privilege escalation, zammad user -> root
                 CVSS 4.0: 8.5 alone; affects ALL versions 1.5.0 through 7.1.0-alpha
Enter fullscreen mode Exit fullscreen mode

The LPE range is the uncomfortable row. "Upgrade to Zammad 7 or take it offline" is DIVD's official advice, and it removes the exploitable path of the remote bug. It does not remove the LPE, which affects every version including the newest alpha. Zammad has since hardened code in 7.2.0 and disputes part of DIVD's disclosure, saying it could not verify the LPE without technical details and that the remote bug is not exploitable on supported releases in practice. Both statements are live. I am not going to referee them; read both advisories before you plan your upgrade.

The deeper point is the shape: a helpdesk platform is a secret concentration point. Mail tokens, API keys, database credentials for every system the support team touches. Root on that box is not root on a ticket database. It is a pivot point, which is exactly how the agent used it.

What evidence points to an AI agent, and what does not?

This is the part I had to sit with. DIVD's evidence, from their statements: the attack was "loud and very very messy," each step was chosen at machine speed after the previous one, and the attacker's scripts contained comments where the agent justified its own actions, arguing that what it was doing was "really not phishing." A human operator does not write self-justifying comments into an intrusion script. DIVD also noted the agent sabotaged its own adversary-in-the-middle attack by running password spraying against it, and that its overexplaining comments made reverse engineering easier.

Counterweights, stated plainly: DIVD is the victim, the bug finder, and the CVE issuer all at once. No model or framework has been named. No independent writeup from Zammad, Merlon, NCSC-NL, or NVISO existed when I researched this. "The modus operandi indicates" is DIVD's own phrasing, and I am keeping it: this is a credible first-party assessment, not settled fact.

Is agent noise a detection strategy or an accident?

Here is the debate hook, and I mean it. DIVD survived because the agent was sloppy and the network was segmented. Which of those can you count on?

My position: segmentation. The noise was probably a property of this agent's configuration, "poorly trained and configured for such operations" in the reporting, not a law of nature. A tuned agent reads the same playbooks human operators do, and humans learned quiet a long time ago. If your detection story assumes intruders narrate themselves in log comments, that story has a version number on it and it is already old.

The counterargument writes itself: agentic tooling is fast and non-deterministic by construction, machine-speed chaining compresses dwell time regardless of stealth, and detection will just have to get faster. I find that partially convincing and I am genuinely unsure where the line sits. That is the comment section question.

What are the 4 checks for your own instance?

I have not executed these against a production system. They are compiled from DIVD's case file, the NCSC-NL alert, and the Sysdig analysis; run them on your terms.

1. Version and exposure

CVE-2026-102489 is exploitable on 6.3.0 through 6.5.4. Check your version against the CVE record, and assume anyone scanning for exposed instances may already have found yours.

2. The 30-second log grep

The command from the top of this post, against preserved logs. NCSC-NL advises copying application and network logs before any upgrade. A clean grep is not a clean host; a hit is a rebuild.

3. Upgrade, with the caveat attached

Zammad 7 removes the exploitable remote path. 7.2.0 carries hardening. Neither erases the LPE range, which per the CVE record runs through 7.1.0-alpha. Watch Zammad's advisories for the fixed build before you declare done.

4. Segment the helpdesk

The control that worked at DIVD. Your ticketing box should be able to reach its mail relay and its database and little else. A helpdesk holding mail tokens and API keys does not need lateral reach, and when it is root-owned at machine speed, what it cannot reach is what you keep.

Why does "upgrade to 7" feel like false comfort?

Because the official advice and the CVE record contradict each other by one version range. DIVD says upgrade or offline. The record says the LPE affects everything up to the latest alpha. Both are true, and the gap between them is where operator decisions actually live: some downtime now, or a known-exploited LPE with no fixed build. I lean toward taking internet-facing instances offline until a fix ships, but I run nothing at Zammad's scale and I accept that 55,000 users do not all have that option.

I wrote about a related failure shape in 2 CVSS 9.8 Agent Sandbox CVEs Landed the Same Day, and about credentials living in the wrong layer in MCP 2026-07-28 Went Stateless. The common thread with the Postgres read-only bypass is the same: the boundary that holds is the one enforced below the application, not by it.

So, the argument I would like to have: was the DIVD breach a watershed moment where AI agents entered offensive operations for real, or one badly configured agent doing loud things with good CVEs attached? My honest answer is that one data point cannot settle it, and most coverage I read picked a side anyway. Tell me yours in the comments.

Primary sources: DIVD case file DIVD-2026-00014, DIVD CVE-2026-102489 advisory, Sysdig Threat Research analysis, Help Net Security, Hackread on the vendor dispute.

Top comments (0)