Dev48
ЯЗЫК
  • О нас
  • Услуги
  • Индустрии
  • Технологии
  • Статьи
  • Контакты
Забронировать звонок
    Главная/Статьи/Php2shell v windows i macos avtomatizatsiya obnovleniya php s agentom i bez nego
Dev48
info@dev48.org+375 29 320-40-96WhatsApp@isky_by

© 2026 · All rights reserved.

PHP2Shell в Windows и macOS: автоматизация обновления PHP с агентом и без него

Источник: Qualys•4 ноября 2026 г. в 10:39

PHP2Shell в Windows и macOS: автоматизация обновления PHP с агентом и без него

Краткая выжимка PHP2Shell (CVE-2026-109618 и CVE-2026-109619) позволяет выполнять неаутентифицированный удаленный запуск кода на уязвимых PHP-серверах. PHP выпустил исправленные версии. В Linux дистрибутивные пакеты содержат исправление. В Windows и macOS это не так: Microsoft и Apple не…

Краткая выжимка

PHP2Shell (CVE-2026-109618 и CVE-2026-109619) позволяет выполнять неаутентифицированный удаленный запуск кода на уязвимых PHP-серверах. PHP выпустил исправленные версии. В Linux дистрибутивные пакеты содержат исправление. В Windows и macOS это не так: Microsoft и Apple не поставляют PHP, поэтому исправлением является обновление PHP на месте, которое традиционно выполнялось вручную, по одному серверу за раз. Функция Custom Assessment and Remediation (CAR) в составе Qualys TruRisk Eliminate выполняет скрипты, опубликованные Qualys TRU, которые обновляют каждую установку PHP до последнего патч-релиза текущей минорной серии. В Windows скрипт проверяет официальную сборку по SHA256 и выполняет откат в случае сбоя. В macOS обновление происходит через Homebrew. Если хост работает на устаревшей серии (end-of-life), скрипт останавливает работу, сообщает об этом, после чего вы применяете скрипт минимизации рисков PHP2Shell. Тот же скрипт выполняется через Cloud Agent или, на хостах без агента, через аутентифицированный сканер Qualys. Для работы без агента требуются учетные данные Windows или SSH с правами на остановку служб и замену бинарных файлов PHP. Запланируйте окно обслуживания для обоих вариантов, так как IIS, Apache или php-fpm перезапускаются во время обновления.

PHP выпустил критическое обновление безопасности, устраняющее две уязвимости: CVE-2026-109618 и CVE-2026-109619 (совместно отслеживаемые как PHP2Shell), которые позволяют выполнять неаутентифицированный удаленный запуск кода на уязвимых PHP-серверах.

В Linux установка исправления проста: поставщики дистрибутивов выпускают обновленные пакеты, а Qualys TruRisk Eliminate развертывает их.

Windows и macOS — это другая история. Здесь нет простого патча от вендора для развертывания, поэтому исправлением должно служить обновление PHP, которое традиционно требовало ручного входа на каждый сервер. В этом блоге рассказывается, как функция Custom Assessment and Remediation (CAR) в Qualys TruRisk Eliminate закрывает этот пробел для обоих вариантов развертывания: с агентом и без агента (на основе сканера).

Почему управление исправлениями не может доставить исправление в Windows и macOS

Управление исправлениями работает путем развертывания фикса, опубликованного операционной системой или разработчиком ПО. Для PHP в Windows и macOS такого фикса в виде, пригодном для развертывания, не существует.

  • Windows: нет официального установщика или средства обновления. Microsoft не поставляет PHP, а PHP не поставляет установщик или средство обновления на месте для Windows. Официальные сборки на downloads.php.net представляют собой обычные ZIP-архивы, опубликованные в различных вариантах (Thread Safe / Non-Thread Safe, x64 / x86 и под конкретный компилятор Visual Studio). Обновление означает выбор правильной сборки, остановку IIS или Apache, замену бинарных файлов на месте с сохранением php.ini и пользовательских расширений, а также перезапуск служб. Сторонние сборки, такие как XAMPP, WampServer, Laragon, Chocolatey и Scoop, добавляют свою собственную структуру поверх этого.
  • macOS: Apple больше не поставляется с PHP. Обновления программного обеспечения Apple не затрагивают его. На php.net публикуется только исходный код, поэтому на современных компьютерах Mac PHP чаще всего устанавливается через Homebrew (формула php или формула с указанием версии php@8.x).

