
प्रोजेक्ट दिनांक : अक्टूबर 2025 / CVE-2025-54110 के लिए PoC कार्यान्वयन, जो Windows `NtQueryDirectoryObject` सिस्टम कॉल में एक कर्नेल-स्तरीय पूर्णांक अतिप्रवाह भेद्यता है।
CVE-2025-54110 के लिए PoC कार्यान्वयन, जो Windows के NtQueryDirectoryObject सिस्टम कॉल में कर्नेल-स्तरीय पूर्णांक अतिप्रवाह भेद्यता है।
CVE: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-54110
इस रिपॉजिटरी में CVE-2025-54110 कर्नेल EoP भेद्यता के लिए एक Crash-Only PoC शामिल है, जिसे केवल सुरक्षा अनुसंधान, रिवर्स इंजीनियरिंग और एक्सप्लॉइट विकास अनुसंधान के लिए विकसित किया गया है। इस कोड का उद्देश्य भेद्यता अनुसंधान तकनीकों को प्रदर्शित करना है, जिनमें शामिल हैं:
यह PoC विशेषाधिकार वृद्धि या विश्वसनीय BSOD प्राप्त नहीं करता है। इसे एक्सेस उल्लंघनों को सुरक्षित रूप से ट्रिगर करने के लिए डिज़ाइन किया गया है, जिन्हें Windows कर्नेल सुरक्षाओं द्वारा पकड़ लिया जाता है।
प्रकाशन दिनांक: सितंबर 2025 (Windows मंगलवार सुरक्षा पैच)
| गुण | मान |
|---|---|
| CWE | CWE-190: पूर्णांक अतिप्रवाह या रैपअराउंड |
| CVSS 3.1 स्कोर | 8.8 (उच्च) / 7.7 (अस्थायी) |
| वेक्टर स्ट्रिंग | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H/E:U/RL:O/RC:C |
| हमला वेक्टर | स्थानीय |
| हमले की जटिलता | निम्न |
| आवश्यक विशेषाधिकार | निम्न |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| दायरा | परिवर्तित |
| गोपनीयता | उच्च |
| अखंडता | उच्च |
| उपलब्धता | उच्च |
| एक्सप्लॉइट परिपक्वता | अप्रमाणित |
Windows कर्नेल में एक पूर्णांक अतिप्रवाह भेद्यता एक प्रमाणित हमलावर को स्थानीय रूप से विशेषाधिकार बढ़ाने की संभावना देती है। Microsoft की सलाह के अनुसार:
"एक हमलावर इस भेद्यता का शोषण सैंडबॉक्स किए गए उपयोगकर्ता-मोड प्रक्रिया से विशेष रूप से तैयार इनपुट भेजकर कर सकता है, जिससे पूर्णांक अतिप्रवाह ट्रिगर होता है, जिसके परिणामस्वरूप कर्नेल में बफर अतिप्रवाह होता है और विशेषाधिकार वृद्धि या सैंडबॉक्स से बचाव संभव होता है।"
Windows Update Files from Aug 2025 & Sep 2025 (KB.msu) ↓ Extract CAB Files ↓ Calculate SHA-256 Hashes (August vs September) ↓ Identify Changed Files ↓ Ghidra Version Tracking Analysis ↓ Setting Symbol Servers to Clarify Function Names ↓ Function-Level Diff Comparison
### 2. विश्लेषित फ़ाइलें
प्रारंभिक विश्लेषण दो प्राथमिक कर्नेल घटकों पर केंद्रित था:
#### win32k.sys (-)
- **परिणाम:** कोई महत्वपूर्ण परिवर्तन नहीं पाया गया
- **स्कोर सीमा:** 0.97-1.0 (उच्च समानता)
- **निष्कर्ष:** CVE-2025-54110 के लिए यह संवेदनशील घटक नहीं है
#### ntoskrnl.exe (+)
- **परिणाम:** महत्वपूर्ण परिवर्तनों वाले कई फ़ंक्शन
- **स्कोर सीमा:** स्कोर ≤0.951 वाले फ़ंक्शन
- **लंबाई अंतर:** स्रोत बनाम गंतव्य बाइट लंबाई में भिन्नताएँ पाई गईं
- **निर्यातित कुल आइटम:** विश्लेषण के लिए 2,036 फ़ंक्शन
### 3. Ghidra संस्करण ट्रैकिंग परिणाम
`ntoskrnl.exe` में पहचाने गए परिवर्तनों का नमूना:
| स्कोर | विश्वास | स्रोत लंबाई | गंतव्य लंबाई | स्रोत फ़ंक्शन | गंतव्य फ़ंक्शन |
|-------|------------|---------------|-------------|-----------------|---------------|
| 0.951 | 2.618 | 1023 | 365 | FUN_1403146d0 | FUN_1403a4ea0 |
| 0.950 | 2.285 | 113 | 203 | FUN_140680810 | FUN_1406d952c |
| 0.950 | 3.137 | 782 | 1050 | FUN_14032106c | FUN_140303a38 |
| 0.951 | 2.675 | 141 | 171 | FUN_140407bd0 | FUN_140a172a0 |
| 0.951 | 2.660 | 346 | 150 | FUN_140610e60 | FUN_1406115d4 |
---
## PoC स्टेटमेंट
### तकनीकी दृष्टिकोण
PoC (`precise_overflow_bsod.c`) निम्नलिखित माध्यमों से पूर्णांक अतिप्रवाह (integer overflow) भेद्यता को ट्रिगर करने का प्रयास करता है:
1. **सटीक थ्रेशोल्ड गणना:** `0xfffffdbc` (base=0x20, name=0x200 से व्युत्पन्न)
2. **NtQueryDirectoryObject API:** अतिप्रवाह ट्रिगर करने के लिए लक्षित फ़ंक्शन
3. **बहु-चरणीय आक्रमण रणनीति:**
- चरण 1: सटीक पूर्णांक अतिप्रवाह प्रयास
- चरण 2: कर्नेल मेमोरी लक्ष्यीकरण
- चरण 3: बहु-थ्रेडेड शोषण
### कोड संरचना```c
// Key threshold values calculated for overflow
ULONG precise_thresholds[] = {
0xfffffdbc, // Precise threshold - base=0x20, name=0x200
0xfffffdbb, // Threshold - 1
0xfffffdbd, // Threshold + 1
0xfffffdba, // Threshold - 2
0xfffffdbe, // Threshold + 2
};
// Buffer configurations to test edge cases
PVOID buffer_types[] = {
VirtualAlloc(NULL, 0x1000, MEM_COMMIT, PAGE_READWRITE), // Normal buffer
VirtualAlloc(NULL, 0x10, MEM_COMMIT, PAGE_READWRITE), // Small buffer
NULL, // NULL pointer
(PVOID)0x4141414141414141, // Invalid pointer
(PVOID)0x0000000000000000, // Zero address
};
NtQueryDirectoryObject() Parameters: ├── DirectoryHandle: \BaseNamedObjects, \KernelObjects, etc. ├── Buffer: Various pointer configurations ├── BufferLength: Calculated overflow thresholds (0xfffffdbc variants) ├── ReturnSingleEntry: TRUE/FALSE variations ├── RestartScan: TRUE/FALSE variations └── Context: Controlled iteration state
---
## PoC सिस्टम को क्रैश क्यों नहीं करता
### वास्तविक परिणाम
PoC लगातार `STATUS_ACCESS_VIOLATION (0xC0000005)` लौटाता है बिना ब्लू स्क्रीन ऑफ डेथ (BSOD) पैदा किए। यह **डिज़ाइन द्वारा** है और कई महत्वपूर्ण Windows कर्नेल सुरक्षा तंत्रों को प्रदर्शित करता है:
### 1. संरचित अपवाद हैंडलिंग (SEH)```
User-Mode Input → NtQueryDirectoryObject
↓
ProbeForRead/Write
↓
__try { ... }
↓
Access Violation Detected
↓
__except { ... }
↓
Return STATUS_ACCESS_VIOLATION
यह क्यों काम करता है:
आधुनिक CPU सुविधा जो कर्नेल मोड (Ring 0) को स्पष्ट प्राधिकरण के बिना यूज़र-मोड (Ring 3) मेमोरी तक पहुंचने से रोकती है:``` Kernel attempts to access user pointer ↓ SMAP checks permission (STAC/CLAC instructions) ↓ Unauthorized access detected ↓ CPU generates #PF (Page Fault) ↓ Caught by kernel exception handler
**PoC पर प्रभाव:**
- भले ही ओवरफ्लो हो जाए, कर्नेल-से-यूज़र मेमोरी तक सीधी पहुंच अवरुद्ध होती है
- पॉइंटर डीरेफरेंस कमजोरियों के शोषण को रोकता है
### 3. KASLR (कर्नेल एड्रेस स्पेस लेआउट रैंडमाइज़ेशन)```
Boot Time: Kernel Base = Random Address
↓
Hardcoded PoC address (0xfffffdbc)
↓
Does NOT match actual kernel structures
↓
Write to non-critical memory OR caught by SEH
BSOD क्यों नहीं होता:
Windows 10+ उन्नत पूल भ्रष्टाचार का पता लगाने की सुविधा लागू करता है:``` Heap/Pool Allocation ↓ Header Contains: ├── Magic Values ├── Size Information └── Checksums ↓ On Free/Access: Validate Integrity ↓ Corruption Detected? ↓ [YES] → Safe Exception → Return Error [NO] → Proceed Normally
---
## PoC निष्पादन आउटपुट विश्लेषण
### अपेक्षित आउटपुट