Критические уязвимости CVE-2026-88771 и CVE-2026-88772 затрагивают устройства Citrix NetScaler ADC и NetScaler Gateway. Первая получила оценку 9,5 по шкале CVSS и связана с неправильной проверкой входных данных: удалённому атакующему не требуются учётные данные, чтобы выполнить произвольную команду. Реальные атаки быстро вышли за рамки пробного запуска whoami. На устройства загружали дополнительные программы, похищали конфигурацию, создавали привилегированные учётные записи, разворачивали обратные подключения и прятали веб-шеллы за адресами, похожими на штатные CSS-ресурсы NetScaler.

Команда Threat Hunt Operations & Research (THOR) компании LevelBlue обнаружила эксплуатацию CVE-2026-88771 в нескольких клиентских средах. В событиях аутентификации NetScaler встречались сформированные злоумышленниками имена пользователей и повторяющиеся варианты строк pitboss и NSPPE. Уязвимости были раскрыты «на прошлой неделе», но точные календарные даты не приводились. По имеющимся сообщениям, Национальный центр кибербезопасности Нидерландов (NCSC-NL) заранее уведомлял нидерландские организации об активных атаках и советовал отключить уязвимые устройства.
Вредоносные команды внедрялись прямо в данные событий входа. После проверки через whoami атакующие обращались к curl и wget, скачивая файлы со своих серверов. Наблюдались три адреса: 64.94.85[.]67:443/update_c08937.pl, 31.56.197[.]72:9090/lula и 23.27.143[.]20:9000/main.py. Назначение файла lula по доступным данным установить нельзя. Два других компонента дают довольно ясную картину: речь шла о полноценной работе после взлома, а не о сканировании доступных узлов.
Python-сценарий устанавливал обратное TCP-подключение к 45.141.21[.]130:443, фактически отдавая атакующему командную оболочку через порт 443. Затем он искал процессы, связанные с /var/python/bin/customsnmpd, и принудительно завершал их командой kill -9. Причина интереса к customsnmpd не установлена: это могло мешать работе полезной нагрузки либо создавать риск обнаружения, но подтверждений ни одной версии нет.
Perl-сценарий update_c08937.pl менял файл /flash/nsconfig/ns.conf и создавал локальную учётную запись sec_monitor с ролью superuser. Такой доступ сохранялся независимо от первоначального способа проникновения. Далее сценарий архивировал каталог /flash/nsconfig в файл /tmp/update_result_3567cs.tgz и отправлял архив на 64.94.85[.]67:443. В конфигурации NetScaler могут находиться сетевые параметры и другие чувствительные сведения, полезные для дальнейшего продвижения. После передачи архив удалялся, а update_c08937.pl стирал собственный файл.
Тот же Perl-компонент устанавливал для /bin/sh режим разрешений 6555 и помещал PHP-веб-шелл в скрытый файл /var/netscaler/logon/LogonPoint/.local_journal. Веб-шелл позволял удалённо выполнять команды, загружать файлы на устройство и скачивать их с него. Правки в /etc/httpd.conf включали обработку PHP и сопоставляли скрытый файл с URL, внешне похожими на обычные CSS-ресурсы NetScaler. Похожую маскировку вредоносных оболочек ранее фиксировала компания GreyNoise.
Параллельная серия атак была связана с CVE-2026-88772, раскрытой вместе с CVE-2026-88771. Mandiant Consulting и Google Threat Intelligence Group (GTIG) сообщили о десятках пострадавших организаций. В этих эпизодах устанавливались PHP-веб-шелл WHIPSHOT и инструмент туннелирования на Python SLAPSHOT. LevelBlue опубликовала результаты по CVE-2026-88771 на следующий день после сообщения Mandiant Consulting и GTIG. Смешивать две цепочки не стоит: наборы вредоносных компонентов различались, хотя обе уязвимости затрагивали одну линейку устройств и применялись для удалённого проникновения.
При проверке NetScaler нужны сразу сетевые и локальные признаки. Среди сетевых индикаторов находятся 64.94.85[.]67:443, 31.56.197[.]72:9090, 23.27.143[.]20:9000 и 45.141.21[.]130:443. На самом устройстве следует искать учётную запись sec_monitor, назначение ей роли superuser, архив /tmp/update_result_3567cs.tgz и файл /var/netscaler/logon/LogonPoint/.local_journal. Даже отсутствие архива или сценария ничего не доказывает: update_c08937.pl удалял оба объекта после отправки данных.
Отдельной проверки требуют изменения /flash/nsconfig/ns.conf и /etc/httpd.conf, права 6555 у /bin/sh, а также неожиданное завершение /var/python/bin/customsnmpd. В журналах аутентификации стоит искать pitboss, NSPPE, вызовы whoami, curl, wget и обращения к известным путям полезной нагрузки. Маскировка под CSS означает, что обычный на вид запрос к статическому ресурсу может оказаться обращением к командной оболочке; поэтому одной фильтрации по расширению URL недостаточно.
Личность операторов CVE-2026-88771 пока не установлена. Наблюдавшаяся последовательность действий охватывала получение и запуск Python- и Perl-компонентов, сбор конфигурации, подготовку архива к выводу, обратную оболочку, остановку процесса customsnmpd, создание суперпользователя, установку PHP-веб-шелла и удаление следов. При обнаружении любого из этих признаков простое обновление устройства не устраняет уже созданную учётную запись, изменённую конфигурацию HTTP-сервера или скрытый веб-шелл: скомпрометированный NetScaler приходится рассматривать как узел, на котором атакующий мог сохранить постоянный привилегированный доступ.