В результате сервер PHP в Windows или macOS будет выглядеть уязвимым, но в каталоге патчей TruRisk Eliminate для него не будет соответствующего исправления. Уязвимость реальна, но путь устранения — это не установка патча.

TruRisk Eliminate охватывает четыре пути устранения: установка патча, минимизация рисков (mitigate), изоляция или запуск пользовательского скрипта. PHP в Windows и macOS требует четвертого варианта. Функция CAR в TruRisk Eliminate позволяет запускать управляемые скрипты исправления на ваших активах из той же платформы, которая обнаружила проблему. Группа исследователей угроз Qualys Threat Research Unit (TRU) опубликовала в библиотеке CAR скрипты обновления PHP для Windows и macOS, чтобы каждый хост обновлялся одинаково. Найдите в библиотеке пункт «PHP Update to Latest Patch Version» в категории PHP2Shell и импортируйте скрипт для соответствующей платформы.

Оба скрипта построены на одних и тех же принципах:

  • Обновление только в рамках установленной минорной серии. Версия 8.2.33 обновляется до последней версии 8.2.x, 8.4.27 — до последней версии 8.4.x. Скрипты никогда не перепрыгивают через мажорную или минорную версию, поэтому приложения продолжают работать на той ветке, для которой они тестировались.
  • Минимизация рисков для того, что нельзя обновить. Если установленная серия устарела (end-of-life) и больше не поддерживается, скрипт останавливает работу и сообщает об этом, а не пытается угадать решение. Для таких хостов разверните скрипт минимизации рисков PHP2Shell из библиотеки CAR. Он применяет изменения конфигурации, которые блокируют путь атаки, и перезапускает затронутые службы. Смягчение снижает риски до тех пор, пока вы не сможете перейти на поддерживаемую ветку; оно не заменяет обновление.

Windows: официальные сборки, проверка и откат при сбое

  • Обнаруживает каждую установку PHP на хосте, а не только ту, что прописана в PATH: записи PATH для машины и каждого пользователя, общие папки (C:\php*, XAMPP, WAMP, Laragon, Program Files, Scoop), обработчики IIS FastCGI в applicationHost.config, а также любую службу Windows, запускающую бинарный файл PHP.
  • Определяет точный вариант сборки каждой установки (TS/NTS, x64/x86, VC15/VS16/VS17) путем запроса к самому php.exe, а затем выбирает соответствующую официальную сборку из downloads.php.net/releases.json.
  • Автоматически учитывает системный прокси WinHTTP, так как учетная запись SYSTEM не имеет настроек пользовательского прокси.
  • Загружает архив и проверяет его SHA256 по опубликованному хешу до того, как что-либо будет изменено.
  • Останавливает IIS (W3SVC/WAS), Apache и любые процессы php/php-cgi, использующие этот каталог, создает полную резервную копию папки PHP, копирует новые бинарные файлы поверх старых (php.ini и дополнительные расширения сохраняются) и подтверждает новую версию путем запуск php.exe.
  • Выполняет откат из резервной копии и автоматически перезапускает службы в случае сбоя проверки версии после обновления.

macOS: обновления Homebrew в рамках той же серии PHP

Скрипт для macOS учитывает особенности работы Homebrew:

  • Подтверждает наличие PHP и определяет реальный бинарный файл через символические ссылки в Homebrew Cellar, чтобы выяснить, какой формуле он принадлежит (php или php@8.x). PHP из MacPorts, MAMP или собранный вручную фиксируется в отчете и остается без изменений.
  • Запускает brew от имени пользователя, которому принадлежит установка Homebrew, поскольку Homebrew отказывается запускаться от имени root, даже если CAR выполняется с правами root. Он также исправляет права на файлы Homebrew, оставшиеся от предыдущих запуск под root, чтобы brew мог записывать в них данные.
  • Обновляет Homebrew с поддержкой повторных попыток для распространенного случая «другое обновление brew уже запущенно» и возвращается к кэшированным данным формулы в случае сбоя обновления.
  • Остается на установленной серии. Если стандартная формула PHP перешла на более новую серию (например, хост работает на 8.2.x, но PHP теперь отслеживает 8.4), скрипт устанавливает или обновляет PHP 8.2 и перепривязывает к нему команду PHP, вместо того чтобы принудительно выполнять мажорное обновление.
  • Перезапускает службу php-fpm через brew services, если она была запущенна до обновления, и выводит финальную версию php -v, чтобы результат был виден в выводе задачи.

