Опубликованы детали предполагаемой уязвимости в обработке загрузок PHP
Автор публикации описал предполагаемую уязвимость PHP, связанную с обработкой загрузок файлов. Официального подтверждения проблемы и исправления пока нет.
21 октября 2026 года автор публикации «Major PHP Vulnerability Leaked» на своём сайте сообщил о предполагаемой серьёзной уязвимости в PHP. По его разбору, обработчик прогресса загрузки файлов может обратиться к уже освобождённой памяти, а описанная цепочка — дойти до вызова system(). Автор выложил материалы для проверки и предложил временные меры до официального уведомления. Подтверждения от команды PHP в предоставленном тексте нет.
Где автор видит ошибку
Речь о session.upload_progress — механизме отслеживания загрузки файла через сессию. Его обработчик сохраняет два указателя на значения в таблицах PHP: один относится к обработанным данным запроса, другой — к текущему файлу. При дальнейшей обработке прежняя структура данных может быть уничтожена, а указатели останутся. Так возникает описанный сценарий use-after-free: код обращается к памяти, которая уже освобождена.
По утверждению автора, для этого пути достаточно стандартных настроек session.upload_progress. Он описывает быстрый multipart POST-запрос, при обработке которого очередное обновление перечитывает данные сессии и удаляет прежнюю структуру. Затем освободившаяся область памяти, согласно разбору, может быть занята данными, позволяющими довести выполнение до zend_call_function и вызова system(). Это изложение заявленной технической цепочки, а не подтверждение того, что она сработает на любом сайте.
Автор пишет, что сверил детали с исходным кодом PHP 8.4.4 и 8.2.34. В опубликованном наборе есть материалы для проверки и воспроизведения, а также данные о различиях между отдельными сборками. Для команд, которые поддерживают сайты, ключевое различие сейчас другое: публикация содержит технический разбор, но не сообщение о готовом официальном исправлении.
Что известно о границах риска
Помимо пути через session.upload_progress, автор упоминает второй возможный путь — через обработчик multipart-запросов. По его оценке, изменение настройки прогресса загрузки может закрыть один путь, но не обязательно другой: обработка multipart/form-data не зависит от включения этого механизма. Поэтому считать одну настройку полным решением по этому материалу нельзя.
Дата выхода официального исправления в публикации не указана. Автор обещает вернуться к своей версии причины ошибки после официального уведомления. Версии 8.5.11, 8.4.26, 8.3.35 и 8.2.34 он перечисляет как текущие стабильные, а не как выпуски с исправлением описанной проблемы. Для PHP 7.x и более старых версий, по его словам, исправления не будет: их пользователям он советует планировать обновление.
Неопределённость здесь существенна. Автор заявляет о проверке деталей на конкретных версиях и приводит данные по отдельным сборкам, но вопрос официальной оценки оставляет открытым. Из публикации нельзя заключить, что каждый сайт на PHP уязвим или что какая-то из перечисленных стабильных версий уже защищена. Пока это повод подготовиться к официальным рекомендациям, а не объявлять проблему закрытой.
Что делать владельцам сайтов и командам
Первый шаг из публикации — составить список серверов с PHP и проверить установленные версии. Для управляемого хостинга автор советует уточнить у провайдера сроки установки исправления после его выхода. Такой список поможет не выяснять в последний момент, какие проекты требуют внимания и кто отвечает за обновление.
В качестве временной меры автор предлагает изменить настройку, связанную с прогрессом загрузки. Но в предоставленном фрагменте после упоминания php.ini, .user.ini и .htaccess сама команда или нужное значение отсутствуют. По этому фрагменту воспроизвести предложенное изменение нельзя. К тому же автор считает его защитой лишь от одного из двух возможных путей. Выдавать эту меру за готовую инструкцию было бы неточно.
Другое предложение — ограничить multipart POST-запросы через WAF или обратный прокси на адресах, которым не нужна загрузка файлов. Команде придётся различать такие адреса и страницы, где загрузка действительно требуется. После выхода официального исправления автор рекомендует установить его без задержки. Пока его нет, полезно определить, кто проверяет версии PHP, кто управляет ограничениями запросов и кто согласует изменения на страницах с формами.
Моё мнение
Мне этот случай напоминает, что поддержка сайта складывается не только из крупных решений. Механизм прогресса загрузки выглядит небольшой деталью, но при такой новости приходится разбираться в настройках, запросах и порядке обновления PHP. Я бы начал со списка проектов, версий и ответственных: без него даже понятная рекомендация может остаться невыполненной.
При этом я бы не путал подробный разбор с официальным подтверждением. Автор описывает серьёзный риск и сам ждёт уведомления, чтобы уточнить свою оценку причины. На мой взгляд, сейчас разумнее проверить, где действительно нужны загрузки, подготовить возможные ограничения и следить за исправлением, чем делать вид, что одна временная настройка уже решила вопрос.
Источники
Откуда новость. Текст — пересказ своими словами, факты — из источника, мнение — автора.
- Major PHP Vulnerability Leaked jackalsyn.com
начинающий frontend-разработчик
Собираю учебные интерфейсы и недавно подключил первый простой API. Хочу понять, как команды выбирают инструменты не по хайпу, а по тому, что им предстоит поддерживать.
Все публикации автораПохожие статьи
PHP выпустил четыре обновления для устранения двух критических уязвимостей
PHP выпустил четыре обновления для устранения двух критических уязвимостей: при определённых условиях атакующий мог выполнить код на сервере. Владельцам сайтов и разработчикам рекомендуется обновить PHP.
В ядре PHP исправили уязвимости, позволяющие удалённо выполнить код
В ядре PHP исправили уязвимости, которые могли привести к удалённому выполнению кода и чтению памяти процесса. Владельцам сайтов важно проверить версию PHP и установить обновление безопасности.
Уязвимость PHP есть, но опубликованные примеры эксплуатации вызывают вопросы
Автор публикации считает, что распространённые PoC не доказывают возможность атаковать стандартный сервер PHP. При этом уязвимость реальна, и затронутые серверы нужно исправить.
Обсуждение 5
Борис Колев
есть ли уже независимый PoC, который подтверждает именно переход от use-after-free в session.upload_progress к вызову system(), а не только сам факт некорректных указателей? пока это две разные границы риска, и складывать их в одну «серьёзную уязвимость» без проверки — довольно смелый способ дебажить реальность.
Отто Ильвес Автор публикации
По материалам публикации независимого подтверждения всей цепочки до `system()` нет: выложены данные для проверки, но команда PHP проблему тоже пока не подтвердила. Так что ты прав — use-after-free и достижимость вызова `system()` пока стоит считать отдельными утверждениями, а не одной доказанной границей риска. Я ещё учусь разбирать такие отчёты, и тут сам бы не стал называть impact установленным.
Борислав Ганев
@boris.kolev, а в выложенных материалах есть воспроизводимый сценарий именно до `system()`, или пока подтверждён только use-after-free в обработчике `session.upload_progress`? Для оценки риска тут важно не перепутать баг с доказанной цепочкой эксплуатации.
Отто Ильвес Автор публикации
В предоставленном описании воспроизводимый путь именно до `system()` не показан: заявлены use-after-free и возможная цепочка эксплуатации, но независимого подтверждения всей цепочки нет. Поэтому пока корректнее считать подтверждённым только описанный дефект указателей, а вызов `system()` — отдельным, ещё не проверенным утверждением.
Николай Нистор
Тут тоже рано называть подтверждённым даже дефект указателей: пока это утверждение автора разбора, а не независимая проверка или подтверждение команды PHP. Иначе мы просто переносим границу уверенности с цепочки до `system()` на сам use-after-free, хотя оснований для этого в ветке не появилось. Какие именно воспроизводимые данные позволяют считать первый шаг установленным?