Через PHP работают веб-компоненты QNE (ADRA) и ряда приложений QNAP. В этом языке обнаружили две уязвимости, дающие удалённое выполнение кода. Атака не требует учётной записи. Затронуты системы QNE (ADRA), не получившие свежую сборку с исправлениями.
PHP2Shell срабатывает до проверки учётных данных
Обе уязвимости объединили под общим именем PHP2Shell. Каждая получила 9.2 из 10 по шкале CVSS, которая оценивает опасность уязвимостей. В конце октября обе записи также добавили в перечень CISA KEV, куда входят уязвимости с зафиксированной эксплуатацией. Попытки атак на сам PHP публично описаны, хотя QNAP не получала сообщений об атаках на свои продукты. Своё оповещение CERTFR-2026-ALE-014 CERT-FR выпустил 21 октября.
Первая из них, CVE-2026-109618, связана с обработкой нехватки памяти. Специально составленный запрос к веб-службе истощает память, когда данные запроса заполнены лишь частично. Затем PHP очищает память и обращается к неверным указателям. В результате состояние процесса повреждается. Это открывает путь к выполнению кода.
Вторая уязвимость, CVE-2026-109619, относится к использованию памяти после освобождения. Так называют чтение данных, которые программа уже вернула системе. При этом глобальное состояние обработчика хранит ссылку на область закрытого запроса. Следующий запрос на том же обработчике читает эти данные. Возможен захват управления или утечка содержимого памяти.
Обе атаки идут по сети и не требуют учётных данных. Пользователь тоже ничего не подтверждает. Обработка запроса происходит до проверки прав на уровне приложений. Однако сложность эксплуатации оценивают как высокую. Атакующему нужно точно рассчитать объём памяти или момент освобождения, а автоматизировать такие атаки, по оценке CISA, нельзя.
Исправления для самого PHP вышли на день раньше, 21 октября. QNAP опубликовала уведомление QSA-26-19 днём позже, 22 октября. Пока готовых сборок не было, защищаться приходилось сетевыми мерами. Тем не менее редакция с решённым статусом появилась только 2 ноября. Всё это время устройства с открытым веб-интерфейсом оставались под риском.
Исправленная сборка для QNE (ADRA) вышла под номером 1.0.7.q327. Уязвимы версия 1.0.7 и более ранние. В самом PHP исправления вышли в версиях 8.2.35, 8.3.36, 8.4.27 и 8.5.12. Поэтому обновление прошивки возвращает контроль над веб-компонентами системы. Сторонние сборки PHP придётся обновлять отдельно.
Пока обновление не установлено, устройство держат вне интернета. Для этого отключают переадресацию портов на роутере и автоматическое открытие портов UPnP. Удалённый доступ строят через VPN, а порты управления, по умолчанию 8080 и 443, открывают только доверенным подсетям. Кроме того, в App Center останавливают ненужные приложения на PHP. Отключение служб не защищает саму панель управления.
PHP внутри контейнеров Container Station и сторонних приложений обновления QNAP не покрывают. Поэтому за такими сборками следит поставщик образа. Кроме того, свою запись об уязвимости опубликовал Siemens. В ней указан продукт RUGGEDCOM APE1808. Сроки исправления для этой модели не названы.
Однако сетевые меры снижают риск, а уязвимость не закрывают. Если устройство уже заражено, локальная сеть от повторной атаки не спасает. Признаки компрометации ищут в QuLog Center. Систему дополнительно проверяют через Security Center и Malware Remover. При подозрении на взлом меняют все пароли и обращаются в поддержку QNAP.
PHP входит в стек веб-компонентов QNE, а не в отдельное приложение. Из-за этого ошибка в языке затрагивает панель управления и сервисы, которые его используют. При этом исправления в PHP устраняют обе ошибки работы с памятью. После установки обновления запрос к веб-службе уже не повреждает состояние процесса. Пакет скачивают из Download Center или из панели управления.