
CVE-2026-41089 चेकर: Netlogon CLDAP स्टैक बफर ओवरफ्लो (CVSS 9.8) के लिए अप्रमाणित, गैर-विनाशकारी पहचान। रिपोर्ट करता है कि क्या डोमेन कंट्रोलर का डोमेन क्रैश होने के लिए पर्याप्त लंबा है, ओवरफ्लो भेजे बिना। बाइनरी-सत्यापित विश्लेषण जो सार्वजनिक PoC गलत थे।
LongLogon एक अप्रमाणित, गैर-विनाशकारी पूर्व शर्त जाँचकर्ता है CVE-2026-41089 के लिए, जो Windows Netlogon सेवा में एक pre-auth स्टैक बफर ओवरफ्लो है। बिना किसी credentials के, और बिना overflow भेजे, यह रिपोर्ट करता है कि क्या domain controller का DNS domain name bug को crash करने के लिए पर्याप्त लंबा है।

सामान्य रूप से नामित domain controller पर, नहीं। इस CVE के लिए सार्वजनिक exploit PoCs (सबसे ज्यादा starred वाला, और उसके बाद की प्रतियां) एक लंबा username भेजकर domain controller को crash करने का दावा करते हैं। वे एक सामान्य domain पर एक unpatched DC को नहीं crash करते, दो कारणों से जो pre- और post-patch netlogon.dll को diff करके और lab में crash को reproduce करके पुष्टि किए गए हैं:
0x16) के साथ ping करते हैं, जो bounds-safe BuildSamLogonResponseEx पर रूट करता है। कमजोर legacy BuildSamLogonResponse तभी पहुंचा जाता है जब वह bit clear हो। LongLogon 0x02 का उपयोग करता है।User फ़ील्ड binary द्वारा 130 wide chars पर सीमित है, जो 528-बाइट बफर से बहुत कम है। वे bytes जो स्टैक कुकी पर लेखन ले जाते हैं, वे सर्वर के अपने लंबे DNS नाम हैं, जिन्हें कोई payload length नहीं बदलता।इसलिए लोकप्रिय exploit एक सामान्य domain पर विफल होता है, और recv timeout (जो एक स्वस्थ DC पर एक ही गिराए गए UDP पैकेट के कारण होता है) को crash के रूप में गलत समझा जाता है। LongLogon उन exploits में से एक नहीं है: यह सही, binary-verified विश्लेषण है, जो एक non-destructive checker के रूप में भेजा जाता है जो कभी overflow नहीं भेजता। Lab-पुष्टि की गई crash सीमा और पूर्ण तंत्र नीचे दिया गया है।
Netlogon DC-locator पथ NlGetLocalPingResponse → BuildSamLogonResponse → NetpLogonPutUnicodeString में एक स्टैक-आधारित बफर ओवरफ्लो (CWE-121, CVSS 9.8)। एक CLDAP या MAILSLOT ping का उत्तर देते हुए, DC अपने स्वयं के forest, domain, और host नामों के साथ-साथ एक छोटी हमलावर-नियंत्रित स्ट्रिंग को एक निश्चित 528-बाइट स्टैक बफर (ushort local_258[264]) में क्रमबद्ध करता है, जिसके तुरंत बाद स्टैक कुकी होती है। जब सर्वर के अपने DNS नाम पर्याप्त लंबे होते हैं, तो संचयी लेखन बफर के अंत तक पहुँचता है, अनुगामी L'\0' टर्मिनेटर कुकी को ओवररन करता है, __report_gsfailure फायर करता है, और lsass.exe STATUS_STACK_BUFFER_OVERRUN (0xc0000409) के साथ मर जाता है। Domain controller रीबूट होता है। अप्रमाणित, एक UDP पैकेट।
जहाँ Zerologon (CVE-2020-1472) ने एक पूरी तरह से शून्य चुनौती का दुरुपयोग किया, वहीं LongLogon एक पैथोलॉजिकल रूप से लंबे domain नाम का दुरुपयोग करता है।
longlogon.py गैर-विनाशकारी है। यह न्यूनतम User फ़ील्ड के साथ हानिरहित CLDAP pings भेजता है, legacy-builder प्रतिक्रिया को मापता है, और रिपोर्ट करता है कि क्या ओवरफ्लो पूर्व शर्त पूरी होती है: क्या इस DC का domain इतना लंबा है कि एक अनपैच DC crash हो जाएगा।
यह नहीं करता:
यह जानने के लिए कि आपके कौन से DC वास्तव में पैच किए गए हैं, पूरे fleet में एक प्रमाणित (प्रशासन) संस्करण जाँच की आवश्यकता होती है। यह वैसी चीज़ है जिसे ADscan एक engagement में स्वचालित करता है (नीचे देखें)।
बफर तक पहुँचने वाले एकमात्र हमलावर-नियंत्रित bytes CLDAP User फ़िल्टर से आते हैं, जो 130 wide chars तक सीमित हैं, जो अपने आप 528-बाइट बफर से बहुत कम हैं। वे bytes जो कर्सर को कुकी पर ले जाते हैं, वे सर्वर के अपने नाम हैं, जिन्हें हमलावर नियंत्रित नहीं करता है। एक डिफ़ॉल्ट-नामित DC (corp.local) को crash नहीं किया जा सकता। यही कारण है कि Microsoft इसे "Exploitation Less Likely" रेट करता है। एक lab में, Windows Server 2016 (7-अक्षर वाले होस्ट नाम के साथ) को crash करने के लिए न्यूनतम DNS domain लंबाई 98 अक्षर थी।
uv के साथ, शून्य सेटअप। निर्भरताएँ इनलाइन (PEP 723) घोषित की जाती हैं, इसलिए यह एक अस्थायी वातावरण में rich को स्वचालित रूप से स्थापित करता है:
uv run longlogon.py <dc-ip> <dc-dns-domain>
या pip के साथ:
pip install rich
python3 longlogon.py <dc-ip> <dc-dns-domain>
DNS domain उससे मेल खाना चाहिए जो DC प्रदान करता है। यह गुप्त नहीं है: rootDSE, reverse DNS, और CLDAP स्वयं सभी इसे प्रकट करते हैं। आउटपुट एक पूर्व शर्त निर्णय है और प्रति-क्षेत्र बफर-भरण गणित है।
NtVer रूटिंग मायने रखती है। कमजोर legacy BuildSamLogonResponse तभी पहुंचा जाता है जब (NtVer & 0xc) == 0 और (NtVer & 0x2) != 0 हों। सार्वजनिक exploit प्रयास जो NtVer=0x16 या 0x06 भेजते हैं, वे bit 2 (0x4) सेट करते हैं और bounds-safe BuildSamLogonResponseEx पर पहुँचते हैं, इसलिए वे कभी भी bug को ट्रिगर नहीं करते। LongLogon 0x02 का उपयोग करता है।
अनपैच Windows Server domain controllers, 2012 R2 से 2025 तक। पहले पैच किए गए बिल्ड:
केवल अधिकृत सुरक्षा अनुसंधान और रक्षात्मक सत्यापन के लिए। यह रिपॉजिटरी एक सक्रिय रूप से शोषित, वर्मेबल CVE के लिए गैर-विनाशकारी पूर्व शर्त जाँचकर्ता भेजता है, न कि एक हथियारबंद क्रैशर। अपने domain controllers को पैच करें।
द्वारा शोध Yeray Martín Domínguez · ADscan · CVE-2026-41089 · Netlogon · Active Directory · domain controller · stack buffer overflow · CLDAP · unauthenticated · pre-auth · प्रूफ ऑफ कॉन्सेप्ट
| Windows सर्वर | पहला पैच किया गया बिल्ड |
|---|
| 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 |