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

Memory Safety / Linux Kernel SLUB

인터랙티브 힙 Use-After-Free (UAF) 시뮬레이터

kfree() 이후 널 포인터 처리를 누락하여 발생하는 댕글링 포인터와 리눅스 커널 루트 권한 획득 흐름을 시뮬레이션합니다.

💡 쉬운 비유로 이해하기 (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 →