Archivi tag: ubuntu

How linux distros protect you: parte 2

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.

linux_mem_manag
Esempio di processo su architettuta a 32 bit

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.

Continue reading How linux distros protect you: parte 2