С агентом или без агента: один и тот же скрипт достигает каждого хоста

Когда вы создаете сценарий в CAR, вы выбираете способ его доставки на хост. Устройства с агентом (Agent Devices) запускают сценарий локально с помощью установленного Cloud Agent. Периферийные устройства (Perimeter Devices) не требуют наличия Cloud Agent. Сценарий доставляется и выполняется через аутентифицированный сканер Qualys. Содержимое сценария в обоих случаях идентично, изменяется только способ доставки. Выберите Windows или Mac в качестве платформы в соответствии со сценарием.

Устранение уязвимостей с помощью агента

  • В ETM определите хосты Windows и macOS, отмеченные для уязвимостей PHP2Shell CVE (CVE-2026-109618 и CVE-2026-109619), и пометьте их тегами по платформам.
  • В CAR создайте или импортируйте сценарии обновления PHP для Windows и macOS, выбрав Agent Devices (Устройства с агентом), и запустите каждый из них для соответствующего тега платформы.
  • Запланируйте выполнение установки в окно обслуживания, так как IIS, Apache или php-fpm будут перезапущены.
  • Проверьте результаты задания и выполните повторное сканирование, чтобы убедиться, что QID закрыт.

Устранение уязвимостей без агента

Многие доступные серверы PHP находятся на аппаратных устройствах, серверах DMZ, устаревших хостах и системах, принадлежащих другим командам: сервер Windows в DMZ, на котором работает веб-приложение поставщика под управлением IIS и PHP, или Mac mini в лаборатории сборки, принадлежащей инженерному отделу. На многих из них нельзя запустить Cloud Agent (или это запрещено правилами).

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

Благодаря функции CAR в TruRisk Eliminate те же сценарии обновления PHP для Windows и macOS выполняются непосредственно на хостах на базе сканера с помощью опции Perimeter Devices.

  • Найдите свои хосты, доступные только для сканера. В ETM определите уязвимые серверы PHP с помощью CVE PHP2Shell (CVE-2026-109618 и CVE-2026-109619).
  • Создайте сценарии для Периферийных устройств (Perimeter Devices). В модуле CAR системы TruRisk Eliminate выберите в библиотеке сценарий обновления PHP для платформы хоста, выберите Perimeter Devices и Windows или Mac, а затем укажите устройство сканера, которое может связаться с этими хостами, используя соответствующие учетные данные аутентификации (Windows или SSH).
  • Запустите задание. Запустите задание для хостов на базе сканера. Сценарии ведут себя одинаково независимо от того, запущены ли они с агента или со сканера.
  • Подтвердите устранение уязвимостей. Просмотрите вывод задания для зарегистрированных версий «до/после» на каждом хосте, затем повторите сканирование и убедитесь, что QID больше не выдается.

Как выглядит вывод задания

Каждый хост возвращает короткую, легко читаемую запись журнала со статусом выполнения и версиями PHP до и после обновления. Ниже хост macOS на базе сканера обновляется с версии PHP 8.2.33 до 8.2.35 в рамках серии 8.2, а формула php@8.2 перелинковывается как активный PHP.

В Windows в журнале дополнительно перечисляются все установки PHP, обнаруженные на хосте, обнаруженный тип сборки, проверка SHA256, остановленные и перезапущенные службы, а также расположение папки резервной копии.

Заключение

PHP2Shell служит напоминанием о том, что устранение уязвимостей выходит за рамки простого применения патчей. Когда нет простого патча от производителя для развертывания, вам все равно нужен безопасный и быстрый способ закрыть уязвимость. С помощью TruRisk Eliminate вы можете обнаружить каждую установку PHP, обновить ее до последней версии текущей серии с проверкой целостности, автоматическим откатом и перезапуском служб, причем сделать это из той же консоли, которая обнаружила уязвимость, без использования агента на хостах, доступных только через сканер, и с помощью Cloud Agent там, где он установлен.

