Uno stack è una struttura dati last-in, first-out. I nuovi valori vengono posizionati in cima e il valore più recente viene rimosso per primo. I programmi usano costantemente gli stack per tenere traccia delle chiamate di funzione, delle variabili locali, dei risultati temporanei e degli indirizzi di ritorno mentre il calcolo si svolge.
Gli stack sono importanti nella sicurezza informatica perché molti attacchi prendono di mira la memoria memorizzata nello stack. Un esempio classico è il buffer overflow basato su stack, in cui scrivere oltre un buffer di dimensione fissa può corrompere i dati vicini, comprese le informazioni di controllo usate per dirigere l'esecuzione. I difensori rafforzano l'uso dello stack con tecniche come stack canary, protezione dello stack non eseguibile, randomizzazione degli indirizzi e pratiche di codifica più sicure che limitano le scritture non controllate e la profondità della ricorsione.


