Corruzione della memoria

La corruzione di memoria accade quando un programma sovrascrive aree di memoria in maniera non intenzionale nell'intenzione originale. Ad esempio si potrebbero poter modificare variabili in maniera non attesa, possibilmente invalidando delle invarianti del programma e causando comportamenti imprevedibili del software, inclusi crash del programma. Le cause comuni della corruzione di memoria includono l'uso improprio di puntatori, buffer overflow, e problemi di gestione della memoria dinamica. Il problema della corruzione di memoria è particolarmente critico nei linguaggi di programmazione che non offrono una gestione automatica della memoria e che offrono una gestione diretta dei puntatori, come C e C++.

In questo capitolo vengono analizzate alcune più comuni tipologie di corruzione della memoria, e come possono essere sfruttate da un attaccante per causare comportamenti inaspettati del programma, fino ad arrivare all'esecuzione di codice arbitrario nel contesto del programma.