Come trovare buffer overflow

June 1

Ricerca di buffer di overflow è una parte importante di assicurare che il programma è al sicuro da attacchi e urti accidentali. Un buffer overflow si verifica quando i dati vengono inseriti in una stringa o array senza limiti di controllo, e la lunghezza di ingresso è maggiore del buffer sta tentando di copiare in. Trovare punti in cui i buffer overflow può verificarsi è fatto con la ricerca di funzioni non sicure, come "ottiene", analizzando i limiti di controllo sulle funzioni come "strncpy" e accuratamente testare il programma con diversi tipi di input.

istruzione

1 Cerca il codice del vostro programma per le funzioni pericolosi come "cambiato", "scanf," "strcpy," "strcat", "sprintf" e "strlen." Queste funzioni non hanno alcun limite built-in di controllo e sono adatti solo quando il 100 per cento degli utenti del programma sono attendibili e crash occasionali può essere tollerato. Fornire controllo dei limiti stessi controllando che la lunghezza di ingresso non è maggiore della lunghezza di buffer disponibile.

2 Indagare su qualsiasi chiamate a funzioni quali limiti "strncpy", "strncat" e "snprintf controllo." Assicurarsi che il fine dell'array ingresso riceve un byte nullo. limiti non corretto controllo può portare a mancanti byte nulli o una posta dopo la fine della matrice. Quando si combinano le stringhe, fare in modo che l'assegno limiti utilizza la lunghezza della stringa totale meno il contenuto preesistente della stringa, anziché utilizzare l'intera lunghezza della stringa come controllare i limiti.

3 Testate il programma inserendo eccezionalmente grandi ingressi e vedere se si blocca, diventa attività insolita corrotti o display. Si noti l'indirizzo di qualunque crash per vedere se corrisponde con cui il programma elabora i dati di input. Programmi come ruvida Auditing strumento per la sicurezza, anche conosciuto come "topi", in grado di eseguire la scansione del codice e la bandiera posizioni che sono vulnerabile a buffer overflow.