Разработчики PHP закрыли две критические дыры после утечки

·

Коротко

21 октября 2026 года проект PHP выпустил исправления для двух критических уязвимостей ядра, известных под названием PHP2Shell (CVE-2026-109618 и CVE-2026-109619). Они позволяют удалённо запустить на сервере чужой код без пароля. Попытки их эксплуатации фиксируются с 17 октября, то есть за четыре дня до публичного раскрытия. К утру 26 октября публично подтверждённых взломов именно через эти уязвимости найдено не было.

PHP работает примерно на 69,3% сайтов, для которых известен серверный язык, поэтому под угрозой оказались многие сайты и сервисы. Исправления вышли в версиях PHP 8.2.35, 8.3.36, 8.4.27 и 8.5.12. Сообщения о миллионах атак описывают число автоматических попыток, а не число взломанных сайтов.

Подробно

Что такое PHP2Shell и кого она затрагивает?

PHP2Shell - общее название двух уязвимостей в ядре языка PHP. CVE-2026-109618 - это повреждение памяти после нехватки оперативной памяти (out-of-memory). CVE-2026-109619 - повторное использование устаревшего состояния между запросами. Обе получили оценку 9,2 по шкале CVSS v4.0 (уровень Critical). При подходящих условиях они позволяют удалённо выполнить код без аутентификации.

Под риском все установки PHP, которые обслуживают веб-запросы: PHP-FPM, Apache mod_php, php-cgi, FrankenPHP и LiteSpeed. Разработчики PHP считают самой опасной конфигурацию mod_php: для неё показана атака ещё до выполнения кода приложения.

По данным W3Techs на 22-24 октября 2026 года, PHP используют 69,3% сайтов, для которых известен серверный язык. Это не доля всех сайтов в сети и не число уязвимых серверов.

Какие версии PHP нужно обновить и как закрыть уязвимость?

Исправления вышли 21 октября 2026 года в версиях PHP 8.2.35, 8.3.36, 8.4.27 и 8.5.12. Ветки 8.1 и старше уже не получают обычные релизы проекта. Для тех, кто собирает PHP самостоятельно, опубликованы минимальные исходные бэкпорты для 7.4, 8.0 и 8.1. Пользователям пакетов нужно проверить обновления своего дистрибутива или поставщика долгосрочной поддержки.

Временные настройки закрывают лишь отдельные пути атаки. По рекомендациям PHP и AWS, полностью устраняет обе уязвимости только установка исправленной сборки и перезапуск процессов, которые обслуживают запросы.

WAF Cloudflare включил защиту по умолчанию для бесплатных и платных планов 21 октября в 03:02 UTC, примерно за девять часов до публичного раскрытия. Компания подчёркивает, что это дополнительная мера, а не замена обновлению.

23 октября PHP выпустила отдельное информационное предупреждение о CVE-2026-115560. Это ещё один маловероятный путь выполнения кода: он требует необычной комбинации настроек session.serialize_handler, его изменения приложением и включённого session upload progress. До ближайшего планового релиза рекомендуется выставить session.upload_progress.enabled=0. Полноценный advisory и исправление ещё ожидаются.

Как ИИ помог найти уязвимости?

Исследователи Calif начали аудит PHP 30 июля 2026 года в рамках программы OpenAI Patch the Planet. Первые пути к удалённому выполнению кода они нашли 1 августа и сообщили о первой ошибке в PHP 11 августа. Рабочий пример эксплойта (PoC) они передали 14 августа, а PHP подтвердил его на следующий день. По версии Calif, самый ранний уязвимый путь прослеживается до PHP 5.4.0.

OpenAI подтверждает, что Calif использовала модель GPT-5.6 Sol, а Wiz независимо обнаружила и сообщила обе уязвимости. Wiz заявляет, что использовала собственную систему Wiz Atlas, Gemini 4 Argon и GPT-5.6 Sol. Компания объединила четыре эксплуатационных примитива в скрипт php2shell и показала удалённое выполнение кода на актуальных на момент теста контейнерах WordPress, Drupal и Joomla. Отдельный путь позволял читать память процесса PHP, где могут лежать пароли, токены и ключи API.

Calif заявила о подтверждённом выполнении кода без аутентификации на WordPress 7.1.2, Drupal 11.4.3, Joomla 6.1.4, MediaWiki 1.46.2, Roundcube 1.7.4, Magento 2.4.9, phpMyAdmin 5.2.3, Nextcloud 35.0.1, Laravel 13.11, Symfony 8.1 и WHMCS. Цепочки зависят от версии PHP, конфигурации и расположения памяти.

Для первоначального поиска ошибки не использовали ни специальную обвязку, ни модели, недоступные всем остальным. - Райан Остин, исследователь Calif

Он же оценивает роль ИИ сдержанно: ни одна модель пока не способна найти «все ошибки» простыми запросами.

Независимого сравнения с работой без ИИ и оценки вклада каждой модели нет. Это технический отчёт компаний, а не рецензируемая научная статья.

Проблема не была совсем новой. Предшественник этого класса ошибок описал Стефан Эссер в 2004 году. В 2024 году при исправлении результатов внешнего аудита Quarkslab (организован OSTIF, оплачен Sovereign Tech Agency) разработчик PHP заметил признаки той же OOM-проблемы. Практического пути к удалённому выполнению кода тогда не нашли, а выбор исправления застопорился из-за рисков несовместимости, отказа в обслуживании и необходимости менять сторонние расширения. Сама PHP Foundation назвала задержку структурным сбоем.

