flawopen.com/Simulators/Heap Use-After-Free

Memory Safety / Linux Kernel SLUB

交互式堆内存 Use-After-Free (UAF) 可视化模拟器

交互式内存模型:深入观察 kfree() 后的悬空指针、tcache 空闲链表重新利用以及 Linux 内核提权执行流重定向。

💡 通俗易懂的比喻 (ELI5)

想象你退出了酒店 304 房间并归还了房卡,但私下配了一把备用钥匙。酒店随后把 304 租给了新房客。半夜你用备用钥匙开门查看新房客的行李。这把未收回的钥匙就是悬空指针(Dangling Pointer)。

Source Code Diff: Object Lifetime Management

UNPATCHED FLAW: DANGLING POINTER RETENTION WITHOUT ZEROIZATION
// Vulnerable cleanup routine
void release_session(struct session_mgr *mgr) {
    if (mgr->active_session) {
        kfree(mgr->active_session);
        // FLAW: mgr->active_session remains dangling!
    }
}
HARDENED PATCH: ATOMIC NULLIFICATION & MEMZERO
// Hardened cleanup routine
void release_session(struct session_mgr *mgr) {
    struct user_session *sess;
    sess = xchg(&mgr->active_session, NULL);
    if (sess) {
        memzero_explicit(sess, sizeof(*sess));
        kfree(sess);
    }
}
← 交互式漏洞模拟器与可视化沙箱 CVE-2024-1086 Linux Netfilter Teardown →