Критическая уязвимость 10/10 в компоненте LaRecipe фреймфорка Laravel
Командой SecurityRadar в рамках одного из исследований проекта клиента была выявлена критическая уязвимость Server-Side Template Injection (SSTI), которая ведет к полной компрометации целевой системы через Remote Code Execution (RCE) в компоненте LaRecipe фреймфорка Laravel.
Основная причина уязвимости — использование метода request()->getRequestUri()
в функции replaceLinks
класса LaRecipe\Models\Documentation
. Этот метод небезопасен, поскольку включает в свой вывод управляемую пользователем строку запроса. Атакующий может создать URL-адрес с вредоносной нагрузкой в строке запроса, которая затем будет встроена в содержимое документации. При рендеринге этого содержимого шаблонизатором Blade вредоносная нагрузка выполняется на сервере.
Патч, устранаяющий уязвимость CVE-2025-538331 доступен с версии v2.8.1 и заменяет вызов метода request()->getRequestUri()
на метод request()->getPathInfo()
. Метод getPathInfo()
возвращает только путь к запросу, исключая строку запроса, что предотвращает внедрение вредоносного кода шаблона.
Эксплуатация этой уязвимости достаточно простая и не требует никаких дополнительных прав, а нужна только доступная страница документации и тогда эксплуатация сводится к 1 GET запросу вида
GET /docs/1.0/overview?{{passthru("id")}}
Базовые метрики по CVSS v3: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H