Un dirottamento del flusso di controllo si verifica quando un attaccante fa sì che un programma esegua istruzioni in un ordine o in una posizione non prevista. Invece di seguire il suo percorso normale, l'esecuzione viene reindirizzata verso codice, gadget o dati scelti dall'attaccante che si comportano come codice.
Questo è importante perché il flusso di controllo è ciò che fa sì che il software svolga attività affidabili. Se un attaccante riesce a alterare un indirizzo di ritorno, un puntatore a funzione, una tabella virtuale, un callback o un altro target di diramazione, può ottenere esecuzione di codice, escalation dei privilegi o uscita da una sandbox. I dirottamenti del flusso di controllo spesso seguono corruzione della memoria, confusione di tipi, bug use-after-free o deserializzazione non sicura, ma possono anche comparire tramite difetti logici che consentono a input non affidabili di influenzare i percorsi di esecuzione. I difensori cercano mitigazioni come stack canary, ASLR, integrità del flusso di controllo, linguaggi memory-safe e validazione rigorosa degli oggetti passati oltre i confini di fiducia. In pratica, un dirottamento del flusso di controllo è di solito la fase finale di una vulnerabilità più profonda, che trasforma un bug in una compromissione attiva.


