Изследователи по киберсигурност разкриха технически подробности за наскоро коригирана критична уязвимост в сигурността на Citrix NetScaler ADC и Gateway, която е обект на активна експлоатация в реална среда.

Уязвимостта, следена като CVE-2026-88772 (оценка по CVSS: 9.5), е описана като грешка с препълване на паметта при обработката на протокола Datagram Transport Layer Security (DTLS), вкоренена в NetScaler Packet Processing Engine (NSPPE).

„Citrix NetScaler ADC и NetScaler Gateway съдържат уязвимост от тип неправилно ограничение на операциите в границите на буфера на паметта, която би могла да позволи отдалечено изпълнение на код или отказ от обслужване“, заяви Агенцията за киберсигурност и инфраструктурна сигурност на САЩ (CISA).

Според watchTowr проблемът се състои в това, че NetScaler се доверява неявно на декларирания размер на фрагмента в полето fragment_length в хедъра на DTLS ръкостискането (т.е. 1 байт), докато хедърът същевременно твърди, че цялото съобщение, обозначено от полето length, е с дължина 120 байта.

Тази несъответственост при разбор (parsing) може да бъде използвана от атакуващ за създаване на злонамерен запис, който изглежда малък, докато действителните данни, копирани в буфера, са с много по-голям размер, което води до препълване.

„Например съобщение за ръкостискане от 120 байта може да пристигне като 120 фрагмента. Всеки фрагмент има length=120, но всеки един от тях може да има fragment_length=1“, обяснява изследователят по сигурността Sina Kheirkhah. „Техните офсети биха били 0, 1, 2 и така нататък до 119. След като всяка позиция пристигне, сървърът счита съобщението от 120 байта за завършено. Обединяването на тези части се нарича повторно сглобяване (reassembly).“

Всеки получен пакет от 1 459 байта се съхранява в NetScaler Buffers (NSB), който след това се обединява в един помощен буфер (scratch buffer) от само 35 840 байта. Тъй като уязвимата версия не проверява дали следващият пакет може да се събере в помощния буфер, данните се записват извън края на буфера и това води до препълване на буфера (buffer overflow).

„Злонамерените записи съобщават на кода за повторно сглобяване, че всеки запис предоставя само един байт от 120-байтово съобщение за ръкостискане“, казва Kheirkhah. „Въпреки това NSPPE запазва почти целия запис в NSB. След 120 записа съобщението за ръкостискане се счита за завършено, но неговата NSB верига съдържа около 174 KB данни.“

Анализът на watchTowr допълнително установи, че това препълване може да бъде използвано за пренасочване на контролния поток към произволен шелкод с привилегии на ниво root, използвайки системното извикване mprotect() за преодоляване на NX (no-execute) защитите.

Разкритието идва ден след като компанията за превантивно управление на уязвимости публикува концептуално доказателство (PoC) за CVE-2026-88771, която е била използвана заедно с CVE-2026-88772 в реални атаки.