Основная информация
Voyager, популярный PHP-пакет с открытым исходным кодом для управления приложениями Laravel, оказался под угрозой из-за ряда критических уязвимостей. Платформа предоставляет удобный интерфейс администратора и поддерживает множество функций, таких как управление медиа, пользователями и выполнение различных операций.В рамках регулярного анализа кода через SonarQube Cloud, исследователи обнаружили произвольную уязвимость записи файлов, которая может привести к удаленному выполнению кода (Remote Code Execution, RCE).
Описание уязвимостей
- Произвольная запись файлов (CVE-2024-55417)
При загрузке файла через /admin/media/upload Voyager использует метод getMimeType() для проверки типа загружаемого контента. Однако этот механизм можно обойти с помощью так называемых полиглот-файлов — файлов, которые одновременно содержат допустимое расширение (например, изображение) и вредоносный код PHP.
Это позволяет злоумышленникам загружать и выполнять произвольные скрипты на сервере при наличии определённых прав администратора. - XSS-уязвимость (CVE-2024-55416)
Конечная точка /admin/compass предоставляет возможность выполнения определённых действий, таких как удаление файлов. Если злоумышленник создаёт специально сформированный URL, а пользователь Voyager нажимает на него, можно выполнить произвольный JavaScript-код. - Произвольное удаление и утечка файлов (CVE-2024-55415)
В компоненте VoyagerCompassController@index отсутствует корректная нормализация пути файлов. Это позволяет злоумышленнику удалять произвольные файлы на сервере или получить их содержимое, манипулируя аутентифицированным пользователем.
Влияние
- Удалённое выполнение произвольного кода на сервере
- Утечка конфиденциальных данных
- Удаление важных файлов, что может нарушить работу серверов
Реакция разработчиков
Несмотря на многочисленные попытки исследователей связаться с сопровождающими проект через электронную почту и GitHub, ответа не последовало. По истечении 90-дневного окна раскрытия информации исследователи были вынуждены опубликовать детали публично, чтобы пользователи могли принять меры по защите своих систем.Рекомендации по защите
- Ограничить доступ к административным функциям Voyager
- Проверить список разрешённых типов MIME и расширений файлов
- Реализовать защиту от CSRF и XSS
- Следить за обновлениями пакета и применять возможные патчи
Хронология событий
- 2024-09-11: Первое уведомление разработчикам Voyager о проблемах
- 2024-10-20: Повторное уведомление
- 2024-11-28: Открытие отчёта о безопасности через GitHub
- 2025-01-21: Публикация отчёта для общественности
Пользователям Voyager рекомендуется проявлять осторожность и принимать дополнительные меры безопасности до выхода официального патча.
Источник