Архив метки: TrailOfBits

Как The PHP Foundation обнаружили RCE-уязвимости PHP2Shell (CVE-2026-109618, CVE-2026-109619) и почему злоумышленники узнали о них раньше срока

Как The PHP Foundation обнаружили RCE-уязвимости PHP2Shell (CVE-2026-109618, CVE-2026-109619) и почему злоумышленники узнали о них раньше срока

Как The PHP Foundation обнаружили RCE-уязвимости PHP2Shell (CVE-2026-109618, CVE-2026-109619) и почему злоумышленники узнали о них раньше срока. Возможность эксплуатации обеих уязвимостей была наглядно продемонстрирована исследователями. Обе уязвимости затрагивают управление памятью и обработку ошибок - ключевые компоненты PHP, поэтому их устранение осложнялось необходимостью сохранить обратную совместимость и производительность, а также избежать изменений во множестве сторонних расширений.

В 2024 году PHP впервые за много лет прошёл внешний аудит безопасности, профинансированный Sovereign Tech Agency и организованный через OSTIF. Аудит провела компания Quarkslab. При устранении одной из выявленных проблем разработчик ядра PHP, работавший по контракту с PHP Foundation, обнаружил первые признаки проблемы OOM, лежащей в основе CVE-2026-109618. Тогда предположили возможность эксплуатации этой проблемы, но конкретные векторы атаки найти не удалось, и внимание переключилось на другие подтверждённые уязвимости с очевидными последствиями.

В мае 2026 года организация создала команду безопасности экосистемы. Ранее The PHP Foundation совместно с Alpha-Omega просканировали код PHP с помощью Claude Mythos от Anthropic. Кроме того, использовали Daybreak Red от OpenAI для проверки сообщений об уязвимостях и эксплоитов, а также сборки с санитайзерами и среды воспроизведения ошибок.

The PHP Foundation обеспечили участие PHP в программе Patch the Planet. 30 июля 2026 года компания Calif начала аудит PHP. 11 августа исследователь Ryan A сообщил об уязвимости, позволяющей удалённо выполнять код без дополнительных условий. Её первопричина совпадала с причиной проблемы OOM, обнаруженной в 2024 году. В тот же день о ней независимо сообщили эксперты OpenAI. Позже OpenAI (18 сентября) и Wiz (24 августа) выявили дополнительные векторы атаки. Аудит PHP также проводили Trail of Bits. Эти сообщения помогли оценить полный масштаб последствий проблемы OOM. С 11 августа её устранение стало главным приоритетом для специалистов The PHP Foundation по безопасности. ИИ помогает проверять сообщения и группировать их по общей первопричине, но все решения принимают люди, которые также участвуют в разработке каждого патча.

Согласованное раскрытие информации об этих уязвимостях проходило успешно до 20 октября (за два дня до запланированной даты выпуска 22 октября). После чего начались проблемы:

🔻 20 октября около 15:00 UTC в сети появились идентификаторы двух CVE с неверным временем выпуска и ошибочной оценкой CVSS 10,0 вместо 9,2. Технические подробности не утекли, поэтому предварительное объявление перенесли на 19:30 UTC, а выпуск исправлений - с 22 на 21 октября, чтобы Linux-вендоры успели подготовить пакеты для обновления.

🔻 20 октября около 20:00 UTC компания Calif случайно опубликовала видео с демонстрацией PoC-а и дополнительными сведениями об уязвимостях. Несмотря на удаление, видео распространили в соцсетях, ускорив разработку и распространение новых PoC-ов 21 октября.

🔻 Рекомендации по снижению рисков, переданные операторам критической инфраструктуры 20 октября около 23:00 UTC, также могли утечь. Команда безопасности PHP отслеживала и проверяла появлявшиеся PoC-и, но до выпуска и публичного раскрытия информации не обнаружила работающих эксплоитов.

🔻 21 октября в 07:41 UTC, более чем за шесть часов до срока, компания Chainguard нарушила эмбарго и опубликовала образы с исправлением. Это позволило злоумышленникам изучить патч до официального выпуска и свело на нет недели работы над согласованным раскрытием уязвимостей. 🤷‍♂️

Возможно, что эти и другие утечки помогли злоумышленникам подготовить эксплоиты заранее: эксперты Amazon зафиксировали попытку эксплуатации PHP2Shell ещё 17 октября, а 21 октября обнаружили новые атаки с нескольких IP-адресов.