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) в контексте веб-сервера.

Как исправить

Основным способом устранения является обновление фреймворка до безопасной версии, в которой добавлена проверка типа данных перед десериализацией.

  1. Обновите Laravel Framework через Composer до версии 5.5.42, 5.6.30 или выше:
composer update laravel/framework

  1. Если вы используете версию 5.6, убедитесь, что в composer.json указана версия не ниже:
"laravel/framework": "5.6.30"

  1. После обновления очистите кэш конфигурации:
php artisan config:clear

Временные меры

Если немедленное обновление невозможно, необходимо минимизировать риски следующими действиями:

  1. Смена ключа приложения (Rotation): Поскольку эксплуатация невозможна без знания APP_KEY, его замена аннулирует текущие векторы атаки. Внимание: это приведет к выходу всех пользователей из системы и невозможности расшифровать старые данные, зашифрованные этим ключом.
php artisan key:generate

  1. Ограничение доступа к файлу .env: Убедитесь, что файл конфигурации недоступен извне и имеет строгие права доступа в файловой системе.

  2. Проверка логов: Настройте мониторинг на предмет подозрительных запросов с аномально длинными заголовками X-XSRF-TOKEN.

  3. Использование WAF: Настройте правила Web Application Firewall для блокировки подозрительных сериализованных объектов в HTTP-заголовках.