I buffer overflow nei siti Web sono fermi?

1

Recentemente, ero in libreria a controllare libri su computer. Ho trovato un libro interessante su vari tipi di hack e su come fermarli sui tuoi server.

Uno che ha attirato la mia attenzione era il "buffer overflow". Era fondamentalmente l'hacker che rimuoveva il limite su una casella di input, digitando casuale incomprensibile nell'input e poi inviandolo al server.

Il server otterrebbe un buffer overflow e molto probabilmente crash.

Purtroppo, in questo libro, non includeva alcuna informazione su come fermare questi attacchi. E per me, questi attacchi sembrano piuttosto inarrestabili.

Scenario uno:

Sono il proprietario di un server. Sul server, c'è un sito Web con un forum. Nel forum, ho l'utente di inviare informazioni al server. La casella di input NON ha un limite su di essa

Come potrei interrompere un buffer overflow, se possibile?

Scenario due:

Sono il proprietario di un server. Sul server, c'è un sito Web con un forum. Nel forum, ho l'utente di inviare informazioni al server. La casella di input ha un limite.

Come potrei interrompere un buffer overflow?

    
posta SirPython 10.12.2014 - 23:43
fonte

2 risposte

3

Limitare il testo in un modulo HTML non interrompe il buffer overflow in quanto un attore cattivo può modificare il tuo codice HTML o non utilizzarlo affatto.

Le vulnerabilità di overflow del buffer sono causate da errori di programmazione. I programmi che elaborano i dati sul server devono, se utilizzano buffer di dimensioni fisse, contare i caratteri mentre vengono memorizzati e memorizzare non più del numero di byte assegnato. Quando il buffer è pieno, il programma deve allocare più memoria o interrompere l'accettazione dei dati.

Per i siti web, questo significa non scrivere programmi CGI in linguaggi come C a meno che tu non sia assolutamente, positivamente sicuro di sapere cosa stai facendo, e forse neanche allora.

Se si utilizza un linguaggio di scripting come PHP, il processore di lingua può avere errori di overflow del buffer. Tutto quello che puoi fare è mantenere aggiornati PHP, web server ( ad es. Apache) ecc. E leggere le segnalazioni di bug. Principalmente a livello di programmazione, uno non si occupa di "buffer" di dimensioni fisse in quelle lingue, ma è comunque necessario controllare le lunghezze di input come parte o normale convalida dei dati.

La programmazione sicura richiede che non si facciano ipotesi su alcun dato proveniente dal proprio programma dall'esterno. Invece devi convalidare tutto. Convalida controllando i valori accettabili, non tentando di "enumerare la cattiveria".

Enumerare la cattiveria (termine di Marcus Ranum) significa cercare di filtrare le cose che sai essere cattive. Tutti i cattivi attori devono fare è trovare cattiveria a cui non hai pensato e che stai provando. Invece, accetta solo quelle cose che sai essere buone e respingi il resto. Se per errore lasci qualcosa fuori dalle cose da accettare, il tuo programma si romperà e tu lo aggiusterai. È lontano migliore di un sistema compromesso.

    
risposta data 11.12.2014 - 00:00
fonte
1

La risposta è la stessa per entrambi gli scenari, è necessario aggiungere una convalida della lunghezza per l'input sul lato server prima di eseguire qualsiasi altra operazione con i dati. La whitelist per soli caratteri sicuri (A-Z, a-z, 0-9) aiuta anche ad evitare attacchi che sfruttano l'overflow del buffer per eseguire codice arbitrario. un collegamento per ulteriori riferimenti:

link

    
risposta data 10.12.2014 - 23:56
fonte

Leggi altre domande sui tag