Обнаружение

Исследователи Dream выявили полноценную операцию атаки, которая включала пользовательскую реализацию цепочки эксплойтов PHP2Shell (CVE-2026-109618/CVE-2026-109619) в паре с привилегией эскалации ядра Fragnesia (CVE-2026-46300), списки целей, логи эксплуатации и примерно 40 пользовательских скриптов постэксплуатации.

Обнаруженные артефакты свидетельствовали о кампании, которая скомпрометировала 25 брандмауэров и серверов управления PAN-OS по всему миру — в Соединённых Штатах, Японии, Тайване и Южной Корее. После получения полного доступа злоумышленник сосредоточился на трёх конкретных серверах в среде, связанной с американским государственным учреждением.

Восстановленные артефакты показали операцию, которая началась с разработки эксплойта в лабораторной среде и завершилась получением постоянного доступа к внутреннему домену Active Directory американской государственной организации.

Использование искусственного интеллекта в атаке

Также были обнаружены следы использования ИИ-инструментов в инфраструктуре атаки:

  • был установлен Claude Code;
  • была настроена ИИ-платформа наступательной безопасности под названием aiscan с китайскими моделями DeepSeek и Kimi;
  • присутствовали ключи API для китайской платформы разведки FOFA.

Хотя прямых доказательств того, что инструменты искусственного интеллекта использовались специально для написания эксплойта или скриптов постэксплуатации, нет, структура кода, стиль комментариев и согласованность примерно 40 скриптов предполагают разработку с помощью ИИ. При этом данная операция не выглядит как полностью автономная атака государственного уровня.

Эксплойт: две уязвимости, объединённые в один запрос

Злоумышленник разработал два отдельных эксплойта и объединил их для получения доступа root на любом брандмауэре PAN-OS, выставленном в интернет и работающем на уязвимой версии, всё это — в одном HTTPS-запросе без учётных данных.

PHP2Shell (CVE-2026-109618 / CVE-2026-109619) — удалённое выполнение кода

Найденная реализация — пользовательская неопубликованная версия, а не копия какого-либо известного публичного эксплойта PHP2Shell. Она следует той же базовой концепции, но, похоже, была разработана независимо и специально адаптирована для PAN-OS.

Уязвимость нацелена на механизм session.upload_progress PHP на веб-сервере управления PAN-OS (appweb). PAN-OS использует PHP 8.0.30 с высоким лимитом памяти, что позволяет реализовать этапы повреждения памяти атаки.

