
Zammad's AI Agent RCE: een geneste template-tag, een fix van één letter
- OrcaNIEUWOrcaCyber: MiniMax M3.1 Flash Abliterated / Uncensored2026-10-29100 tok/s
- OrcaNIEUWOrcaCyber: GLM 5.3 Flash Abliterated / Uncensored2026-10-27$0.80 / $1.60 per 1 mln tokens · 102 tok/s
- OrcaNIEUWOrcaCyber: Qwen3.8 Flash Next Abliterated / Uncensored2026-10-26$0.80 / $1.60 per 1 mln tokens · 283 tok/s
- OrcaNIEUWOrcaCyber: MiMo V2.6 Flash Abliterated / Uncensored2026-10-26$0.80 / $1.60 per 1 mln tokens · 93 tok/s
- MoonshotNIEUWMoonshotAI: Kimi K3.1 Pro2026-10-2446Intelligentie
- OrcaNIEUWOrcaCyber: DeepSeek V4.1 Flash Abliterated / Uncensored2026-10-23$0.80 / $1.60 per 1 mln tokens · 106 tok/s
- minimaxNIEUWMiniMax: M3.1 Flash2026-10-1929Intelligentie
- OrcaNIEUWOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 per 1 mln tokens · 70 tok/s
- deepseekNIEUWDeepSeek: DeepSeek V4.1 Flash 10172026-10-1733Intelligentie
- DeepSeekNIEUWDeepSeek: DeepSeek V4.1 Flash2026-10-1740Intelligentie
- OrcaOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 per 1 mln tokens · 95 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2955Intelligentie
- anthropicAnthropic: Claude Sonnet 5.52026-09-2854Intelligentie
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 per 1 mln tokens · 168 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2228Intelligentie
- OpenAIOpenAI: GPT-6 Sol2026-09-2248Intelligentie
- AnthropicAnthropic: Claude Opus 5.52026-09-2258Intelligentie
- xiaomiXiaomi: MiMo-V2.6-Flash2026-09-2127Intelligentie
- xiaomiXiaomi: MiMo-V2.6-Pro2026-09-2130Intelligentie
- xAIGrok 4.72026-09-2134Intelligentie
Zammad, de opensource-helpdesk, bracht op 4 augustus 2026 versie 7.1.2 uit met achttien beveiligingsfixes; de eerste in de lijst sluit een fout voor uitvoering van externe code in de configuratievelden van de AI Agent-functie. De kwetsbaarheid is CVE-2026-84462, op dezelfde dag bekendgemaakt in GitHub-advisory GHSA-gp3x-9xm8-rcj6, en het getroffen bereik is elke zelfgehoste installatie op een versie tot en met 7.1.1. Een beheerder die een AI Agent kan aanmaken of bewerken, zou speciaal vervaardigde tekst in een van de velden van de agent kunnen invoeren, het filter dat die onschadelijk moet maken kunnen omzeilen en willekeurige opdrachten kunnen uitvoeren op de server waarop Zammad draait — met het potentieel, in de woorden van de waarschuwing, om "alle gegevens die op die server zijn opgeslagen te lezen, te wijzigen of te vernietigen." Geen andere gebruiker hoeft iets te doen: de waarschuwing stelt dat "de kwaadaardige code automatisch wordt uitgevoerd de volgende keer dat de betrokken AI Agent een ticket verwerkt." GitHub beoordeelt het als Hoog met 8,6 op CVSS 4.0. Het record, zijn ernst- en schadetags, en de vermeldingen die eromheen zijn geregistreerd, worden bewaard in het Orca AI Incident Archive, dat dit incident samen met de rest van de reeks vermeldt.
Wat het advies vaststelt
Het GitHub-beveiligingsadvies, gepubliceerd op 4 augustus 2026, is kort en opvallend specifiek over het mechanisme en de voorwaarden. Het beschrijft "een beveiligingsfilter dat de AI Agent-configuratie van Zammad beschermt" dat "kan worden omzeild door speciaal samengestelde tekst in te voeren in een van de velden van een AI Agent", en het benoemt de actor nauwkeurig: "Een beheerder met toestemming om AI Agents aan te maken of te bewerken, kan dit misbruiken om willekeurige opdrachten uit te voeren op de server waarop Zammad wordt gehost." Het getroffen bereik wordt vermeld als tot en met 7.1.1, de gepatchte versie als 7.1.2. De erkende melder is colinthebomb1; het publicerende account is fliebe92. Het advies bevat geen proof of concept en geen exploitatiedetails.
GitHub beoordeelt het lek als Hoog, 8,6 op CVSS 4.0, met de vector AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H en geen wijziging van scope. Zo gelezen betekent dat dat het lek via het netwerk bereikbaar is met lage complexiteit, zonder aanvalsvereisten en zonder gebruikersinteractie, door een aanvaller die al hoge privileges binnen de applicatie heeft, met grote impact op de vertrouwelijkheid, integriteit en beschikbaarheid van de Zammad-instantie zelf. De beveiligingsmededeling noemt drie zwakheden: CWE-20, onjuiste invoervalidatie; CWE-94, code-injectie; en CWE-1336, de klasse template-engine die MITRE definieert als het niet neutraliseren van speciale syntaxis "die kan worden geïnterpreteerd als template-expressies of andere code-richtlijnen wanneer ze door de engine wordt verwerkt."
De oplossing veranderde één letter.
De openbare fix is commit e3b0c8df91ad2108c8305be23e8fe6f73fb9718d, ingediend met de melding "Maintenance: Improve ERB sanitizer." GitHub registreert een auteurdatum van 7 juli 2026 en een commitdatum van 3 augustus 2026, één dag voor de advisory en de release. Hij raakt twee bestanden: één regel van lib/erb_sanitizer.rb, en veertien toegevoegde regels specificatie.
Die ene regel vormt de volledige oplossing. De methode escape_tag gebruikte Ruby's sub, dat de eerste overeenkomst van een patroon in een string vervangt; nu gebruikt ze gsub, dat elke overeenkomst vervangt. In beide versies is de vervanging hetzelfde: een opener geschreven als <% wordt <%%, de verdubbelde vorm die ERB, Ruby's template-engine, als letterlijke tekst weergeeft in plaats van te evalueren. Het advies noemt niet welk AI Agent-veld de template bevat; de commit identificeert het filter dat die template inert had moeten maken.

