Come smettere di C BUFFER PIENO

December 4

Come smettere di C BUFFER PIENO


buffer overflow causa il comportamento del programma inaspettato a causa di impropriamente sovrascrivere la memoria. Un buffer è un blocco contiguo di memoria di una dimensione fissa utilizzata per memorizzare dati, ad esempio una stringa di caratteri. Il linguaggio di programmazione C consente di scrivere i dati nel buffer, anche se è troppo grande.

Oltre a rendere il vostro crash del programma, gli aggressori possono usare i buffer overflow per eseguire codice dannoso sui sistemi che eseguono il programma. Nonostante tutti i tentativi di proteggere da buffer overflow, è ancora un vettore di attacco comunemente sfruttata.

In C, buffer overflow possono essere attenuati seguendo le best practice per la codifica sicura.

istruzione

1 Evitare il C funzioni di libreria strcpy, strcat, sprtinf, vsprintf, si e scanf. Queste funzioni non sono sicuri e non eseguire controllo dei limiti prima di scrivere di ingresso o la lettura da un buffer, con conseguente buffer overflow. Il controllo dei limiti è un metodo di utilizzo di istruzioni condizionali - come se, poi - per verificare se un'operazione di lettura o scrittura è all'interno del bound del buffer.

2 Invalidare codice eseguito dalla pila. Lo stack è dove la memoria come buffer sono memorizzati mentre l'applicazione è in esecuzione. codice dannoso viene eseguito scrivendo in pila, dove viene eseguito. Anche se l'applicazione può essere difficile, una qualche versione di Linux e Gnu C Compiler (GCC) sono disponibili che possono impedire questo.

3 Utilizzare un compilar che verificare la presenza di potenziali condizioni di buffer overflow. Le estensioni e le patch sono disponibili per compilatori C, come C, che si avvertono quando si utilizza la funzione pericoloso e tenta di eseguire controllo dei limiti nel codice.

4 Utilizzare programmi gratuiti come Pila Shield e Stack Guardia di rilevare e proteggere contro i buffer overflow. (Vedi le Risorse.)