Если PHP-разработчика нет, восстановите доступ, проверьте резервные копии и определите среду. Затем выберите исправленный PHP, миграцию или статический архив для устранения PHP2Shell.
01
Верните доступ и ответственность
Найдите регистратора, хостинг, сервер/панель, код, доступ к БД и плательщика. Назначьте ответственного за обслуживание и восстановление. Определите приложение и точную версию по локальным файлам. Верните недостающие учётные записи и исходники до смены PHP.
02
Сохраните доказательства и проверьте восстановление
При подозрении сохраните журналы до очистки. Код, БД, загрузки, настройки и задачи сохраняйте датированным зашифрованным комплектом с ограниченным доступом. Запишите кодировку и внешнее хранилище. Восстановите приватно, проверьте контент и вход; сообщения об успехе мало.
Патч не исключает взлом ↗03
Разберите переходы поколений PHP
PHP 5.3/5.6 может использовать удалённые API. PHP 7 удаляет ext/mysql; PHP 8 удаляет each()/create_function() и ужесточает типы/сигнатуры; PHP 8.2 устаревает динамические свойства. Читайте каждую миграцию. Исторический минимум не рекомендует неподдерживаемый PHP и не проверяет собственный код.
04
Выберите ремонт, миграцию или архив
Подтверждённый патч поставщика может дать время; нужны оба CVE и поддержка. Старому PHP нужен поддерживаемый целевой выпуск, не вечное исключение WAF. Управляемое приложение ремонтируйте, заброшенные зависимости заменяйте; для контента возможен статический архив с заменой входа, поиска и форм.
05
Создайте реалистичный приватный стенд
Согласуйте Web PHP, расширения, INI, БД и маршруты с целью. Обезличенные копии закройте; исключите настоящие письма, платежи и production-webhooks. Проверяйте framework, плагины и свой код вместе. Сохраняйте бизнес-приёмку и логи; запросите их у хостера.
06
Планируйте откат с учётом записей
Храните согласованные файлы и БД. Смена PHP обратно не откатит схему. Согласуйте остановку записи или проверенную синхронизацию, критерии отказа, оператора и срок. Учтите новые заказы после снимка, испытайте восстановление и сверку.
07
Проверьте реальные службы после перехода
Проверьте Web PHP, все FPM, очереди, задачи, контейнеры и реплики; замените старые процессы. Подтвердите оба CVE версией или бюллетенем. Испытайте глубокие ссылки, вход, загрузки и бизнес. Сохраните логи и окно отката; CLI и главной страницы мало.
Проверить исправления PHP2Shell ↗Проверка функций после устранения PHP2Shell
Вход, сессии и роли
Проверьте вход, выход и сброс пароля тестовой учётной записи; сессии, администратора и роли.
Глубокие ссылки и HTTP
Откройте глубокую ссылку, отправьте форму и запросите отсутствующую страницу; сравните параметры, перенаправления и HTTP.
Чтение/запись БД
Читайте/пишите данные в тестовой БД; проверьте драйверы, строгий SQL, транзакции и сохранность значений.
Свои шаблоны и экранирование
Отобразите статьи, списки, кабинет и ошибки; проверьте теги, экранирование, кеш и предупреждения.
Загрузки и миниатюры
Загрузите безопасное изображение, получите миниатюру и удалите; проверьте права, пути и URL, сохраняя запрет исполняемых файлов.
Новые и старые задания
Обработайте новое и старое задание новым процессом; проверьте сериализацию, повторы и отсутствие дубликатов.
Расписание и пути PHP
Проверьте реальный PHP, INI и пользователя планировщика; выполните безопасную задачу и сравните после обновления.
Холодный/тёплый кеш и OPcache
Пересоберите кеши по документации; проверьте холодные/тёплые запросы и удалите старые сериализации и процессы OPcache.
Тестовая почта
Отправьте письма в тестовый сборщик; проверьте шаблоны, очередь и транспорт без реальных клиентов.
Заказы, налоги и остатки
Оформите тестовый заказ с доставкой, налогом, скидкой и возвратом; сравните суммы, остатки и историю.
Тестовые платежи и уведомления
Проверьте успех, отказ и асинхронное уведомление платежа; подпись и идемпотентность должны исключать двойное списание.
Поиск, индексы и фильтры
Перестройте тестовый индекс; сравните поиск, фильтры и права, а не только ответ PHP.
Сайты, домены и языки
Проверьте все сайты, домены и языки с нужной ролью; cookies, URL и настройки.
GBK/UTF-8 и проверка данных
Проверьте символы через формы, БД и экспорт; сохраняйте GBK/UTF-8 до отдельной проверенной конвертации.
Контракты API и callbacks
Проверьте API с/без авторизации; сравните типы JSON, ошибки, HTTP и callbacks.
Расширения Web/CLI и ABI
Проверьте расширения Web/CLI с нужными ABI/NTS/ZTS; испытайте драйверы и службы.
Проверить исправления PHP2Shell
Совместимость приложения, его поддержка и безопасность PHP проверяются отдельно. Выберите поддерживаемую ветку с исправлениями обеих CVE и проверьте Web-процессы, задания и реплики. Обновление плагина не заменяет PHP.
| Ветка PHP | Исходные версии ниже | Первая исправленная версия | Конец обновлений безопасности |
|---|---|---|---|
| PHP 8.5 | < 8.5.12 | ✓ 8.5.12 | 31 дек. 2029 г. |
| PHP 8.4 | < 8.4.27 | ✓ 8.4.27 | 31 дек. 2028 г. |
| PHP 8.3 | < 8.3.36 | ✓ 8.3.36 | 31 дек. 2027 г. |
| PHP 8.2 | < 8.2.35 | ✓ 8.2.35 | 31 дек. 2026 г. |
Обычных выпусков PHP для этих веток нет. Минимальные бэкпорты исходников доступны для 7.4, 8.0 и 8.1. Поддержку поставщика проверяйте отдельно. Читать руководство ↗