Как детали уязвимостей стали известны до выхода патчей?

По хронологии PHP Foundation, Calif и OpenAI независимо сообщили одну и ту же корневую проблему 11 августа. Wiz сообщила дополнительные векторы 24 августа, OpenAI Codex Security - 18 сентября.

20 октября около 15:00 UTC в форумах и соцсетях появились номера двух CVE, ошибочный срок релиза и неверная оценка CVSS 10,0. Технических деталей в этой первой утечке, по данным PHP Foundation, не было. После неё проект перенёс предварительное объявление на 20 октября 19:30 UTC, а выпуск - с 22 октября на 21 октября 14:00 UTC. Выпустить исправление немедленно не удалось: дистрибутивы ещё упаковывали обновления.

Около 20:00 UTC того же дня Calif по ошибке опубликовала видео работающего PoC. Его удалили, но копии разошлись. PHP Foundation считает, что видео ускорило создание новых PoC. Около 23:00 UTC, возможно, утекла и рекомендация по временной защите, которую ранее передали отдельным операторам критической инфраструктуры. Её содержимое и источник утечки не установлены.

21 октября в 07:41 UTC Chainguard опубликовала собранные образы с исправлением - более чем за шесть часов до согласованного раскрытия. PHP Foundation назвала это односторонним нарушением эмбарго: исправление уже можно было изучать в бинарном виде, пока остальные не имели официального релиза.

Сколько было атак и взломали ли сайты через PHP2Shell?

Amazon Threat Intelligence обнаружила в сети приманок MadPot попытку эксплуатации от 17 октября - за четыре дня до раскрытия и за три дня до известной утечки. Источником был IP-адрес коммерческой сети анонимизации. Как оператор получил сведения, неизвестно.

Остаётся неясным, как злоумышленник получил информацию об эксплойте до раскрытия. - CJ Moses, CISO Amazon Integrated Security

С 02:00 до 08:00 UTC 21 октября AWS видела новые попытки с разных анонимизированных инфраструктур и с разными нагрузками. Компания предполагает нескольких операторов, но отмечает, что успех этих атак на реальных системах неизвестен.

Гендиректор Cloudflare Мэттью Принс сообщил, что сеть видела тысячи попыток за 10 часов до объявления, десятки тысяч - в первые 45 минут после него, сотни тысяч - за два часа, а к 22 октября уже миллионы. Это число запросов и попыток, а не уникальных атакующих, жертв или успешных взломов.

Imperva за первые сутки после раскрытия насчитала 482 342 вредоносных запроса и 122 311 атакующих сессий против 21 998 сайтов в 103 странах. Компания назвала это широким, но неглубоким автоматизированным сканированием.

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

Причинную связь «утечка привела к атакам» источники подтверждают лишь по времени: после раскрытия число попыток резко выросло. Но первая замеченная попытка предшествовала известной утечке, а весь трафик конкретной утечке не приписывают.

25 октября Palo Alto Networks Unit 42 отозвала сообщение о компрометации европейского госоргана через PHP2Shell: атака шла через уязвимое PHP-приложение, но связать первоначальный доступ с этими CVE не удалось.

Мы не можем подтвердить, что первоначальный доступ связан именно с CVE PHP2Shell. - Unit 42, Palo Alto Networks

На 26 октября 05:29 по Москве публично подтверждённых взломов боевых систем через CVE-2026-109618 или CVE-2026-109619 найдено не было. Amazon советует отсчитывать окно расследования как минимум с 17 октября и измерять сроки установки критических патчей часами.

Чем поможет плагин Cognition для исправления PHP2Shell?

Cognition, разработчик Devin, 22 октября 2026 года выпустила открытый набор Vulnerability Fixes (версия 1.0.0, лицензия MIT, бесплатно). В нём три навыка для ИИ-агентов: fix-php-vuln для PHP2Shell, fix-node-vuln и fix-gitlab-vuln. Он совместим с Devin и другими агентами, читающими файлы SKILL.md, включая Codex, Claude Code, Cursor, GitHub Copilot, Gemini CLI, OpenCode и Windsurf.

Плагин сначала делает инвентаризацию репозиториев в режиме только чтения и ждёт, пока пользователь выберет, что исправлять. Затем он проверяет, что целевая версия или образ существуют, запускает тесты до и после обновления внутри боевого образа и создаёт отдельный pull request на каждый репозиторий с оценкой риска и планом отката. Управляемые среды и рантаймы, встроенные в appliances и Electron, он лишь отмечает для обращения к поставщику.

Для установки через npx нужен Node.js 22.20 или новее, а для сборки и тестов - git, shell, Docker и доступ к реестру пакетов или его зеркалу. Исходный код открыт глобально.

Cognition не публиковала тестов эффективности, доли успешно исправленных репозиториев или независимых проверок. Качество результата ограничено покрытием тестами конкретного приложения.

Источники

Рубрики: ИИ для разработки ПО, Кибербезопасность, Разработка ПО и DevOps

Теги: PHP2Shell, PHP, уязвимость PHP, CVE-2026-109618, CVE-2026-109619, удалённое выполнение кода, обновление PHP, Calif, Wiz, Cloudflare, OpenAI, Cognition Devin, WordPress, кибербезопасность

Все новости ВП Ньюз · О проекте