Две уязвимости в PHP-фреймворке Laravel дают атакующему доступ к чужим учётным записям и позволяют стереть данные из базы. Первая обходит проверку токена во встроенной защите API и пускает в систему без действующего токена. Вторая превращает запрос на чтение в удаление содержимого связанной таблицы. Затронуты приложения на пакете laravel/framework в ветках 12 и 13 младше исправленных выпусков. Конечные точки, закрытые проверкой токена, открываются для входа под произвольным существующим пользователем. Чтение с подгрузкой связанных записей приводит к необратимой потере данных.
Обход проверки токена и уничтожение данных в Laravel
Обе проблемы описаны в бюллетенях Laravel GHSA-f9x3-7vq9-cph6 и GHSA-5wcm-3v2w-8362 от 19 октября 2026 года. Французское агентство CERT-FR включило их в сводку 20 октября. Идентификаторы CVE ни одной из уязвимостей пока не присвоены, сведений об использовании в реальных атаках в бюллетенях нет. Границы уязвимых версий различаются. Обход аутентификации затрагивает выпуски ниже 12.68.0 в ветке 12 и ниже 13.29.0 в ветке 13. Разрушение данных касается диапазона от 12.45.0 до 13.27.0, поэтому часть установок уязвима только ко второй проблеме. Исправления вышли в 12.68.0 и 13.29.0, так что одна установка свежего выпуска закрывает обе уязвимости сразу.
Обход аутентификации в защите API по токену
Встроенная защита сверяет предъявленный токен с записью в таблице пользователей. При конфигурации на MySQL или MariaDB нестроковое значение токена обрабатывается не так, как ожидает код. В результате запрос находит чужую запись, и вход проходит успешно, хотя валидного токена у атакующего нет. Уровень опасности Laravel оценивает как критический по шкале CVSS 4.0. Вектор сетевой, сложность низкая, привилегии и действия пользователя не нужны. Одно условие всё же есть: эксплуатация зависит от параметров базы данных. Любой маршрут под уязвимой защитой доступен без токена, поэтому последствием становится захват учётной записи.
Разрушение данных при подгрузке связанных записей
Вторая уязвимость связана с механизмом подгрузки связанных записей: приложение одним обращением достаёт объект и связанные с ним строки из другой таблицы. Если конечная точка предназначена только для чтения, пользователь с правами чтения всё равно может сформировать запрос, который вызовет удаление. Связанная таблица очищается, а восстановить её можно только из резервной копии. Прав записи для этого не требуется, значит, ограничение ролей не защищает. Laravel оценивает проблему как среднюю по шкале CVSS 3.1: вектор сетевой, сложность низкая, влияние на целостность и доступность при нулевом влиянии на конфиденциальность.
Обновление до 12.68.0 или 13.29.0
Пакет laravel/framework обновляют до 12.68.0 в ветке 12 либо до 13.29.0 в ветке 13. Выпуск 13.27.0 закрывает только проблему с удалением данных, поэтому для полной защиты его недостаточно. После установки проверяют маршруты, которые работают через встроенную защиту на MySQL или MariaDB: до обновления они доступны без токена. Для конечных точек только для чтения временная мера - убрать подгрузку связанных записей из ответа или закрыть их проверкой права на запись. Резервные копии связанных таблиц держат актуальными, иначе очистка останется необратимой. Официальных обходных мер вендор в бюллетенях не приводит, поэтому обновление остаётся основным действием.
Обе уязвимости лежат в слое, который разработчики редко проверяют отдельно: во встроенной защите API и в работе с базой данных. Фреймворк берёт на себя сверку токена и построение запросов, поэтому ошибка в его коде затрагивает сразу все приложения на уязвимой версии. Разница в оценках - критическая и средняя - не меняет вывода. Октябрьские выпуски закрывают обе проблемы, и откладывать их установку нет причин.
Ссылки
- https://github.com/laravel/framework/security/advisories/GHSA-f9x3-7vq9-cph6
- https://github.com/laravel/framework/security/advisories/GHSA-5wcm-3v2w-8362