Met sub werd alleen de eerste opener in de string onschadelijk gemaakt. Een payload die direct na de eerste een tweede opener plaatst, overleeft het filter: <%<%= 1 + 1 %> wordt <%%<%= 1 + 1 %>, waarbij ERB de leidende opener als tekst uitstuurt en daarna de binnenste tag evalueert. De regressiespecificatie die in dezelfde commit werd toegevoegd, benoemt de truc ronduit — "met een geneste opener binnengesmokkeld in een enkele tag (escape-all-openers bypass)" — en stelt dat zowel <%<%= 1 + 1 %> als een dubbel geneste <%<%<%= 1 + 1 %> als letterlijke tekst moeten worden weergegeven. Die specificatie is de duidelijkste publieke beschrijving van hoe het filter werd omzeild, omdat de advisory zelf er geen enkele geeft.
De vorm van de bug is generiek, niet een Zammad-curiositeit: een escaper die na de eerste overeenkomst stopt, wordt verslagen door iedere invoer die een tweede, geneste kopie bevat van de reeks die hij verwijdert. De commitboodschap noemt de wijziging onderhoud, wat de manier is waarop een hardening-patch van één teken gewoonlijk reist — en daarom moest het beveiligingsadvies, niet de diff, de waarschuwing bevatten.
Zeven weken van advies tot NVD
NVD publiceerde zijn record voor CVE-2026-84462 op 25 september 2026, zeven weken na de advisory, en wijzigde het laatst op 28 september. Het record is gemarkeerd als "Deferred", wat betekent dat de instantie geen eigen analyse heeft gepubliceerd, en zijn metrics-blok schrijft de score van 8.6 toe aan security-advisories@github.com als secundaire metric — de score van GitHub als CVE-nummeringsautoriteit, niet een onafhankelijke NVD-beoordeling. Hetzelfde record bevat helemaal geen CPE-configuratie, dus het koppelt het probleem niet aan een versiegebonden productidentificatie.
Beide details zijn belangrijk voor iedereen die zelfgehoste software via feeds volgt而不是 releasenotes. De fix was op 4 augustus openbaar en direct toepasbaar; de machineleesbare registratie kwam op 25 september; en zelfs toen kwam die zonder de productidentificatie waarop op CPE gebaseerde scanners matchen. Zeven weken lang was de gezaghebbende beschrijving van de kwetsbaarheid het advies van de leverancier en de releasenote van de leverancier.

