Buffer overflow causano il comportamento del programma inatteso in seguito a sproposito la sovrascrittura della memoria . Un buffer è un blocco contiguo di memoria di dimensioni fisse utilizzato per memorizzare i dati, ad esempio una stringa di caratteri . Il linguaggio di programmazione C consente di scrivere i dati nel buffer , anche se è troppo large.In Oltre a rendere il crash del programma , gli aggressori possono utilizzare i buffer overflow per eseguire codice dannoso sui sistemi che eseguono il programma . Nonostante tutti i tentativi di proteggere da buffer overflow , è ancora un comunemente sfruttata attacco vector.In C , buffer overflow possono essere attenuati seguendo le best practice per la codifica sicure. Istruzioni
1
Evitare le funzioni di libreria C strcpy , strcat , sprtinf , vsprintf , ottiene e scanf . Queste funzioni non sono sicure e non eseguono il controllo dei limiti prima di scrivere ingresso o la lettura da un buffer , con conseguente buffer overflow . Controllo dei limiti è un metodo di utilizzo di istruzioni condizionali - come se , poi - per verificare se una lettura o scrittura è all'interno del limite del buffer
2
codice Invalidate eseguito dalla pila . . Lo stack è dove la memoria come buffer sono memorizzati mentre l'applicazione è in esecuzione . Codice dannoso viene eseguito da scrittura esso nella pila , dove viene quindi eseguito . Anche se l'attuazione può essere difficile , una qualche versione di Linux e Gnu C Compiler ( GCC ) sono disponibili che può impedire questo .
3
Utilizzare un compilar che verifica di potenziali condizioni di buffer overflow. Estensioni e patch sono disponibili per i compilatori C , come ad esempio C , che si avverte quando si utilizza la funzione non sicuri e il tentativo di eseguire il controllo dei limiti nel codice.
4
utilizzare programmi gratuiti come Stack Shield e Stack guardia di rilevare e proteggere contro i buffer overflow . ( Vedere le risorse . ) Economici