CVE-2018-15133
Laravel Laravel Framework
2024-01-16
Laravel Framework contains a deserialization of untrusted data vulnerability, allowing for remote command execution. This vulnerability may only be exploited if a malicious user has accessed the application encryption key (APP_KEY environment variable).
Технический анализ и план устранения
Суть уязвимости
CVE-2018-15133 — это критическая уязвимость десериализации ненадежных данных в Laravel Framework версий 5.5.40 и 5.6.x до 5.6.29. Проблема кроется в механизме обработки HTTP-заголовка X-XSRF-TOKEN.
Если злоумышленнику известен ключ шифрования приложения (APP_KEY), он может создать специально сформированную и зашифрованную полезную нагрузку. При получении запроса Laravel пытается расшифровать и десериализовать значение токена. Из-за отсутствия должной проверки типов данных до десериализации, это приводит к выполнению произвольного PHP-кода (RCE) в контексте веб-сервера.
Как исправить
Основным способом устранения является обновление фреймворка до безопасной версии, в которой добавлена проверка типа данных перед десериализацией.
- Обновите Laravel Framework через Composer до версии 5.5.42, 5.6.30 или выше:
composer update laravel/framework
- Если вы используете версию 5.6, убедитесь, что в
composer.jsonуказана версия не ниже:
"laravel/framework": "5.6.30"
- После обновления очистите кэш конфигурации:
php artisan config:clear
Временные меры
Если немедленное обновление невозможно, необходимо минимизировать риски следующими действиями:
- Смена ключа приложения (Rotation):
Поскольку эксплуатация невозможна без знания
APP_KEY, его замена аннулирует текущие векторы атаки. Внимание: это приведет к выходу всех пользователей из системы и невозможности расшифровать старые данные, зашифрованные этим ключом.
php artisan key:generate
-
Ограничение доступа к файлу
.env: Убедитесь, что файл конфигурации недоступен извне и имеет строгие права доступа в файловой системе. -
Проверка логов: Настройте мониторинг на предмет подозрительных запросов с аномально длинными заголовками
X-XSRF-TOKEN. -
Использование WAF: Настройте правила Web Application Firewall для блокировки подозрительных сериализованных объектов в HTTP-заголовках.