Клиенты Qualys могут найти сценарии обновления PHP для Windows и macOS, а также сценарий митигации PHP2Shell в библиотеке сценариев CAR. Просмотрите CVE (CVE-2026-109618 и CVE-2026-109619) в ETM и начните с периметра, выходящего в интернет.

Вы не клиент Qualys? Получите доступ к бесплатному сервису митигации PHP2Shell от Qualys, чтобы защитить свою среду от этой угрозы.

Часто задаваемые вопросы (FAQ)

Переведет ли меня этот сценарий с PHP 8.2 на 8.4?

Нет. Он выполняет обновление только в рамках установленной минорной серии. Версия 8.2.33 обновляется до последней версии 8.2.x. Приложения остаются на той ветке, под которую они тестировались.

Что происходит с версией, поддержка которой прекращена (end-of-life)?

Сценарий останавливается и сообщает об этом. Развертывайте сценарий митигации PHP2Shell до тех пор, пока не сможете перейти на поддерживаемую ветку.

Работает ли это без Cloud Agent?

Да. Выберите Perimeter Devices и запустите тот же сценарий через аутентифицированный сканер Qualys. Вам понадобятся учетные данные Windows или SSH с правами на остановку служб и замену бинарных файлов PHP.

Что проверяет сценарий для Windows?

Он определяет тип сборки, загружает соответствующую официальную сборку с downloads.php.net, проверяет хеш SHA256 до того, как что-либо будет изменено, и выполняет откат из полной резервной копии, если проверка версии после обновления завершается сбоем.

← Все статьи

О чём эта статья

Ещё в разделе «Кибербезопасность»

Все →
Атаки методом подстановки учетных данных активизируются с помощью ИИ | Threat Intelligence
Okta

Атаки методом подстановки учетных данных активизируются с помощью ИИ | Threat Intelligence

Передовой ИИ и геополитическая фрагментация сталкиваются, меняя ландшафт киберполитики
NCC Group

Передовой ИИ и геополитическая фрагментация сталкиваются, меняя ландшафт киберполитики

CrowdStrike запускает ИИ-рубильник для остановки вышедших из-под контроля внутренних агентовПресса
CrowdStrike

CrowdStrike запускает ИИ-рубильник для остановки вышедших из-под контроля внутренних агентов

Видеоролики по безопасности данных
Zscaler

Видеоролики по безопасности данных

Новая аварийная кнопка CrowdStrike может мгновенно остановить вышедшие из-под контроля ИИ-агенты, заявляет генеральный директорПресса
CrowdStrike

Новая аварийная кнопка CrowdStrike может мгновенно остановить вышедшие из-под контроля ИИ-агенты, заявляет генеральный директор

Cortex Cloud 2.3: Развитие автономной облачной защиты
Palo Alto Networks

Cortex Cloud 2.3: Развитие автономной облачной защиты

Ещё от Qualys

Авторизация FedRAMP — это лишь первый шаг: как сохранять соответствие с помощью Qualys Policy Audit
Qualys

Авторизация FedRAMP — это лишь первый шаг: как сохранять соответствие с помощью Qualys Policy Audit

Практическая реализация CISA AA26-194A: Автоматизация проверки безопасности маршрутизаторов Cisco с помощью Qualys Policy Audit
Qualys

Практическая реализация CISA AA26-194A: Автоматизация проверки безопасности маршрутизаторов Cisco с помощью Qualys Policy Audit

Не удается обновить Node.js? Создайте временное решение с помощью имеющихся у вас средств контроля
Qualys

Не удается обновить Node.js? Создайте временное решение с помощью имеющихся у вас средств контроля

Как выявить скомпрометированные сертификаты eMudhra с помощью Qualys (CVE-2026-111943 и CVE-2026-111944)
Qualys

Как выявить скомпрометированные сертификаты eMudhra с помощью Qualys (CVE-2026-111943 и CVE-2026-111944)

Node.js устраняет уязвимость удаленного выполнения кода в Brotli: найдите уязвимые среды выполнения до того, как это сделают злоумышленники
Qualys

Node.js устраняет уязвимость удаленного выполнения кода в Brotli: найдите уязвимые среды выполнения до того, как это сделают злоумышленники

Наука об эксплойтабельности: расшифровка BlueHammer
Qualys

Наука об эксплойтабельности: расшифровка BlueHammer