
सीवीई-2026-41089 नेटलॉगन सीएलडीएपी स्टैक ओवरफ्लो के लिए प्री-ऑथ PoC, जो UDP/389 के माध्यम से LSASS क्रैश/DC रिबूट को ट्रिगर करता है। इसमें एक्सप्लॉइट स्क्रिप्ट, मूल-कारण विश्लेषण, डिटेक्शन और शमन मार्गदर्शन शामिल है।
██████╗██╗ ██╗███████╗ ██╗ ██╗ ██╗ ██████╗ ██████╗
██╔════╝██║ ██║██╔════╝ ██║ ██║███║██╔═████╗██╔═████╗
██║ ██║ ██║█████╗ ███████║╚██║██║██╔██║██║██╔██║
██║ ╚██╗ ██╔╝██╔══╝ ██╔══██║ ██║████╔╝██║████╔╝██║
╚██████╗ ╚████╔╝ ███████╗ ██║ ██║ ██║╚██████╔╝╚██████╔╝
╚═════╝ ╚═══╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝
CLDAP स्टैक बफर ओवरफ्लो के माध्यम से Windows Netlogon रिमोट कोड निष्पादन
पोर्ट 389 पर भेजा गया एक विशेष रूप से तैयार UDP पैकेट किसी भी बिना पैच वाले Windows डोमेन कंट्रोलर पर LSASS के अंदर 528-बाइट स्टैक बफर को ओवरफ्लो कर देता है। LSASS क्रैश हो जाता है। DC लगभग 60 सेकंड में रीबूट हो जाता है। किसी भी क्रेडेंशियल की आवश्यकता नहीं है।
| हमला वेक्टर | UDP 389 (CLDAP), प्री-ऑथ, शून्य क्रेडेंशियल |
| प्रभाव | LSASS क्रैश, DC रीबूट, संभावित RCE |
| CWE | CWE-121 (स्टैक-आधारित बफर ओवरफ्लो) |
| CVSS वेक्टर | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| प्रकाशित | 12 मई 2026, Microsoft द्वारा |
python3 poc.py 10.0.50.21 corp.local
PoC एक सामान्य पिंग भेजता है, फिर 130-अक्षरों वाले उपयोगकर्ता नाम के साथ एक ओवरफ्लो पिंग भेजता है, फिर जाँचता है कि DC बच गया या नहीं। कुल लगभग 10 सेकंड।
डोमेन कंट्रोलर के रूप में कार्य करने वाले Windows Server संस्करण:
| सर्वर संस्करण | इसमें ठीक किया गया |
|---|---|
| 2012 / 2012 R2 | केवल ESU पैच |
| 2016 | 10.0.14393.9140 |
| 2019 | 10.0.17763.8755 |
| 2022 | 10.0.20348.5074 |
| 2022 23H2 | 10.0.25398.2330 |
| 2025 | 10.0.26100.32772 |
NlGetLocalPingResponse एक 528-बाइट स्टैक बफर आवंटित करता है और उसे BuildSamLogonResponse को सौंपता है। वह फ़ंक्शन सर्वर नाम, डोमेन नाम, GUID और हमलावर-नियंत्रित उपयोगकर्ता नाम को बफर में लिखने के लिए NetpLogonPutUnicodeString को कॉल करता है।
बग: NetpLogonPutUnicodeString को अधिकतम लंबाई बाइट्स में मिलती है, लेकिन वह इसे WCHAR काउंट के रूप में पढ़ता है। इस पथ से लिखा गया हर स्ट्रिंग अपेक्षित स्थान से दोगुना स्थान लेता है। CLDAP फ़िल्टर में "User" फ़ील्ड (130 wchars तक, वायर पर 260 बाइट्स) संयुक्त लेखन को 528-बाइट सीमा से आगे धकेल देता है।
I_NetLogonLdapLookupEx
-> NlGetLocalPingResponse // 528-byte stack buffer
-> LogonRequestHandler
-> BuildSamLogonResponse
-> NetpLogonPutUnicodeString // byte/WCHAR size confusion
python3 poc.py <target_ip> <domain_name> [options]
| फ़्लैग | विवरण | डिफ़ॉल्ट |
|---|---|---|
-l | उपयोगकर्ता नाम की लंबाई (अक्षरों में) | 130 |
-t | UDP recv टाइमआउट (सेकंड) | 5 |
-d | ओवरफ्लो और लाइवनेस जाँच के बीच विलंब (सेकंड) | 3 |
# Connectivity test (short username, no overflow)
python3 poc.py 10.0.50.21 corp.local
# Default overflow attempt
python3 poc.py 10.0.50.21 corp.local -l 130
# Larger payload, longer timeout for slow networks
python3 poc.py 10.0.50.21 corp.local -l 200 -t 10
Python 3.8+। कोई तृतीय-पक्ष पैकेज नहीं।
ओवरफ्लो DoS (LSASS क्रैश, DC रीबूट) का कारण बनता है। स्टैक भ्रष्टाचार RCE को सक्षम कर सकता है, लेकिन यह PoC DoS पर ही रहता है।
नेटवर्क। "User" फ़िल्टर विशेषता वाले 20-30 अक्षरों से अधिक लंबे CLDAP खोज अनुरोधों की तलाश करें। सामान्य DC लोकेटर पिंग छोटे सेवा खाता नामों का उपयोग करते हैं।
होस्ट। netlogon.dll से जुड़े LSASS क्रैश (इवेंट ID 1000) पर नज़र रखें। Netlogon डीबग लॉगिंग चालू करें:
nltest /dbflag:0x2080ffff
mov edx, 0x40 अधिकतम उपयोगकर्ता नाम की लंबाई आधी कर देता है)कानूनी। यह कोड अधिकृत सुरक्षा अनुसंधान और शिक्षा के लिए मौजूद है। केवल उन्हीं प्रणालियों पर परीक्षण करें जिनके आप मालिक हैं या जिनके परीक्षण की लिखित अनुमति आपके पास है। कंप्यूटर सिस्टम तक अनधिकृत पहुँच CFAA और अधिकांश क्षेत्राधिकारों में समकक्ष कानूनों का उल्लंघन है।