Format string attack: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 5:
== Introduzione ==
Il tipo di attacco Format String è una classe di vulnerabilità scoperte nel 1999, presenti prevalentemente in linguaggi di programmazione imperativi come il C.
:
* Format Function: in ANSI C è una funzione che converte una variabile di tipo primitivo, del linguaggio di programmazione, in una stringa user-friendly cioè leggibile dall’uomo. Alcune di queste sono:
Riga 21:
“%d”: per stampare degli interi
“%c”: per stampare dei caratteri
== Funzionamento dello stack ==
In relazione al format string attack, lo stack diventa di fondamentale importanza in quanto è proprio in quell'area di memoria
Se si passa a una funzione che stampa una stringa a schermo (un esempio classico è la funzione [[printf]] del [[C (linguaggio)|linguaggio C]]) una stringa che in realtà contiene una serie di parametri di specifica dell'input (tipicamente si usano identificatori di formato ''%s'' e ''%x'' per esaminare il contenuto della memoria e ''%n'' per sovrascrivere parti della memoria, in particolare dello [[stack]]) si permette l'avvio di un attacco di tipo [[stack overflow]] e ''return to libc''. Per proteggersi da questo attacco, quando si vuole stampare una stringa ''s'' usando la printf() o una qualsiasi funzione C che accetti un numero illimitato di identificatori di formato, bisogna scrivere la funzione
|