Perché è così difficile proteggere un'applicazione contro i buffer overflow?

2

Ad esempio, vengono spesso scoperte vulnerabilità di buffer overflow in Flash. Non dovrebbe essere sufficiente una corretta verifica di tutti i parametri di funzione nel codice sorgente Flash per proteggersi da overflow del buffer?

    
posta user3584 28.04.2014 - 01:46
fonte

2 risposte

2

La difficoltà deriva essenzialmente dal fatto che, in linguaggio C, sei responsabile della memoria-sanità del tuo programma. Significa che devi avere un accesso completo alla memoria, che ti permette di fare un programma estremamente efficiente ma, anche, potrebbe finire in un caos indicibile.

In questo contesto, verificare di scrivere entro i limiti di un'area di memoria è già una sfida. Soprattutto se questi limiti vengono scelti dinamicamente in fase di runtime.

Ma questo non è sufficiente per creare un problema di sicurezza, devi anche controllare che il Mondo esterno non possa accedere alla possibilità di scrivere al di fuori di questi limiti.

Come hai notato nella tua domanda, solo alcuni tipi di programmi e / o parte del codice sono coinvolti in questi due problemi. Di solito la parte che importa gli input dal Mondo esterno e li elabora. E, non c'è assolutamente alcun modo per garantire che:

  1. Non ci sarà nessuna scrittura al di fuori dei limiti appropriati.

  2. Nessun input esterno sarà in grado di modificare una scrittura illegale per controllarla.

Ancora una volta, tutti questi problemi sono causati dal fatto che si desidera l'efficienza della memoria e, quindi, un accesso completo ad esso. Questo è il prezzo da pagare.

    
risposta data 28.04.2014 - 12:58
fonte
0

Il problema si trova su vari fronti:

  • lingua in cui è sviluppata l'applicazione.

    Quale piattaforma supporta. Si noti che la piattaforma ha un ruolo importante ruolo negli exploit BO.

    Applicazioni associate dipende da

    mancanza di controllo.

risposta data 28.04.2014 - 20:31
fonte

Leggi altre domande sui tag