Citrix NetScaler CVE-2026-88772 Exploitdetails tonen pre-auth-pad naar uitvoering van shellcode

Cybersecurity-onderzoekers hebben technische details bekendgemaakt van een onlangs gepatcht kritiek beveiligingslek in Citrix NetScaler ADC en Gateway, dat in het wild actief wordt uitgebuit.

De kwetsbaarheid, bijgehouden als CVE-2026-88772 (CVSS-score: 9,5), is beschreven als een geheugenoverloopbug in de protocolafhandeling van Datagram Transport Layer Security (DTLS) die zijn oorsprong vindt in de NetScaler Packet Processing Engine (NSPPE).

“Citrix NetScaler ADC en NetScaler Gateway bevatten een ongepaste beperking van bewerkingen binnen de grenzen van een geheugenbufferkwetsbaarheid die het uitvoeren van externe code of denial-of-service mogelijk zou kunnen maken”, aldus de Amerikaanse Cybersecurity and Infrastructure Security Agency (CISA).

Het probleem is volgens watchTowr dat NetScaler impliciet de aangegeven fragmentgrootte in het fragment_length-veld van de DTLS-handshakeheader vertrouwt (dwz 1 byte), terwijl de header tegelijkertijd claimt dat het volledige bericht, zoals aangegeven door het lengteveld, 120 bytes lang is.

Deze inconsistentie bij het parseren kan door een aanvaller worden uitgebuit om een ​​kwaadaardig record te maken waardoor het record er klein uitziet, terwijl de daadwerkelijke gegevens die naar de buffer worden gekopieerd veel groter zijn, wat resulteert in een overflow.

“Een handshake-bericht van 120 bytes kan bijvoorbeeld als 120 fragmenten aankomen. Elk fragment heeft lengte = 120, maar elk fragment kan fragment_lengte = 1 hebben”, legt beveiligingsonderzoeker Sina Kheirkhah uit. “Hun offsets zouden 0, 1, 2, enzovoort zijn, tot en met 119. Zodra elke positie is gearriveerd, beschouwt de server het bericht van 120 bytes als voltooid. Het samenvoegen van die stukken wordt reassemblage genoemd.”

Elk ontvangen pakket van 1.459 bytes wordt opgeslagen in NetScaler Buffers (NSB’s), die vervolgens worden samengevoegd tot een enkele scratch-buffer van slechts 35.840 bytes. Aangezien de kwetsbare versie niet controleert of het volgende pakket in de scratch-buffer past, worden gegevens voorbij het einde van de buffer geschreven, wat tot een bufferoverflow leidt.

“De kwaadaardige records vertellen de hermontagecode dat elke record slechts één byte van een handshake-bericht van 120 bytes levert”, zei Kheirkhah. “NSPPE bewaart echter bijna het hele record in een NSB. Na 120 records wordt het handshake-bericht als voltooid beschouwd, maar de NSB-keten bevat ongeveer 174 KB aan gegevens.”

Uit de analyse van watchTowr bleek verder dat deze overflow kan worden bewapend om de controlestroom om te leiden naar willekeurige shellcode met privileges op rootniveau door de systeemaanroep mprotect() te gebruiken om NX (no-execute) beveiligingen te omzeilen.

De onthulling komt een dag nadat het preventieve blootstellingsbeheerbedrijf een proof-of-concept (PoC) heeft vrijgegeven voor CVE-2026-88771, dat samen met CVE-2026-88772 is misbruikt bij echte aanvallen.

Thijs Van der Does