Две ошибки в языке программирования PHP за несколько дней вывели из строя государственные, медицинские и новостные ресурсы сразу в нескольких странах. В Нидерландах перестали открываться сайты парламента, порта Роттердама, ряда больниц и даже Национального центра кибербезопасности. Финляндия отключила часть правительственных сервисов, а французское МВД велело закрыть административные порталы местных властей. В Великобритании министр технологий баронесса Ллойд сообщила в палате лордов, что на время установки исправлений недоступны 32 государственные службы, а еще четыре работают частично. Полного списка правительство не публиковало, но известно, что отключился сайт Бюджетного управления. В Японии, как сообщает агентство Jiji, экстренные работы начал банк Mizuho, один из крупнейших в стране, а MUFG Bank остановил часть операций в онлайн-банке. Отключали из осторожности: обе дыры позволяют без пароля запустить на чужой машине собственный код, а после публикации подробностей воспользоваться ими стало проще.
Ошибки находятся в самом PHP, движке, который выполняет серверную часть сайта. На нем работают WordPress, Drupal, Joomla и MediaWiki, на которой построена Википедия. Поэтому безупречный код и свежие плагины не спасают, ведь шатким оказался фундамент. Обе уязвимости получили 9,2 балла по шкале CVSS (так оценивают опасность «дыр»: максимум 10, а от 9 начинается критический уровень), а исследователи Wiz (компания по безопасности облачных сервисов) добавляют еще одну угрозу: из памяти работающего сервера можно достать пароли, ключи доступа и сертификаты. Так было в 2014 году с Heartbleed, ошибкой в библиотеке шифрования OpenSSL. Она позволяла читать память серверов, и сотни тысяч компьютеров пришлось срочно обновлять. Такую параллель проводят и сами разработчики PHP, называя PHP2Shell (так прозвали обе «дыры» вместе: путь от PHP до командной оболочки чужой машины, то есть до полного управления ею) самой серьезной проблемой безопасности за десять с лишним лет. Эти же исследователи проверили связку на свежих установках WordPress, Drupal и Joomla, и рабочая атака сработала на всех трех.
По данным W3Techs, сервиса, который следит за используемыми в Интернете технологиями, PHP работает на 69,3% сайтов, у которых удалось определить язык, управляющий их внутренней частью. Серверный JavaScript держит около 8%, Ruby около 7%, Java около 5%, Python чуть больше 1%. Отсюда громкая цифра «70% Интернета» из отчета Wiz. Но она, скорее, показывает популярность языка и ничего не говорит о числе уязвимых или тем более взломанных сайтов. Опасны версии начиная с PHP 5.4, но результат зависит от настроек сервера, и сильнее всего рискует Apache с модулем mod_php (веб-сервер, у которого PHP встроен прямо в рабочие процессы). Специалисты нидерландской фирмы Sansec, защищающей Интернет-магазины, уточняют, что массовый взлом оказался сложнее ожидаемого, потому что нападающему нужно знать устройство конкретной машины.
«Дыры нашел Райан Остин из американской компании Calif, который в августе проверял исходный код PHP вместе с моделью GPT-5.6 Sol от OpenAI. Аудит оплатила OpenAI по программе Patch the Planet (она ищет ошибки в самых распространенных открытых проектах). Остин вспоминает, что все началось с догадки, а проверить ее без ИИ ему бы не удалось. Глава Calif Тай Зыонг добавляет, что проблемное место замечали годами, но считали его слишком сложным для настоящего взлома. Модель помогла найти путь от сбоя к действующей атаке, хотя искал и проверял результат человек.
В первой ошибке серверу посреди обращения не хватает оперативной памяти, и PHP экстренно прекращает работу, не успев довести до конца свои внутренние данные. Часть из них остается в полусобранном виде, как недостроенный дом. Затем включается механизм очистки (он убирает из памяти все лишнее) и принимает такие обломки за исправные объекты, а следующий запрос ими пользуется. Во второй после аварийного завершения остаются ссылки на уже освобожденную область, и ближайшее обращение к тому же рабочему процессу может ими воспользоваться. В отдельных настройках атаке хватало нескольких десятков запросов, а на сложных системах она занимала часы. Исправление вышло огромным: затронуты почти 200 файлов, добавлено больше 10 тысяч строк кода. Независимо от Calif уязвимости нашла команда Wiz при помощи Gemini 4 Argon и GPT-5.6 Sol.
После находки уязвимостей обновления готовили втайне, чтобы владельцы сайтов получили исправления раньше, чем подробности станут публичными. Однако произошла утечка, информация попала на форум Hacker News, и патчи пришлось выпускать досрочно. Как сообщили в PHP Foundation (организация, которая развивает язык), исследователи Calif вдобавок по ошибке выложили видео с демонстрацией атаки. Ролик удалили, но он успел разойтись по хакерским форумам. Теперь идет гонка: злоумышленники сравнивают старый код с новым, выясняют, что именно починили, а ИИ заметно ускоряет эту работу. Директор по информационной безопасности Amazon Си Джей Мозес предупреждает в блоге компании, что нападающие способны действовать через считаные часы или даже минуты после раскрытия технических деталей уязвимости.
Первые попытки заметили еще до официального объявления. Сеть приманок Amazon под названием MadPot (серверы, которые притворяются уязвимыми и записывают всех, кто к ним стучится) зафиксировала такую пробу за четыре дня до выхода исправлений, а в самой компании пока не понимают, откуда нападавшие узнали об ошибках. По словам главы Cloudflare Мэтью Принса, до публикации сведений его сервис видел тысячи попыток, а спустя несколько часов их число дошло до миллионов. Подбирать запросы так, чтобы обойти защиту, нападавшие учатся на отказах, замечает Cloudflare.
Достоверных сообщений об успешных взломах пока нет. Огромное число попыток говорит лишь о массе подозрительных запросов, а сколько машин захвачено, не знает никто. Исследователи watchTowr (фирмы, изучающей уязвимости), чьи ловушки засекли атаки, заявили, что ни одна из них не увенчалась успехом. Национальный центр кибербезопасности Нидерландов проверяет первые сигналы о возможных взломах, пришедшие по линии международной сети, и предупреждает, что ситуация способна быстро ухудшиться. Есть и неприятная оговорка от аналитиков Recorded Future: атака идет на уровне самого PHP, глубже WordPress и плагинов, поэтому в журналах сайта следов может остаться мало. Ущерб пока измеряется простоями, ведь оценок убытков никто не публиковал, а британские власти подчеркивали, что отключение не означает взлома.
Закрыть дыры можно только обновлением самого PHP, а патчи для WordPress, Drupal и плагинов тут не помогают. Исправления вошли в выпуски 8.5.12, 8.4.27, 8.3.36 и 8.2.35. Для 8.1 и более ранних веток обычных релизов нет, но вышли минимальные заплатки для 7.4, 8.0 и 8.1, а Ubuntu и другие дистрибутивы Linux собрали свои пакеты для устаревших систем. Версию на сервере показывает команда php -v, а владельцам сайтов на виртуальном хостинге стоит спросить провайдера. После установки нужно перезапустить рабочие процессы PHP, иначе в оперативной памяти останется прежний код. Если обновить сразу невозможно, разработчики советуют временные меры. Первая отключает отслеживание прогресса загрузки файлов в сессиях (session.upload_progress.enabled = 0), вторая в PHP 8.5 убирает трассировку при фатальных ошибках (fatal_error_backtraces = 0). Полной защиты они не дают, поэтому ведомства США, Евросоюза и Великобритании рекомендуют изолировать от сети то, что нельзя обновить немедленно.
Оперативно сработал отечественный провайдер hoster.by. Он сразу же по распоряжению госоргана, который координирует кибербезопасность в стране, закрыл входящие соединения из-за рубежа. Внутри Беларуси страницы открывались, из-за границы были недоступны, а для поисковых роботов Яндекса, Google и других сделали исключение. К десяти утра следующего дня провайдер сообщил об установке экстренных исправлений и снятии ограничений для серверов виртуального хостинга. Заявление касается лишь инфраструктуры самого hoster.by, поэтому делать из него вывод об обновлении всех сайтов страны нельзя. Случаев взлома местных ресурсов через PHP2Shell публично не называли. Владельцам сайтов советуют перейти на PHP 8.3 и новее, а при подозрениях обращаться в центр кибербезопасности.
