Un double free è un bug di corruzione della memoria che si verifica quando un programma rilascia più di una volta lo stesso blocco di memoria allocato. Nel codice sicuro, la memoria dovrebbe essere liberata esattamente una volta; farlo due volte può confondere l'allocatore e corrompere le strutture dati interne.
Nella cybersicurezza, i double free sono importanti perché talvolta possono essere trasformati in esecuzione di codice, specialmente nei servizi a lunga esecuzione scritti in C o C++. Gli attaccanti possono innescare un percorso di errore, una condition race o un input di rete malformato che fa sì che il programma liberi di nuovo lo stesso oggetto. I difensori cercano questi bug con il fuzzing, la code review, i sanitizer e allocatori di memoria rafforzati, e riducono il rischio convalidando le transizioni di stato e rendendo idempotente la logica di pulizia. Nei servizi esposti, come i componenti VPN o di negoziazione dei protocolli, un double free può diventare un percorso di attacco pre-autenticazione se il codice vulnerabile è raggiungibile dalla rete.


