Buffer overflow: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Aggiunta sezione "Contromisure", paragrafo "Difese a livello di linguaggio" |
Aggiunta sotto-sezione "Difese a livello di codice sorgente" |
||
Riga 88:
La miglior difesa da attacchi basati sul buffer overflow sta nella scelta di un linguaggio di programmazione che fornisca controlli automatici sulla dimensione dei buffer (o a tempo di compilazione o a ''runtime'') come Java, Python o Perl. Se questa opzione può essere presa in considerazione per lo sviluppo di nuovi programmi, resta però difficilmente applicabile nel caso di progetti esistenti, in cui ciò comporterebbe la riscrittura del codice nel nuovo linguaggio. <ref name=":1" />
Un'alternativa consiste nell'utilizzo di ''safe libraries'', ovvero librerie di funzioni che implementano
=== Difese a livello di codice sorgente ===
Esistono tool in grado di rilevare vulnerabilità al buffer overflow all'interno del codice sorgente effettuando analisi più o meno complesse sullo stesso, sia statiche che dinamiche.
"Its4" è un semplicissimo esempio di analizzatore statico che effettua la ricerca di eventuali chiamate di funzioni vulnerabili note (come ''strcpy'' o ''popen''), pensato come sostituzione alla ricerca tramite ''grep'': data la sua semplicità e la rudimentale analisi del codice che realizza è molto facile incappare in falsi positivi e negativi. <ref>{{Cita web|url=http://seclab.cs.ucdavis.edu/projects/testing/tools/its4.html|titolo=Its4}}</ref>
In alternativa esistono tool più complessi in grado di effettuare l'analisi dinamica del programma, come "Rational Purify", un debugger di memoria realizzato da IBM in grado di individuare eventuali anomalie nella gestione della memoria durante l'esecuzione del programma (accesso a variabili non inizializzate, buffer overflows, deallocazione impropria di memoria ecc...). <ref>{{Cita web|url=http://www-01.ibm.com/software/awdtools/purify/compare.html|titolo=Rational Purify}}</ref>
== Note ==
|