Die US-Cybersicherheitsbehörde CISA beschreibt den Fehler so: “NetScaler ADC und NetScaler Gateway enthalten eine Schwachstelle durch unzureichende Beschränkung von Operationen innerhalb der Grenzen eines Speicherpuffers, die Remote-Code-Ausführung oder einen Denial-of-Service ermöglichen könnte.”
Nach der Analyse von watchTowr vertraut NetScaler der im DTLS-Handshake-Header deklarierten Fragmentgröße im Feld fragment_length (etwa 1 Byte) implizit, während derselbe Header über das Feld length zugleich behauptet, die vollständige Nachricht sei 120 Byte lang. Diese Inkonsistenz beim Parsen lässt sich ausnutzen, um einen bösartigen Record zu bauen, der klein erscheint, während die tatsächlich in den Puffer kopierten Daten deutlich umfangreicher sind — das Ergebnis ist ein Überlauf.
“Zum Beispiel kann eine 120 Byte große Handshake-Nachricht als 120 Fragmente eintreffen. Jedes Fragment hat length=120, aber jedes einzelne kann fragment_length=1 haben”, erklärte der Sicherheitsforscher Sina Kheirkhah. “Ihre Offsets wären 0, 1, 2 und so weiter bis 119. Sobald jede Position eingetroffen ist, betrachtet der Server die 120-Byte-Nachricht als vollständig. Das Zusammenfügen dieser Teile nennt man Reassemblierung.”
Jedes empfangene Paket von 1.459 Byte wird in NetScaler Buffers (NSBs) abgelegt und anschließend in einen einzigen Scratch-Puffer von lediglich 35.840 Byte zusammengeführt. Da die verwundbare Version nicht prüft, ob das nächste Paket überhaupt in diesen Scratch-Puffer passt, werden Daten über dessen Ende hinaus geschrieben.
“Die bösartigen Records teilen dem Reassemblierungs-Code mit, dass jeder Record nur ein Byte einer 120 Byte großen Handshake-Nachricht beisteuert”, so Kheirkhah. “NSPPE behält jedoch fast den gesamten Record in einem NSB. Nach 120 Records gilt die Handshake-Nachricht als vollständig, aber ihre NSB-Kette enthält rund 174 KB an Daten.”
Weiter ergab die Untersuchung von watchTowr, dass sich der Überlauf waffenfähig machen lässt: Der Kontrollfluss kann auf beliebigen Shellcode mit root-Rechten umgeleitet werden, wobei der Systemaufruf mprotect() genutzt wird, um den NX-Schutz (no-execute) auszuhebeln.
Einen Tag zuvor hatte das Unternehmen bereits einen Proof-of-Concept für CVE-2026-88771 veröffentlicht — eine Schwachstelle, die in realen Angriffen gemeinsam mit CVE-2026-88772 missbraucht wurde.