Атака работает в четыре согласованных этапа:

  • A1 — исчерпание памяти (~383 МБ): Злоумышленник наводняет сервер специально сформированными multipart POST-запросами, каждый содержит огромные имена файлов и данные прогресса сеанса. Это доводит распределитель памяти PHP до предела, вынуждая систему перейти в предсказуемую разметку памяти.
  • B1 — утечка информации: Второй запрос подделывает длину устаревшего ID сеанса из A1, вынуждая выполнить чтение за границами массива. Заголовок ответа Set-Cookie сервера переносит утёкший адрес указателя — предоставляя злоумышленнику базовый адрес libphp.so в работающем процессе.
  • A2 — подготовка устаревшей ссылки (~500 МБ): Ещё один раунд давления на память инициализирует сеанс, оставляя http_session_vars как живую zend_reference, затем срабатывает второе OOM, оставляя mod_data=NULL — создавая устаревшую ссылку, которую злоумышленник может подделать в B2.
  • B2 — выполнение кода: Финальный запрос подделывает запись PHP HashTable в области освобождённой памяти. Поддельный pDestructor обратный вызов указывает на zif_system (функцию PHP system(), а его данные указывают на строку команды оболочки. Когда обработчик очистки PHP проходит по HashTable, он вызывает подделанный деструктор — выполняя произвольные команды от пользователя nobody.

Fragnesia (CVE-2026-46300) — привилегия эскалации ядра

Получения выполнения кода от пользователя nobody недостаточно, так как SELinux ограничивает httpd_t от модификации системных файлов. Для завершения получения доступа root злоумышленник объединил второй эксплойт: уязвимость ядра Linux в подсистеме XFRM ESP-in-TCP.

Fragnesia использует записи в кеш страниц для перезаписи /etc/pam.d/su — замены его правил аутентификации на pam_permit.so (принять всё). Так как файл PAM занимает всего 774 байта, эксплойт использует вариант сплайсинга по одному байту для записи его точно. После перезаписи su root выполняется без пароля.

Оба эксплойта выполняются в одном HTTP-запросе B2. Полная цепочка — от неавторизованного HTTPS-подключения к постоянной root-оболочке веб-сервера — завершается менее чем за 15 минут.

Лаборатория: профилирование версий в масштабе

Эксплойт — это не просто одноразовый пейлоад. Он требует точных смещений памяти, которые различаются между версиями PAN-OS — адреса zval_ptr_dtor, адреса zif_system, размеры структур HashTable и параметры геометрии памяти, которые контролируют разметку кучи на каждом этапе.

Среди восстановленных артефактов было найдено 11 файлов профилей версий JSON — по одному для каждой версии PAN-OS, которая была протестирована:

Ветка PAN-OSPHPПрофилиПримечания
11.17.4.332 предварительныхPHP 7.4 — RCE от nobody подтверждена в лабе, но полная цепочка не калибрована (базовая версия плюс один вариант с хотфиксом)
12.1, 12.28.0.301 калиброванный, 8 предварительныхОдин базовый профиль полностью протестирован в лабе; остальные наследуют его геометрию или обмениваются смещениями с соседними версиями

Каждый профиль содержит точные смещения, извлечённые из двоичного файла libphp.so этой версии — с хешами SHA256 каждой библиотеки, идентификаторами сборок ELF и точными параметрами геометрии памяти (размеры фрагментов, подсчёт заполнения, подсчёт опорожнения, смещения распыления), настроенные путём лабораторного тестирования.

Разница между "калиброванным" и "предварительным" профилями примечательна — калиброванный означает, что злоумышленник протестировал эксплойт против работающей ВМ этой версии и подтвердил, что геометрия памяти работает. Предварительный означает, что он вычислил смещения из двоичного файла, но не проверил на живом экземпляре.

Воронка кампании: от 19 000 обнаруженных к 25 скомпрометированным

Временная шкала операции в десять этапов, охватывающих подготовку, эксплуатацию, разворот и постэксплуатацию, с 8 октября по 24 октября.
Рисунок 1: Временная шкала операции кампании, от подготовки 8 октября до эксплуатации, разворота во внутреннюю сеть и постэксплуатации 24 октября.

Имея готовый эксплойт и профили для 9 уязвимых версий, злоумышленник запустил кампанию нацеливания, которая следовала чёткой воронке:

Этап 1: глобальное обнаружение (19 000 целей)

Используя FOFA — китайский сервис поиска интернет-активов, похожий на Shodan — злоумышленник выявил примерно 19 000 брандмауэров PAN-OS, выставленных в интернет во всём мире. Это были устройства с интерфейсами управления, открытыми в интернет, обнаруживаемые через отпечатки сертификатов и сигнатуры HTTP-ответов.

Этап 2: отпечатление версий (5 000 активных)

Пользовательский сканер версий работал с 200 одновременными потоками против всех 19 000 целей, выявляя, какие устройства действительно находились в сети и какую версию PAN-OS они запускали. Примерно 5 000 ответили информацией о версии.

Этап 3: географическая и версионная фильтрация (240 целей)

Из 5 000 активных устройств злоумышленник отфильтровал серверы, расположенные только в Соединённых Штатах, Японии, Тайване и Южной Корее. Затем дополнительно отфильтровал версии, соответствующие профилям эксплойтов (ветки PAN-OS 12.1 и 12.2, работающие на PHP 8.0.30). Это дало окончательный список целей из 240 брандмауэров.

Так как США, Япония, Тайвань и Южная Корея являются четырьмя основными стратегическими противниками и целями разведки для китайских государственно-связанных кибероперативов в тихоокеанском театре, это указывает на возможные усилия противника государственного уровня.

Этап 4: автоматическая эксплуатация (24 скомпрометированы)

240 целей были поданы в автоматический пакетный обработчик, который эксплуатировал их по пять одновременно, с тайм-аутом 1800 секунд (30 минут) на цель. Для каждого успеха пакетный обработчик:

  • выполнял полную цепочку PHP2Shell + Fragnesia;
  • разместил 103-байтную PHP root-оболочку в общедоступном каталоге брандмауэра (/unauth/php/change_password.php);
  • проверил root, выполнив id через оболочку;
  • записал имя хоста и IP цели в успешный CSV;
  • перешёл к следующей цели.

На этом этапе 24 брандмауэра были успешно скомпрометированы.

Этап 5: сортировка (2 брандмауэра приоритизированы)

Для 22 из 24 скомпрометированных брандмауэров злоумышленник ничего не делал помимо размещения оболочки. Никакой постоянной защиты, никаких туннелей, никаких инструментов постэксплуатации. Серверы были фактически захвачены и припаркованы, позволяя злоумышленнику вернуться через оболочку в любое время.

Два сервера, похоже связанные с одной целью, прошли дальше этого этапа. Оба, похоже, принадлежали организации, связанной с американским государственным агентством.

Этап 6: разворот (переход от брандмауэра к домену)

Среди 24 скомпрометированных брандмауэров два принадлежали организации, связанной с американским государственным учреждением. Извлеченная текущая конфигурация первого брандмауэра выявила среду с характеристиками, предполагающими государственную принадлежность: аутентификация CAC (Common Access Card), специфический префикс имен и стандартизированное государственное именование активов. Файл конфигурации содержал полную топологию внутренней сети организации: контроллеры доменов, центральный сервер управления брандмауэром, сервер Keycloak SSO, экземпляр GitLab, шлюзы GlobalProtect VPN и домен Active Directory.

Первый брандмауэр был скомпрометирован 23 октября в 18:14 UTC во время автоматического пакета. Но вскоре он упал — вероятно, из-за ~900 МБ трафика эксплуатации — и больше не вернулся в сеть. Злоумышленник мониторил его с 240 автоматическими пробами в течение двух часов, ожидая его восстановления. Он не восстановился. Второй брандмауэр, данные сертификата которого окончательно связывали его с целевой организацией, истёк по времени во время исходного пакета.

Признав ценность организации по конфигурации первого брандмауэра, злоумышленник создал отдельную, специальную кампанию и успешно эксплуатировал его 24 октября в 10:09 UTC.

В течение нескольких часов злоумышленник:

Построил постоянный туннель во внутреннюю сеть.

8-портный обратный SSH-туннель соединил скомпрометированный брандмауэр с инфраструктурой оператора, пересылая доступ к:

  • контроллерам доменов (LDAP, LDAPS, RDP);
  • внутреннему серверу управления брандмауэром;
  • инфраструктуре GlobalProtect VPN;
  • SOCKS5 прокси для произвольного доступа во внутреннюю сеть.

Туннель был обёрнут в сервис systemd и hook rc.local, оба запускающие скрипты из /usr/local/lib/.panops/ — он пережил перезагрузку и автоматически переподключается.

Эксплуатировал сервер управления через туннель. В 11:35 UTC, менее чем через 90 минут после компрометирования второго брандмауэра, злоумышленник использовал вновь полученный доступ к серверу и ту же цепочку PHP2Shell + Fragnesia против третьего государственного сервера — внутреннего сервера управления брандмауэром, который был доступен только через туннель. Этот сервер централизованно управляет всеми брандмауэрами организации. Компрометирование его дало злоумышленнику доступ к конфигурации, учётным данным и сетевым параметрам каждого управляемого брандмауэра. Это привело к общему количеству эксплуатированных серверов 25.

Запустил кампанию атак AD с сервера управления. Так как сервер управления уже имел подключение LDAP к Active Directory (ему нужно для аутентификации пользователей VPN), злоумышленник использовал его как стартовую платформу для атак домена:

  • расшифровал пароль учётной записи сервиса LDAP — конфигурация устройства хранит его в зашифрованном виде, но с доступом root злоумышленник имеет главный ключ. Он извлёк его открытым текстом и жёстко закодировал в каждом последующем скрипте;
  • перечислил каждого пользователя и группу в домене через запросы LDAP;
  • распылил пароли против каждой учётной записи пользователя, используя пароли на тему организации. Домен имел lockoutThreshold=0 — означая отсутствие блокировки учётной записи, позволяя неограниченные попытки распыления;
  • попытался создать черновые учётные записи AD — как учётную запись пользователя (попробовал в каждом OU), так и учётную запись машины (используя параметр по умолчанию MachineAccountQuota);
  • анализировал цепи ACL AD для путей эскалации привилегий;
  • попытался извлечь ключи подписи SAML из конфигурации Keycloak IdP;
  • зондировал Keycloak SSO для обхода аутентификации.

Результаты атаки — нашла ли спрей пароля допустимые учётные данные, были ли созданы черновые учётные записи, были ли извлечены ключи SAML — остались на локальной файловой системе сервера управления и не входили в восстановленные артефакты. Это означает, что мы не можем определить полную степень компрометирования.

Путь атаки от злоумышленника через интернет к брандмауэру на периметре, через туннель к серверу управления брандмауэром и в контроллеры домена.
Рисунок 2: Путь атаки. PHP2Shell и Fragnesia получают доступ root на периметровый брандмауэр, обратный SSH-туннель достигает внутреннего сервера управления, и расшифрованная учётная запись сервиса LDAP открывает Active Directory.

Сервер управления → Active Directory

СтатусДеятельность
✓Пароль LDAP расшифрован из конфигурации
✓Полное перечисление пользователей и групп
?Распыление пароля (все пользователи, без блокировки)
?Создание чёрного пользователя + учётной записи машины
?Извлечение ключей подписи SAML

Что есть у злоумышленника сейчас

Из восстановленных артефактов мы можем подтвердить, что злоумышленник обладает:

  • постоянным удалённым доступом во внутреннюю сеть организации через туннель обратного SSH, выживающий при загрузке, и прокси SOCKS — вероятно, всё ещё активный;
  • root-оболочками на двух брандмауэрах и сервере управления брандмауэром — вероятно, всё ещё активные;
  • полным списком пользователей и групп Active Directory — полный чертёж организации;
  • расшифрованными учётными данными сервиса LDAP — обеспечивающими прямые запросы AD в любое время;
  • закрытыми ключами, собранными из файловой системы брандмауэра PAN-OS — ключи HA репликации, ключи SSL/TLS сертификатов и ключи аутентификации устройств;
  • полной топологией сети — каждым IP, имённем хоста, подсетью, ролью сервера и шлюзом VPN;
  • конфигурацией SAML IdP со слабыми параметрами безопасности (validate-idp-certificate: no);
  • 22 дополнительными припаркованными брандмауэрами по всем США, Японии, Тайване и Южной Корее — готовыми к эксплуатации в любой момент.

Что мы не можем определить — успешны ли были распыление пароля, создание чёрных учётных записей или извлечение ключей SAML. Если какая-либо из этих атак сработала, компрометирование простирается далеко за периметровые брандмауэры во внутреннюю инфраструктуру идентификации организации.

Индикаторы атрибуции

Не атрибутируем эту деятельность названному действующему лицу угрозы. Palo Alto Networks Unit 42 отслеживает эту деятельность как CL-UNK-1280 и атрибутирует её китайскоязычному злоумышленнику в часовом поясе UTC+8. Однако несколько индикаторов указывают на операцию с китайским происхождением:

ИндикаторДеталь
Выбор целейИсключительно США, Япония, Тайвань, Южная Корея. Это основные стратегические цели разведки для китайских государственно-связанных операций в Тихом океане.
FOFAПлатформа интернет-разведки, использованная для обнаружения целей, является китайским сервисом.
ioxКитайская утилита туннелирования, разработанная китайцами, наблюдалась среди восстановленных инструментов.
DeepSeek и KimiLLM, настроенные в платформе наступательной безопасности aiscan, являются китайскими языковыми моделями.
Временные метки UTC+8Инфраструктура работала по китайскому стандартному времени, подтверждено сравнением временных меток логов с заголовками HTTP Date: ответов от целей.
Подсказки на китайском языкеЛоги сеансов aiscan содержат сообщения пользователей на китайском языке.

Заключение

Эта операция демонстрирует уровень подготовки и возможностей, который отличает её от случайной эксплуатации. Злоумышленник вложил значительные усилия в исследование уязвимостей — получение микропрограммы PAN-OS, её расшифровка, извлечение библиотек PHP, построение точных профилей памяти для 9 различных версий программного обеспечения и калибровку геометрии эксплойта путём лабораторного тестирования. Сама эксплуатация была автоматизирована и эффективна: 240 целей, попробованных в одном пакете, с автоматически выбранными версионными профилями.

Была чётко выраженная ориентация на государственные цели.

Злоумышленник просканировал 19 000 брандмауэров, скомпрометировал 24 и немедленно идентифицировал те два, которые имели значение. В течение часов после компрометирования брандмауэра, связанного с американским государственным учреждением, они проложили туннель во внутреннюю сеть, скомпрометировали третий сервер, используя ту же цепочку PHP2Shell + Fragnesia, и запустили полноценную кампанию атак Active Directory — всё это через цепочку, которая началась с одного неавторизованного HTTPS-запроса к интерфейсу управления, который никогда не должен был быть открыт в интернет.

22 других скомпрометированных брандмауэра остаются припаркованы с активными оболочками. Постоянный туннель во внутреннюю американскую государственную организацию, вероятно, всё ещё запущен. И у злоумышленника всё ещё есть 19 000 отпечатанных целей, к которым они могут вернуться по мере разработки профилей для дополнительных версий PAN-OS. Телеметрия устройств Palo Alto Networks показывает продолжающиеся попытки эксплуатации открытых устройств PAN-OS.

За полным руководством и индикаторами компрометирования смотрите веб-сайт Palo Alto Networks.

Закрытие разрыва между обнаружением и защитой

Для правительств и критической инфраструктуры обнаружение уязвимости — это только начало. Защитники должны выявить открытые системы, установить, что может эксплуатировать злоумышленник, и действовать до того, как пристанище станет более широким компрометированием.

Dream решает эту проблему с помощью двух дополняющих платформ киберзащиты:

  • Sphere масштабирует национальную кибер-защиту. Она отображает экспозицию, приоритизирует риски и обнаруживает и реагирует на атаки по сетям правительства, адаптированные для каждой нации угрозы и инфраструктуры.
  • Hero масштабирует кибер-исследование. Его автономные исследовательские агенты помогают экспертам исследовать угрозы, обнаруживать и проверять уязвимости — включая в программном обеспечении без исходного кода — и разрабатывать руководства по исправлению и патчи. Это инструмент, который был использован исследователями Dream для проведения расследования, изложенного в этом посте.

Вместе они соединяют глубокое расследование с защитой по национальной поверхности атаки.