Quale tipo di processo o analisi statica potrebbe attirare l'errore di cuore oltre alle revisioni del codice umano che già sappiamo fallire. Correzione di correzione è qui.
Quale tipo di processo o analisi statica potrebbe attirare l'errore di cuore oltre alle revisioni del codice umano che già sappiamo fallire. Correzione di correzione è qui.
Una soluzione comune è usare le lingue gestite. Lingue come Java hanno il controllo dei limiti e la cancellazione della memoria su un incarico che eviterebbe il problema. La Java VM sta diventando molto veloce dopo anni e anni di lavoro e talvolta persino batte il codice C al giorno d'oggi, quindi il successo in termini di prestazioni non è eccezionale come ci si aspetterebbe. E comunque non sono richieste prestazioni elevate per tutti i progetti di codifica.
Un'altra soluzione comune discussa è non reimplementare le funzioni della libreria di base nel proprio codice. Il malloc integrato su Linux e altri sistemi moderni ha opzioni di configurazione per cancellare la memoria per impedire l'accesso a elementi sensibili, come pure le pagine di protezione per evitare di leggere troppo. OpenSSL ha la propria allocazione di memoria, tuttavia, quindi non è stato in grado di sfruttare il supporto C comune e gli strumenti per mitigare i problemi: link
L'uso delle funzioni principali avrebbe aiutato gli strumenti di analisi come Valgrind a prendere il problema.
Leggi altre domande sui tag secure-coding