Изображение носит иллюстративный характер
Команда Threat Hunt Operations & Research (THOR) компании LevelBlue обнаружила эксплуатацию CVE-2026-88771 в нескольких клиентских средах. В событиях аутентификации NetScaler встречались сформированные злоумышленниками имена пользователей и повторяющиеся варианты строк pitboss и NSPPE. Уязвимости были раскрыты «на прошлой неделе», но точные календарные даты не приводились. По имеющимся сообщениям, Национальный центр кибербезопасности Нидерландов (NCSC-NL) заранее уведомлял нидерландские организации об активных атаках и советовал отключить уязвимые устройства.
Вредоносные команды внедрялись прямо в данные событий входа. После проверки через whoami атакующие обращались к curl и wget, скачивая файлы со своих серверов. Наблюдались три адреса: 64.94.85[.]67:443/update_c08937.pl, 31.56.197[.]72:9090/lula и 23.27.143[.]20:9000/main.py. Назначение файла lula по доступным данным установить нельзя. Два других компонента дают довольно ясную картину: речь шла о полноценной работе после взлома, а не о сканировании доступных узлов.
Python-сценарий устанавливал обратное TCP-подключение к 45.141.21[.]130:443, фактически отдавая атакующему командную оболочку через порт 443. Затем он искал процессы, связанные с /var/python/bin/customsnmpd, и принудительно завершал их командой kill -9. Причина интереса к customsnmpd не установлена: это могло мешать работе полезной нагрузки либо создавать риск обнаружения, но подтверждений ни одной версии нет.
Perl-сценарий update_c08937.pl менял файл /flash/nsconfig/ns.conf и создавал локальную учётную запись sec_monitor с ролью superuser. Такой доступ сохранялся независимо от первоначального способа проникновения. Далее сценарий архивировал каталог /flash/nsconfig в файл /tmp/update_result_3567cs.tgz и отправлял архив на 64.94.85[.]67:443. В конфигурации NetScaler могут находиться сетевые параметры и другие чувствительные сведения, полезные для дальнейшего продвижения. После передачи архив удалялся, а update_c08937.pl стирал собственный файл.
Тот же Perl-компонент устанавливал для /bin/sh режим разрешений 6555 и помещал PHP-веб-шелл в скрытый файл /var/netscaler/logon/LogonPoint/.local_journal. Веб-шелл позволял удалённо выполнять команды, загружать файлы на устройство и скачивать их с него. Правки в /etc/httpd.conf включали обработку PHP и сопоставляли скрытый файл с URL, внешне похожими на обычные CSS-ресурсы NetScaler. Похожую маскировку вредоносных оболочек ранее фиксировала компания GreyNoise.
Параллельная серия атак была связана с CVE-2026-88772, раскрытой вместе с CVE-2026-88771. Mandiant Consulting и Google Threat Intelligence Group (GTIG) сообщили о десятках пострадавших организаций. В этих эпизодах устанавливались PHP-веб-шелл WHIPSHOT и инструмент туннелирования на Python SLAPSHOT. LevelBlue опубликовала результаты по CVE-2026-88771 на следующий день после сообщения Mandiant Consulting и GTIG. Смешивать две цепочки не стоит: наборы вредоносных компонентов различались, хотя обе уязвимости затрагивали одну линейку устройств и применялись для удалённого проникновения.
При проверке NetScaler нужны сразу сетевые и локальные признаки. Среди сетевых индикаторов находятся 64.94.85[.]67:443, 31.56.197[.]72:9090, 23.27.143[.]20:9000 и 45.141.21[.]130:443. На самом устройстве следует искать учётную запись sec_monitor, назначение ей роли superuser, архив /tmp/update_result_3567cs.tgz и файл /var/netscaler/logon/LogonPoint/.local_journal. Даже отсутствие архива или сценария ничего не доказывает: update_c08937.pl удалял оба объекта после отправки данных.
Отдельной проверки требуют изменения /flash/nsconfig/ns.conf и /etc/httpd.conf, права 6555 у /bin/sh, а также неожиданное завершение /var/python/bin/customsnmpd. В журналах аутентификации стоит искать pitboss, NSPPE, вызовы whoami, curl, wget и обращения к известным путям полезной нагрузки. Маскировка под CSS означает, что обычный на вид запрос к статическому ресурсу может оказаться обращением к командной оболочке; поэтому одной фильтрации по расширению URL недостаточно.
Личность операторов CVE-2026-88771 пока не установлена. Наблюдавшаяся последовательность действий охватывала получение и запуск Python- и Perl-компонентов, сбор конфигурации, подготовку архива к выводу, обратную оболочку, остановку процесса customsnmpd, создание суперпользователя, установку PHP-веб-шелла и удаление следов. При обнаружении любого из этих признаков простое обновление устройства не устраняет уже созданную учётную запись, изменённую конфигурацию HTTP-сервера или скрытый веб-шелл: скомпрометированный NetScaler приходится рассматривать как узел, на котором атакующий мог сохранить постоянный привилегированный доступ.