Как веб-шелл PoisonedRefresh прячется в памяти BIG-IP?

Уязвимость CVE-2025-53521 затрагивает F5 BIG-IP Access Policy Manager (APM), когда политика доступа APM назначена виртуальному серверу. 15 октября 2025 года F5 описала проблему как отказ в обслуживании и выпустила исправление. 27 марта 2026 года компания переклассифицировала её в удалённое выполнение кода без аутентификации и подтвердила эксплуатацию. Оценки составили 9,8 по CVSS 3.1 и 9,3 по CVSS 4.0. В тот же день CISA внесло уязвимость в каталог Known Exploited Vulnerabilities, установив для федеральных гражданских ведомств США срок до 30 марта. 31 марта Национальный центр кибербезопасности Ирландии подтвердил действенность октябрьского патча. Британский National Cyber Security Centre отмечает, что BIG-IP APM широко распространён, особенно в крупных организациях.
Как веб-шелл PoisonedRefresh прячется в памяти BIG-IP?
Изображение носит иллюстративный характер

Исправленные выпуски распределены так: ветка 17.5.0–17.5.1 обновляется до 17.5.1.3, 17.1.0–17.1.2 — до 17.1.3, 16.1.0–16.1.6 — до 16.1.6.1, 15.1.0–15.1.10 — до 15.1.10.8. Но установка патча закрывает путь эксплуатации, а не доказывает чистоту устройства. Неизвестно и то, удаляет ли обновление уже внедрённый код. Ирландский NCSC допускает, что атаки могли начаться ещё до публикации уязвимости и исправления в октябре 2025 года; F5 дату начала эксплуатации не раскрыла.
F5 отслеживает вредоносный код под именем c05d5254, ESET называет его PoisonedRefresh. ESET исследовала связанные образцы в апреле, а 7 сентября Sophos опубликовала разбор одного экземпляра, не назвав ни пострадавшую организацию, ни способ получения файла. Ни Sophos, ни ESET не связали операцию с конкретным злоумышленником или группировкой. Публично известной жертвы тоже нет.
Отдельный установщик, обнаруженный в образце umount, рассчитан на запуск с правами root. Он отключает SELinux и дописывает вредоносную нагрузку в начало /usr/sbin/httpd; размер вставки совпадает с размером встроенного содержимого установщика. Кроме того, заражаются umount, httpd и rc.local внутри установочных образов BIG-IP. Такой приём позволяет переносить инфекцию через установочные носители и переживать обновления. Поскольку вставка находится перед штатным кодом Apache, она получает управление первой.
Далее код перехватывает функцию Apache Portable Runtime apr_dso_load и ждёт загрузки PHP-модуля libphp. Через /proc/self/maps он находит модуль в памяти, временно разрешает запись в нужные страницы, переписывает функции открытия, определения размера и отображения файлов, после чего возвращает прежние права. В результате PHP получает подменённое содержимое, хотя файл на диске остаётся нетронутым. Веб-шелл добавляется в оперативной памяти к трём сценариям APM: apm_css.php3, full_wt.php3 и webtop_popup_css.php3.
F5 ещё в марте перечислила эти .php3-файлы среди индикаторов, но предупредила: само их наличие или изменение не доказывает взлом. PoisonedRefresh способен оставить дисковые копии чистыми и менять лишь представление, загруженное в память. Веб-шелл читает необработанное тело HTTP-запроса, проверяет короткий маркер, расшифровывает оставшиеся данные и исполняет их. Ответ имеет код HTTP 201 и тип содержимого CSS, поэтому управляющий обмен похож на запрос таблицы стилей.
Вторая функция открывает локальный сокет /run/bigtlog.pipe, проверяет фиксированный токен и подключает соединение к /bin/bash. Получается интерактивная оболочка без прослушивания сетевого порта. Sophos не нашла кода, который подключался бы к этому сокету, и не обнаружила иного применения токена. Связь локальной оболочки с веб-шеллом пока не доказана: похоже, это два самостоятельных способа доступа.
При проверке стоит искать /run/bigtlog.pipe и /run/bigstart.ltm, а также расхождения хеша, размера или времени изменения /usr/bin/umount и /usr/sbin/httpd. F5 уточняет, что штатные размеры и метки времени зависят от выпуска и инженерных hotfix-пакетов. Сбой sys-eicheck, вызванный изменением любого из этих бинарников, требует расследования. Контрольный SHA-256 исследованного образца: 26bd5b0722d1dbab5db749a063c49bc8638653ac2addfead7a9cb3d6d57bccc9.
В /var/log/restjavad-audit подозрителен локальный пользователь, обращающийся к iControl REST с localhost; в /var/log/auditd — отключение SELinux тем же путём. /var/log/audit может содержать команды Bash, выполненные через iControl REST, включая запись Base64-данных в файл и запуск /run/bigstart.ltm. В трафике следует выделять ответы HTTP 201 с типом CSS. На хосте тревожны чтение процессами Apache файла /proc/self/maps, изменение прав памяти возле libphp, создание сокета в /run и запуск /bin/bash. Изменения трёх .php3-сценариев по отдельности остаются слабым признаком. Индикаторы F5 и Sophos описывают разные участки вторжения, но ни один набор не охватывает всю цепочку.
После обновления британский NCSC советует расследовать возможный взлом независимо от даты установки патча. Нужно запустить встроенный sys-eicheck; его ошибка сама считается поводом для проверки. Затем следует собрать отчёт qkview, передать его F5 и открыть обращение в поддержку: ирландский NCSC сообщает, что связанный с отчётом кейс ускоряет и расширяет ответ. Модули в памяти необходимо сравнить с дисковыми копиями, а такую проверку стоит включить в сценарии реагирования для критичных веб-серверов. Если полноценное расследование невозможно, устройство придётся изолировать и развернуть заново как новое, хотя британский NCSC предупреждает о вероятном простое. Неясными остаются судьба инфекции после обновления, способ доступа к локальному сокету и точная связь между двумя оболочками.


Новое на сайте

Ссылка