Esistono due tecniche primarie per attenuare gli overflow del buffer basati su stack.
La prima tecnica sta attaccando il problema alle radici. Gli overflow del buffer si verificano quando un programma tenta di scrivere oltre i limiti di una struttura dati. Il modo più efficace per interrompere un buffer overflow è quello di smettere di verificarsi. Usa un linguaggio di programmazione, sia esso Java, Python, Ruby, che gestirà la memoria per te. Se devi usare C, assicurati di eseguire i controlli appropriati prima di scrivere su un buffer.
La seconda tecnica comporta la mitigazione del danno che può causare un sovraccarico del buffer. Tecniche come i canarini dello stack, DEP e ASLR rientra in questa categoria. Funzionano per limitare il danno che può causare un overflow del buffer rendendo più difficile per un utente malintenzionato eseguire codice arbitrario dopo un overflow. Tali tecniche possono essere sconfitte. Per ulteriori informazioni su DEP e ASLR, vedi questa domanda.