Что случилось: находка PHP2Shell простыми словами
Компания Wiz опубликовала исследование «PHP2Shell»: дыры найдены не в каком-то плагине, а в самом ядре PHP — программном «двигателе», который исполняет код сайта. Механика упрощённо такая:
- Сайт обрабатывает запрос и сталкивается с нехваткой памяти — PHP аварийно прерывает работу, но часть внутренних данных не успевает очиститься.
- Следующий посетитель (или атакующий), попавший на тот же рабочий процесс сервера, получает доступ к «испорченной» памяти.
- Из этого исследователи собрали цепочку, которая может привести к исполнению чужого кода на сервере — без пароля и без авторизации.
Затронуты практически все версии PHP за последнее десятилетие — от 5.4 и новее. Исправление выпущено 21 октября 2026 года.
Важный уточняющий факт, который мы обязаны привести: независимый исследователь перепроверил находку и частично оспорил её драматизм — в его лаборатории подтверждённое последствие — падение процесса (сайт временно недоступен), а не взлом, и уязвима только одна конфигурация хостинга (Apache + mod_php; на php-fpm и CGI, самой распространённой сегодня, проблема не воспроизводится). Номера CVE в источниках расходятся, полной независимой верификации «взлома» пока нет. Паника преждевременна — но главный вывод обеих публикаций совпадает дословно.
Главный вывод, который важнее самой находки
Заплатку выпускают только для поддерживаемых версий PHP. Для веток 7.x и старше исправления не будет — никогда.
Официальные сроки поддержки (php.net):
| Версия PHP | Конец поддержки безопасности | Статус |
|---|---|---|
| 5.x, 7.x | 2019–2022 | Мертва: заплаток нет вообще |
| 8.0 | июнь 2023 | Мертва |
| 8.1 | декабрь 2025 | Уже мертва |
| 8.2 | декабрь 2026 | Живая, но оставшиеся месяцы |
| 8.3 | декабрь 2027 | Живая |
| 8.4 | декабрь 2028 | Живая |
| 8.5 | декабрь 2029 | Актуальная |
Если ваш сайт крутится на PHP 7 или 8.0–8.1 — он уже не получает патчи безопасности, и каждая новая находка, включая эту, для него — навсегда. При этом значительная часть сайтов в интернете, по статистике W3Techs, до сих пор работает именно на неподдерживаемых версиях: хостеры не трогают, владельцы не знают.
Чем это грозит бизнесу, «которому нечего воровать»
Владельцы небольших сайтов часто думают: «у меня же нет данных карт, что меня взламывать». Типичные сценарии взлома корпоративного сайта:
- кража базы заявок — телефоны клиентов, история обращений; это персональные данные, за утечку — ответственность по 152-ФЗ;
- рассылка спама и фишинга с вашего домена — домен попадает в чёрные списки, письма перестают доходить до клиентов;
- подмена содержимого — на витрине появляются «реклама казино» или оскорбления; поисковики помечают сайт как заражённый, трафик падает в разы;
- встраивание сайта в ботнет — сервер работает на чужие задачи, пока вы платите за его простой.
Стоимость последствий всегда выше стоимости профилактики.
Вариант 1: просто обновить PHP
Что это значит на практике: хостер или разработчик переключает сайт на новую версию PHP и проверяет, что ничего не сломалось.
Когда это разумное решение: сайту меньше 2–3 лет, он на современной CMS (WordPress с обновлёнными плагинами, Bitrix, Tilda-подобные платформы), код писался под свежие версии.
Когда обновление — ловушка: сайт на самописном движке или на старом WordPress с накопившимися плагинами. Код, написанный под PHP 5–7, часто использует конструкции, которые в PHP 8 выбрасывают фатальные ошибки. По факту «обновление» превращается в аудит и переписывание половины сайта — за деньги, сопоставимые с новым сайтом, но с результатом «старый сайт, чуть починенный».
И отдельно: обновление версии не отменяет того, что сам сайт (CMS, плагины, формы) может содержать свои дыры — версия PHP закрывает только слой «двигателя».
Вариант 2: новый сайт — почему сейчас это часто дешевле
Технологии сдвинулись, и арифметика изменилась. Современный сайт можно собрать по схеме «статика + минимум исполняемого кода», и это меняет всё:
- Меньше поверхности атаки. Статические страницы — это просто файлы: их нельзя «взломать через ядро PHP», потому что PHP на них почти не исполняется. В кейсе ниже из серверного кода на новом сайте осталась одна страница — приём заявок.
- Актуальная версия PHP с первого дня — 8.5, получающая заплатки до 2029 года.
- Скорость и SEO в подарок. Статика грузится в разы быстрее, и поисковики это учитывают.
- Стоимость сопоставима с «капитальным обновлением» старого, а по результату — новый витрина-сайт вместо заплаток.
Реальный кейс: клиент хотел обновить PHP — получил новый сайт за 40 000 ₽
Недавний пример из практики — сайт грузового автосервиса в Москве. Владелец обратился в связи с новостями об уязвимостях PHP (сайт работал на PHP 7, который не получает заплатки). Предложили два пути: обновить версию на старом самописном движке (непонятная глубина переделки, риск сломать) или собрать новый сайт. Выбрали второй.
Итог за 2 рабочих дня: 76 страниц, PHP 8.5, PageSpeed производительность с 63 → 83 (мобильные) и 91 → 99 (десктоп), LCP быстрее вдвое, заявки с сайта падают менеджерам в мессенджер, все 40 старых URL сохранены — SEO не потерян. Полный разбор с цифрами «до/после» — в кейсе Грузовое СТО, сам сайт клиента можно посмотреть тут. Стоимость работ — 40 000 ₽.
Проверьте свой сайт за одну минуту
- Откройте панель хостинга → раздел «PHP» — там указана версия сайта. Или загрузите в корень файл со строкой
<?php phpinfo();и откройте его (после проверки удалите). - Если версия 8.1 и старше — план действий нужен сейчас: либо обновление, либо новый сайт.
- Если панель не позволяет выбрать версию PHP — это повод сменить хостинг.
- Техническим специалистам (по находке PHP2Shell): убедитесь, что хостинг применил патч от 21.10.2026 или позже; на конфигурации Apache + mod_php разумно выставить
session.upload_progress.enabled = Off.
Источники
- Wiz Research: PHP2Shell — PHP RCE — исходное исследование, октябрь 2026.
- Jackalsyn: независимый разбор и лабораторная проверка — уточнение масштаба и смягчения.
- php.net: поддерживаемые версии — официальные сроки окончания поддержки.
Сайт вашего бизнеса тоже на старом PHP? Напишите — разберём ваш случай и посчитаем оба варианта: обновление и пересборку. Реальный пример перехода с PHP 7 на 8.5 с цифрами — в кейсе.