Ultimo aggiornamento: 22-02-2016
Dopo aver parlato di elf hardening nella prima parte, introduciamo questa seconda parte con un esempio di buffer overflow: lo stack overflow, per parlare dei meccanismi di protezione degli eseguibili che il mondo linux ci offre.
Questo articolo è l’ultimo della serie: volevo farne un terzo in cui si parlasse di Macchine Virtuali (partendo dal comando chroot, passando per i container di linux o le jails di BSD), però basta girare per il web per trovare roba interessante.
Introduzione
Nell’articolo precedente viene spiegato il formato degli eseguibili di linux: l’ELF. Ora per continuare con la spiegazione aggiungo solo che i segmenti degli ELF caricati in memoria (data, codice o text, stack, heap), come molti di voi sapranno già, hanno degli indirizzi prestabiliti in cui vanno allocati.
Questa caratteristica era utile nei primi anni della storia dell’informatica, in cui il programmatore doveva sapere dove il loader del sistema operativo caricasse il proprio programma; ora non è più certo utile: nella maggior parte dei casi, al programmatore non serve sapere dove i segmenti del codice vengono allocati, inoltre l’allocamento in posizioni pre-fissate viene anche sfruttata per scopi non certo buoni, come si vedrà ora.