Компания Check Point сообщила, что уязвимые шлюзы Check Point Security Gateway атакуют через уязвимости PHP2Shell. Злоумышленники проникают в сеть через шлюз и запускают на хостах VMware ESXi вредоносную программу, которая уничтожает данные.

Атаки начались 30 октября и сначала были направлены против израильских организаций. Вторая волна 2 ноября затронула компании в разных странах и отраслях, но уничтожения данных в ней исследователи не обнаружили. Все этапы – от первоначального доступа и продвижения по сети до запуска веб-шеллов на PHP – выполнял, по всей видимости, один и тот же злоумышленник. На этапе уничтожения данных в части случаев появлялись политические послания, поэтому исследователи не исключают операцию под чужим флагом.
PHP2Shell – общее название двух критических уязвимостей PHP, CVE-2026-109618 и CVE-2026-109619, которые позволяют без аутентификации удаленно выполнить код в уязвимых системах. Разработчики PHP устранили их экстренными обновлениями 21 октября, однако, по данным Amazon Threat Intelligence, попытки эксплуатации начались за четыре дня до этого. 26 октября CISA добавило обе уязвимости в каталог активно эксплуатируемых уязвимостей (KEV), а позже предупредило, что злоумышленники используют PHP2Shell вместе с уязвимостью ядра Linux Fragnesia для получения прав root.
Как проходила атака
Злоумышленник проникал в шлюз через портал Mobile Access с помощью PHP2Shell. Следы этого исследователи нашли в каталоге /opt/CPcvpn-R81.20/tmp/: там появлялись файлы сессий PHP с меткой upload_progress_pwn, а процессы Apache/PHP портала в это же время сотни раз аварийно завершались.
Затем злоумышленник повышал привилегии со служебной учетной записи портала до root через уязвимость нулевого дня CVE-2026-123039 (оценка CVSS – 7,8). По данным бюллетеня Check Point, служба Gaia OS dynamic_server, которая обслуживает DynamicCLI, работает с правами root и принимает команды через локальный сокет /tmp/dynamic_socket. Сокет доступен на запись всем пользователям, а подключающиеся процессы не проверяются, поэтому любой локальный пользователь может выполнить команду от имени root. Check Point зафиксировала эксплуатацию этой уязвимости у нескольких десятков клиентов.
Получив права root, злоумышленник размещал веб-шеллы на PHP в каталоге шаблонов страниц входа портала, в файлах вида zz*.tpl. Расширенная версия веб-шелла открывается ключом zz2026 и позволяет выполнять команды операционной системы и код PHP, а также загружать файлы. Затем на шлюз устанавливался постоянный бэкдор TSGA, который запускается как CPconfigdaemon и переименовывает себя в slot_CPconfigdaemon. Он дает злоумышленнику зашифрованный удаленный доступ, крадет конфигурацию шлюза, закрепляется в резервных копиях и снимках системы, внедряется в процессы и подчищает журналы межсетевого экрана.
Вместе с TSGA устанавливался сетевой компонент TSProxy – библиотека /lib/libcpfwcommon.so. Она внедряется в процессы шлюза и перехватывает сетевые функции: специально помеченные подключения злоумышленника обрабатываются скрытно, а обычный трафик проходит как прежде.
В атаках на израильские организации злоумышленник искал внутренние узлы с помощью сканера gogo – инструмента с открытым исходным кодом – и переходил со шлюза на хосты VMware ESXi по SSH под служебной учетной записью vpxuser. На последнем этапе он запускал вайпер destroy_v6, который рекурсивно удаляет файлы в указанном каталоге. Чтобы данные было труднее восстановить, вайпер по умолчанию сначала перезаписывает файлы нулями, а в быстром режиме пропускает этот шаг.
В каждом обработанном каталоге вайпер оставлял записку DREAM_ANNEXATION.txt от имени компании Dream Security Ltd. В ней есть политические послания на английском языке и иврите, а переговоры о выкупе прямо отвергаются – то есть единственной целью был ущерб.

Кто стоит за атаками
Check Point связывает TSGA и TSProxy с PhiliKit – набором вредоносных программ, который ранее применялся в атаках на устройства Ivanti. Компоненты используют общий код, конфигурацию и криптографические данные, включая одинаковые учетные данные операторов и TLS-сертификат. ESET связывает PhiliKit с китайской группировкой UNC5221. На эту же версию указывают серверы злоумышленника на VPS LightNode и время сканирования – с 00:00 до 09:00 по UTC, то есть в рабочие часы в Китае.
Однако уничтожение данных, нацеленность на Израиль и записка на иврите об израильско-палестинском конфликте не соответствуют известным целям группировок, связанных с Китаем. Исследователи допускают несколько сценариев: злоумышленник провел всю кампанию сам, только продал первоначальный доступ или участвовал в операции под чужим флагом. Уничтожение данных также могло служить дымовой завесой.
Незадолго до атак Dream Security опубликовала исследование об эксплуатации PHP2Shell на устройствах Palo Alto Networks группировками, связанными с Китаем. Такое совпадение по времени может указывать на месть, но имеющиеся данные не позволяют определить мотив.
Во второй волне уничтожения данных не было, но что злоумышленник сделал после проникновения, остается неясным.
Как защититься
Уязвимость CVE-2026-123039 затрагивает межсетевые экраны Check Point Force, серверы управления и журналов, Multi-Domain Security Management и Maestro Orchestrator версий R81, R81.10, R81.20, R82, R82.10 и R82.20. Spark Firewalls и Smart-1 Cloud не затронуты. Исправление вошло в Jumbo Hotfix Accumulator:
- для R82.20 – начиная с Take 14;
- для R82.10 – начиная с Take 52;
- для R82 – начиная с Take 132;
- для R81.20 – начиная с Take 174.
Ноябрьское обновление устраняет и PHP2Shell, и уязвимость повышения привилегий в DynamicCLI. Check Point рекомендует установить его на все серверы управления и шлюзы безопасности, в первую очередь – на шлюзы с порталом Mobile Access, доступным из интернета. После установки сокет должен быть доступен только владельцу и группе: команда ls -l /tmp/dynamic_socket показывает права srw-rw---- и владельца root config, а не srwxrwxrwx.
Если исправление пока нельзя установить, Check Point предлагает временно остановить процесс dynamic_server и запретить его перезапуск:
dbset process:dynamic_server dbset :save
При этом перестанут работать команды Dynamic CLI. Вернуть процесс можно командами:
dbset process:dynamic_server t dbset :save
Шлюзы, которые были доступны из интернета до установки исправлений, стоит проверить на признаки взлома. Это файлы сессий с меткой upload_progress_pwn, неожиданные процессы и файлы CPconfigdaemon и slot_CPconfigdaemon, библиотека /lib/libcpfwcommon.so и необъяснимые пропуски в журналах межсетевого экрана. Явный признак взлома – подключения по SSH со шлюза к внутренним хостам VMware ESXi.
Служба dynamic_server записывает все полученные команды в журнал /var/log/dynamicCli.log. Легитимные запросы проходят через стандартную обертку Clish, поэтому любая команда без нее может означать выполнение кода от имени root через сокет. Найти такие команды можно так:
grep "Received =" /var/log/dynamicCli.log | grep -vF "CPprofile.sh >> /dev/null; export SP_DISTRIBUTE=0; set -o noglob;"
Check Point также опубликовала хеши вредоносных файлов и IP-адреса злоумышленника 130.94.19[.]204 и 130.94.19[.]168 – их стоит проверить в журналах.