Wat is vastgesteld, en wat niet
Vastgesteld: de advisory, de gepatchte versie, de CVSS-score en de codewwijziging komen allemaal van Zammad en van GitHub's advisory database, en ze stemmen onderling overeen. Het NVD-record geeft de beschrijving van de nummeringsautoriteit weer zonder er een eigen analyse aan toe te voegen. Het archief kent de entry op die basis confidence A toe, waarbij het incident onbetwist is.
Niet vastgesteld, of niet geregistreerd: er is geen proof of concept in het advies en geen melding van exploitatie in het wild. De EPSS van FIRST kent CVE-2026-84462 een exploitatiekans van 0,28 procent toe in de komende dertig dagen, het 20e percentiel, in de score die op 29 oktober 2026 is gepubliceerd. Het archief registreert geen werkelijke schade en classificeert de vermelding als gemiddelde ernst — onder de eigen High-band van het advies. Dat zijn afzonderlijke instrumenten die verschillende vragen beantwoorden: wat de kwetsbaarheid zou toelaten tegenover wat er bekend is gebeurd, en dit stuk meldt beide in plaats van ze met elkaar te verzoenen.
Onafhankelijke bevestiging is schaars. Een zoekopdracht naar berichtgeving over deze CVE levert kwetsbaarheidsdatabases op die de tekst van de nummeringsautoriteit herpubliceren, plus Zammads eigen release-opmerking; geen enkel nieuwsmedium lijkt het lek onafhankelijk te hebben gemeld. Dat is een vaststelling over de registratie, geen kritiek daarop: een remote code execution in een helpdesk die een beheerdersaccount vereist, is niet het soort gebeurtenis dat de pers genereert, en het ontbreken van een onafhankelijke bron is zelf deel van wat de registratie vastlegt.
Wie zou het kunnen triggeren, en wat is er veranderd?
Zammads releaseopmerking voor 7.1.2, gedateerd 4 augustus 2026, somt de achttien kwetsbaarheden op die in die versie zijn gepatcht en zet de AI Agent template bypass op de eerste plaats. Voor gehoste klanten staat er: "Er is geen actie nodig. Uw instanties zijn al door ons team gepatcht en beveiligd." Voor zelfgehoste installaties is het directer: "Wij raden u sterk aan om onmiddellijk naar de nieuwste versie van Zammad te upgraden om te zorgen dat uw systeem beschermd is." Het advies biedt geen tijdelijke oplossing, en het record bevat geen andere mitigerende maatregel dan de upgrade.

De privilege-eis verdient een nauwkeuriger blik dan de vector aangeeft. PR:H betekent dat de aanvaller aanzienlijke toegang nodig heeft voordat het lek nuttig is, en die toegang is hier de machtiging admin.ai_agent waarvan de documentatie van Zammad zegt dat die überhaupt nodig is om met AI Agents te werken. In een helpdesk is dat vaak een teamleider van het serviceteam die categoriseerders, taggers en tekstextractors instelt — niet noodzakelijkerwijs de persoon die de server beheert. De eigen formulering van de advisory, "een beheerder met toestemming om AI Agents aan te maken of te bewerken," is smaller dan "iedereen" en ruimer dan "root." Als een upgrade niet onmiddellijk kan gebeuren, verkleint het beperken van wie die machtiging heeft de groep mensen die dat codepad kunnen bereiken; dat is een gevolgtrekking uit de vector en de documentatie, geen remedie die de leverancier heeft gepubliceerd.
Geen van de primaire documenten plaatst een taalmodel in het exploitpad. Het commando wordt uitgevoerd binnen Zammads Ruby-proces wanneer de configuratie van de agent wordt gerenderd; niets in de advisory, de commit of de release note beschrijft dat het model de payload produceert. De functie AI Agent levert het door beheerders beschrijfbare, door templates verwerkte veld, en de AI is het aanvalsoppervlak, niet het mechanisme. Dat is het patroon waar het dossier op wijst: de agentdefinitie — haar instructies, templates en filters — is uitvoerbare configuratie, bewerkt door mensen van wie het werk supportwerk is, geen beveiligingsreview.
De oplossing van Zammad is proportioneel en saai: één methodewijziging, twee regressietests en een versieverhoging die zeventien andere gaten samen met dit gat sluit. Het deel dat de moeite waard is om mee te nemen, is het blootstellingsmodel. Een helpdesk die een supportleider een agent laat definiëren, laat die supportleider ook iets schrijven dat de server uitvoert, en het enige dat tussen beide staat, is een filter dat correct moet zijn voor elke geneste kopie van de syntaxis die het wegfiltert.
