flawopen.com/Simulators/Heap Use-After-Free
Model memori interaktif yang mendemonstrasikan pointer menggantung setelah kfree(), penggunaan kembali chunk, dan eskalasi hak akses root kernel.
Bayangkan Anda check-out dari kamar hotel #304 dan mengembalikan kuncinya, tetapi diam-diam menyimpan kunci duplikat. Pihak hotel menyewakan kamar #304 kepada tamu baru. Malam harinya, Anda membuka kamar dengan kunci duplikat tersebut. Kunci duplikat itu adalah dangling pointer (pointer menggantung).
// 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 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);
}
}