Дайджесты новостей
Сюрреалистический натюрморт со сканирующим световым лучом, вскрывающим уязвимость нулевого дня в монолите кода PHP

ИИ на страже веб-инфраструктуры: как рассуждающие модели OpenAI обнаружили критические 0-day в legacy-коде PHP

На чем держится современный интернет? Если отбросить модные фронтенд-фреймворки и облачные микросервисы, под капотом подавляющего большинства публичных сайтов обнаружится старый добрый PHP. На нем работают WordPress, Drupal, Magento, тысячи интернет-магазинов и правительственных порталов — более 70% веб-серверов планеты.

Казалось бы, кодовая база интерпретатора PHP на языке Си за три десятилетия вылизана до блеска. Ее круглосуточно сканируют статические анализаторы (SAST), прогоняют через фаззинг AFL++ и тестируют ведущие специалисты по информационной безопасности. Найти там фундаментальную ошибку нулевого дня — событие из разряда научной фантастики.

Тем не менее 21 октября 2026 года организация PHP Foundation выпустила экстренный бюллетень безопасности. Исследователи компаний Calif и Wiz при непосредственном участии рассуждающих моделей OpenAI (семейство GPT-5.6 Sol / o-series) в рамках инициативы «Patch the Planet» обнаружили связку критических уязвимостей PHP2Shell, получивших номера CVE-2026-109618 и CVE-2026-109619 с катастрофическим рейтингом опасности CVSS 9.2.

Механика уязвимости: призрак из 2004 года

Самое поразительное в этой истории — возраст найденных багов. Уязвимый код мирно дремал в репозитории ядра PHP с 2004 года — более двадцати лет! Классические сканеры кода не замечали его, потому что ошибка проявлялась только при очень специфической последовательности редких системных событий.

Инженерный чертеж карты оперативной памяти с изолированным освобожденным блоком Use-After-Free и сбойным указателем

В чем заключалась уязвимость? Речь идет об ошибке класса Use-After-Free (UAF) — обращении к указателю в оперативной памяти после того, как выделенная под него память уже была освобождена операционной системой:

  1. CVE-2026-109618: сбой возникал в десериализаторе прогресса загрузки файлов (upload-progress unserializer). Если клиент обрывал соединение в определенной фазе передачи тела HTTP-запроса, память очищалась, но кэшированный дескриптор фрейма оставался доступным для повторного чтения;
  2. CVE-2026-109619: ошибка в связке с путаницей типов OPcache при формировании бэктрейса фатальной ошибки нехватки памяти (out-of-memory).

В связке с популярным веб-сервером Apache и модулем mod_php атакующий получал возможность сформировать специально сконструированный HTTP-запрос, который приводил к удаленному исполнению кода без авторизации (Unauthenticated RCE). И самое опасное: вредоносный код исполнялся в адресном пространстве процесса веб-сервера еще до того, как вступали в силу проверки прав доступа пользовательского PHP-приложения.

О том, как эволюционируют среды выполнения веб-кода, мы писали в материале Эволюция веб-браузеров: от просмотра страниц к операционной среде ИИ-агентов.

Почему рассуждающие модели увидели то, что пропустили люди

Как языковая модель справилась с задачей, над которой двадцать лет безуспешно бились автоматические фаззеры? Обычные статические анализаторы проверяют код по шаблонам: ищут небезопасные функции вроде strcpy или явные утечки памяти. Но они не способны удерживать контекст сложной цепочки асинхронных вызовов через десять уровней абстракции.

Модели рассуждений (Reasoning Models) работают принципиально иначе. Они способны мысленно эмулировать исполнение кода Си шаг за шагом, отслеживая состояние указателей в куче (heap) при возникновении сбойных сценариев:

  • Модель задалась вопросом: «Что произойдет со структурой trace, если функция free_memory_pool() вызовется в момент обработки сигнала OOM?»;
  • Проследив граф выполнения, алгоритм выявил скрытое разыменование нулевого указателя;
  • И сразу же сгенерировал воспроизводимый тест-кейс (Proof of Concept), подтвердивший наличие уязвимости.

Архитектурные основы систем глубокого рассуждения мы анализировали в статье Платформа Dot и анонсы OpenAI DevDay: переход к автономным рабочим агентам.

Взгляни на упрощенную схему уязвимого участка ядра и официальный патч:

/* Уязвимый фрагмент ядра PHP (логика до исправления) */
void php_handle_fatal_error(php_backtrace_t *trace) {
    if (trace->state == OUT_OF_MEMORY) {
        free_memory_pool(); // Освобождение пула памяти
        // КРИТИЧЕСКАЯ ОШИБКА: чтение из уже освобожденного адреса (UAF)
        log_backtrace_details(trace->cached_frame); 
    }
}

/* Исправленный безопасный фрагмент (патч PHP Foundation) */
void php_handle_fatal_error_patched(php_backtrace_t *trace) {
    if (trace->state == OUT_OF_MEMORY) {
        // Копируем критические данные в изолированный стек до очистки кучи
        php_safe_frame_t safe_frame;
        copy_frame_to_static_buffer(&safe_frame, trace->cached_frame);
        
        free_memory_pool();
        log_backtrace_safe(&safe_frame); // Безопасное логирование
    }
}

Что делать системным администраторам прямо сейчас

PHP Foundation оперативно выкатила патчи для всех поддерживаемых веток интерпретатора: PHP 8.5.12, 8.4.27, 8.3.36 и 8.2.35.

Проверь версию PHP на своих серверах прямо в терминале:

php -v
# Вывод должен соответствовать защищенным релизам, собранным после 21 октября 2026 года:
# PHP 8.4.27 (cli) (built: Oct 21 2026 14:02:10)
Срочные превентивные меры

Если ты не можешь обновить бинарные пакеты PHP сиюминутно, немедленно переведи серверы с устаревшего модуля mod_php на связку Nginx + php-fpm с включенной изоляцией процессов и выставленным лимитом памяти memory_limit, либо активируй правила WAF от Cloudflare, блокирующие аномальные запросы десериализации.

Оборотная сторона медали

Способность рассуждающего ИИ находить 20-летние нулевые дни в инфраструктурном софте — это не только щит, но и меч. Если исследователи используют эти алгоритмы для защиты, то злоумышленники неизбежно применят их для автоматического синтеза эксплойтов. Скорость закрытия уязвимостей в 2026 году становится вопросом выживания бизнеса.

История с PHP2Shell — наглядный сигнал всей индустрии. Мы вступили в эпоху, когда аудит безопасности критической инфраструктуры переходит от ручного труда к масштабным автономным ИИ-сканерам.