Две критические уязвимости PHP, вызвавшие тревогу во всём мире, пока не привели к массовым подтверждённым взломам. Однако атаки уже зафиксированы, а почти одновременно обнаруженная ошибка Brotli затронула ещё больше программ. Обе находки связаны с применением искусственного интеллекта.
21 октября разработчики PHP выпустили экстренные обновления для двух уязвимостей CVE-2026-109618 и CVE-2026-109619, получивших общее название PHP2Shell. Обе получили оценку 9,2 балла по шкале CVSS 4.0 и позволяют при определённых условиях выполнять произвольный код на сервере без авторизации. Потенциальные последствия включают кражу конфиденциальных данных, изменение содержимого сайтов и захват серверов.
Масштаб угрозы объясняется распространённостью PHP. По статистике W3Techs на 28 октября, язык используют 69,2% сайтов, для которых удалось определить серверную технологию. Среди работающих на PHP систем находятся WordPress, Drupal, Joomla и MediaWiki. При этом ошибки обнаружили в самом интерпретаторе, поэтому даже полностью обновлённая система управления сайтом остаётся уязвимой, если сервер использует старую версию PHP.
Обе проблемы связаны с неправильной работой с памятью. CVE-2026-109618 возникает при обработке ошибок нехватки памяти, когда программа может обратиться к неинициализированным данным. CVE-2026-109619 позволяет сохранить ссылку на уже освобождённую область памяти и повторно использовать её при следующем запросе. Злоумышленник способен превратить подобные ошибки в выполнение собственных команд, хотя для этого требуется достаточно сложная последовательность действий.
Первые сообщения создавали впечатление неминуемой катастрофы. Уже 22 октября генеральный директор Cloudflare Мэтью Принс заявил о миллионах попыток эксплуатации PHP2Shell, замеченных в сети компании. Специалисты Amazon обнаружили подозрительную активность ещё 17 октября, за четыре дня до официального раскрытия уязвимостей. Однако большое количество вредоносных запросов само по себе не доказывает, что атакующим удалось получить доступ к серверам.
Главным препятствием оказалась сложность создания универсального эксплойта, способного стабильно использовать уязвимость. Специалисты CrowdStrike установили, что работающие образцы часто приходится адаптировать под конкретную версию PHP, веб-приложение, системные библиотеки и конфигурацию сервера. Многие опубликованные программы только вызывали сбои, но не позволяли захватить управление системой. Для массовой автоматической атаки подобная зависимость от окружения стала серьёзным ограничением.
24 октября генеральный директор Trail of Bits Дэн Гуидо сообщил о создании эксплойта, работающего с несколькими приложениями и конфигурациями. Исследователи использовали модель GPT-5.6 Cyber, но разработка всё равно потребовала значительной работы специалистов. Google Threat Intelligence тогда не обнаружила признаков успешной эксплуатации в широких масштабах. При этом некоторые исследовательские эксплойты уже работали против определённых стандартных конфигураций PHP.
К 25 октября появились более убедительные свидетельства реальных атак. Исследователь Адель Карими из Perplexity зафиксировал выполнение постороннего кода на специально подготовленном сервере-ловушке с PHP 8.4.26 и Apache mod_php. Злоумышленник смог получить дамп памяти объёмом около 800 КиБ и использовать извлечённые адреса для следующего этапа атаки. Эксперимент подтвердил работоспособность цепочки в конкретной конфигурации, но не её надёжность против произвольных серверов.
26 октября американское агентство CISA добавило обе уязвимости PHP в каталог KEV, куда включают проблемы с подтверждённой эксплуатацией. Тем временем исследователи Wiz 27 октября сообщили, что в наблюдаемой ими инфраструктуре количество доступных из интернета уязвимых машин за несколько дней сократилось примерно на 67%. Показатель отражает только данные Wiz, а не состояние всего интернета. Масштабной волны успешных взломов специалисты компании не обнаружили.
Пока внимание специалистов было приковано к PHP, обнаружилась ещё одна критическая ошибка. Уязвимость CVE-2026-111497 затронула декодер Brotli, разработанный Google компонент для распаковки сжатых данных. Brotli широко используют при передаче веб-страниц, работе сетевых приложений и обмене информацией между серверами. В отличие от PHP2Shell, новая проблема затрагивает не отдельный язык программирования, а общий программный компонент, встроенный в множество совершенно разных продуктов.
Ошибка возникает при обработке специально сформированного сжатого потока. Декодер неправильно реагирует на повреждённую структуру данных и продолжает запись за пределами выделенной области памяти. Подобное переполнение буфера может привести к аварийному завершению программы, раскрытию содержимого памяти или выполнению постороннего кода. Для атаки достаточно заставить уязвимое приложение распаковать подготовленные злоумышленником данные.
Уязвимый код оказался в Node.js, Python, .NET, Bun, Java-библиотеках, прокси-сервере Envoy и платформе Istio. Проблема также затронула некоторые сетевые устройства и системы анализа трафика. В Windows-сборках PHP опасный декодер присутствовал в библиотеке, используемой расширением cURL. Таким образом, даже устранение обеих ошибок PHP2Shell не гарантировало защиту от отдельно обнаруженной уязвимости Brotli.
Однако наличие уязвимой библиотеки ещё не означает, что программу можно взломать через интернет. Атакующему необходимо добраться до функции распаковки и передать ей вредоносные данные. Например, стандартный HTTP-сервер Node.js не распаковывает входящие сообщения Brotli автоматически, а ASP.NET Core и HttpClient по умолчанию также не включают соответствующую обработку. Возможность атаки зависит от того, как разработчики встроили декодер в конкретное приложение.
Исправления для Google Brotli вышли 21 октября в версиях 1.0.10, 1.1.1 и 1.2.1. Разработчики Node.js одновременно закрыли уязвимость в выпусках 22.23.4, 24.22.1 и 26.12.1. Microsoft подготовила внеплановые обновления .NET 8.0.33, 9.0.22 и 10.0.14. Исправления получили библиотеки Python и ряд инфраструктурных продуктов. При этом распространение патчей по всей экосистеме продолжается, поскольку некоторые программы содержат собственные копии уязвимого декодера.
27 октября CISA добавило CVE-2026-111497 в перечень реально эксплуатируемых уязвимостей. В предупреждении от 29 октября Национальный центр кибербезопасности Новой Зеландии также подтвердил наличие активной эксплуатации и общедоступных демонстрационных эксплойтов. При этом ведомство не раскрыло число пострадавших организаций и подробности атак. Доказательств массового компрометирования серверов пока недостаточно.
Особенно показательно происхождение уязвимости Brotli. Разработчики Node.js поблагодарили за её обнаружение Хая Трана и Сильви Майер из команды OpenAI Codex Security. Исследователи нашли проблему с помощью инструментов искусственного интеллекта во время работы над безопасностью программной среды. OpenAI параллельно проверяла защиту инфраструктуры, в которой обучает и оценивает свои наиболее мощные модели, включая попытки выхода за пределы изолированных вычислительных окружений.
В случае PHP искусственный интеллект сыграл не менее существенную роль. Исследователи Wiz использовали Wiz Atlas, Gemini 4 Argon и GPT-5.6 Sol для поиска и анализа ошибок, существовавших в коде много лет. Первую проблему команда обнаружила 19 августа, а уже 20 и 21 августа подтвердила возможность удалённого выполнения кода в Drupal и WordPress. По оценке исследователей, современные модели позволили за считаные дни решить задачи, которые раньше потребовали бы месяцев работы опытной команды.
Сочетание искусственного интеллекта и автоматизированного анализа кода меняет привычные сроки реагирования на уязвимости. Раньше между публикацией исправления и появлением работающего эксплойта нередко проходили дни или недели. Теперь модели способны быстрее изучать различия между версиями программ, находить изменённые участки кода и предлагать способы эксплуатации. Однако случаи PHP2Shell и Brotli показывают, что обнаружить ошибку и создать надёжную массовую атаку по-прежнему не одно и то же.
Администраторам PHP-серверов необходимо установить версии 8.2.35, 8.3.36, 8.4.27 или 8.5.12 либо исправленные пакеты своих поставщиков. Для устаревших веток PHP 7.4, 8.0 и 8.1 доступны отдельные исправления исходного кода и некоторые обновления от сторонних поставщиков. Windows-сборки PHP дополнительно пересобрали 26 октября с обновлённым Brotli 1.2.1. Владельцам приложений на Node.js, Python и .NET необходимо проверить не только основные среды выполнения, но и встроенные библиотеки, программные зависимости и контейнерные образы.
Главный итог прошедшей недели заключается не в том, что интернет избежал катастрофы, а в изменении самого процесса поиска уязвимостей. ИИ помогает исследователям обнаруживать старые ошибки в широко распространённом программном обеспечении, но те же возможности постепенно становятся доступны злоумышленникам. PHP2Shell и Brotli пока не вызвали подтверждённой волны массовых компрометаций, однако рассчитывать на длительный запас времени между публикацией патча и появлением работающей атаки становится всё опаснее.