
CVE-2026-41089 PoC — Netlogon CLDAP स्टैक बफ़र ओवरफ़्लो (CVSS 9.8 CRITICAL)
██████╗██╗ ██╗███████╗ ██╗ ██╗ ██╗ ██████╗ ██████╗
██╔════╝██║ ██║██╔════╝ ██║ ██║███║██╔═████╗██╔═████╗
██║ ██║ ██║█████╗ ███████║╚██║██║██╔██║██║██╔██║
██║ ╚██╗ ██╔╝██╔══╝ ██╔══██║ ██║████╔╝██║████╔╝██║
╚██████╗ ╚████╔╝ ███████╗ ██║ ██║ ██║╚██████╔╝╚██████╔╝
╚═════╝ ╚═══╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝
विंडोज नेटलोगॉन रिमोट कोड एक्ज़ीक्यूशन CLDAP स्टैक बफर ओवरफ्लो के माध्यम से
पोर्ट 389 पर भेजा गया एक संशोधित UDP पैकेट किसी भी अपैच्ड विंडोज डोमेन कंट्रोलर पर LSASS के अंदर 528-बाइट के स्टैक बफर को ओवरफ्लो कर देता है। प्रक्रिया क्रैश हो जाती है। 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 माइक्रोसॉफ्ट द्वारा |
python3 poc.py 10.0.50.21 corp.local
तीन चरण: DC के जीवित होने की पुष्टि करने के लिए सामान्य पिंग, 130-अक्षर वाले उपयोगकर्ता नाम के साथ ओवरफ्लो पिंग, जीवितता जांच। लगभग 10 सेकंड लगते हैं।
हर विंडोज सर्वर संस्करण जो डोमेन कंट्रोलर के रूप में चल रहा है:
| सर्वर संस्करण | फिक्स इन |
|---|---|
| 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 को देता है। वह फंक्शन बफर में सर्वर नाम, डोमेन नाम, GUIDs और हमलावर-नियंत्रित उपयोगकर्ता नाम लिखने के लिए NetpLogonPutUnicodeString को कॉल करता है।
बग: NetpLogonPutUnicodeString को बाइट्स में अधिकतम लंबाई मिलती है, लेकिन यह इसे WCHAR काउंट के रूप में मानता है। इस पथ के माध्यम से लिखा गया प्रत्येक स्ट्रिंग अपेक्षित स्थान से दोगुना घेरता है। CLDAP फिल्टर में "User" फील्ड (अधिकतम 130 wchars, वायर पर 260 बाइट्स) संयुक्त लेखन को 528-बाइट सीमा से आगे धकेल देता है।
I_NetLogonLdapLookupEx
-> NlGetLocalPingResponse // 528-बाइट स्टैक बफर
-> LogonRequestHandler
-> BuildSamLogonResponse
-> NetpLogonPutUnicodeString // बाइट/WCHAR आकार भ्रम
python3 poc.py <लक्ष्य_ip> <डोमेन_नाम> [विकल्प]
| फ्लैग | विवरण | डिफ़ॉल्ट |
|---|---|---|
-l | अक्षरों में उपयोगकर्ता नाम की लंबाई | 130 |
-t | UDP recv टाइमआउट (सेकंड) | 5 |
-d | ओवरफ्लो और जीवितता जांच के बीच देरी (सेकंड) | 3 |
# कनेक्टिविटी परीक्षण (छोटा उपयोगकर्ता नाम, कोई ओवरफ्लो नहीं)
python3 poc.py 10.0.50.21 corp.local
# डिफ़ॉल्ट ओवरफ्लो प्रयास
python3 poc.py 10.0.50.21 corp.local -l 130
# बड़ा पेलोड, धीमे नेटवर्क के लिए लंबा टाइमआउट
python3 poc.py 10.0.50.21 corp.local -l 200 -t 10
Python 3.8+ आवश्यक है। कोई तृतीय-पक्ष पैकेज नहीं।
ओवरफ्लो सेवा से इनकार (LSASS क्रैश, DC रीबूट) को ट्रिगर करता है। स्टैक भ्रष्टाचार के माध्यम से RCE सिद्धांत में संभव है। यह PoC कोड निष्पादन का प्रयास नहीं करता है।
नेटवर्क. CLDAP ट्रैफ़िक को स्कैन करें जहां "User" फ़िल्टर विशेषता 20-30 अक्षरों से अधिक हो। सामान्य DC लोकेटर पिंग सेवा खाता नाम (छोटे स्ट्रिंग) का उपयोग करते हैं।
होस्ट. netlogon.dll से जुड़े LSASS क्रैश (इवेंट ID 1000) पर नज़र रखें। Netlogon डीबग लॉगिंग सक्षम करें:
nltest /dbflag:0x2080ffff
mov edx, 0x40)कानूनी. यह कोड अधिकृत सुरक्षा शोध और शिक्षा के लिए मौजूद है। केवल उन सिस्टम्स पर परीक्षण करें जिनके आप मालिक हैं या जिनके परीक्षण की लिखित अनुमति आपके पास है। कंप्यूटर सिस्टम्स तक अनधिकृत पहुंच CFAA और अधिकांश न्यायक्षेत्रों में समान कानूनों का उल्लंघन करती है।