flawopen.com/Simulators/Heap Use-After-Free
Modèle interactif montrant les pointeurs pendants après kfree(), la réallocation de blocs libérés et l'élévation de privilèges dans le noyau Linux.
Imaginez quitter la chambre 304 d'un hôtel en rendant la carte magnétique, tout en gardant un double secret dans votre poche. La chambre est louée à un nouveau client. Plus tard, vous entrez avec votre double pour fouiller ses affaires. Ce double de clé est un pointeur pendant (dangling pointer).
// 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);
}
}