Gestione degli heartbleed e dell'heap - Perché i dati dell'utente e le password sono conservati in memoria?

4

Se comprendo correttamente la vulnerabilità udibile, solo un heap del processo OpenSSL può essere recuperato da un utente malintenzionato (o parte di esso a seconda del tipo di allocazione di memoria che viene utilizzato). Quindi, in che modo il processo OpenSSL mantiene in memoria ciò che ha crittografato / decodificato in precedenza?

Sembra ovvio che data la delicatezza del processo OpenSSL, non ci dovrebbero essere più dati conservati in memoria più a lungo di ciò che è strettamente necessario, qualcosa come un "bisogno di sapere" principio per assicurare che l'impatto sia mantenuto a un livello ragionevole livello se il processo è compromesso.

Capisco che questi dati sensibili debbano essere messi in memoria per essere comunicati al livello / servizio di cui sopra (ad esempio server http nella maggior parte dei casi), ma una volta che è stato trasmesso dovrebbe essere immediatamente rimosso, giusto?

    
posta ack__ 12.04.2014 - 14:31
fonte

2 risposte

2

In C, quando hai finito di usare la memoria nell'heap, sei libero () che lo rende disponibile per l'uso altrove. free () non cancella / cancella la memoria per tutti gli zeri, quindi il prossimo chiamante che chiede quella memoria otterrà la memoria con il suo contenuto sensibile ancora intatto a meno che non lo si azzeri esplicitamente prima di chiamare free (). I programmi spesso implementano anche le proprie strutture buffer / di memoria (ad esempio, BUF_MEM di OpenSSL) che, a seconda dell'implementazione, possono o meno azzerare la memoria dopo l'uso.

Hai ragione nel ritenere che i dati sensibili debbano vivere solo nella memoria fino a quando esiste la necessità di sapere. È buona pratica azzerare la memoria sensibile in questi casi.

Non posso affermare con certezza nel caso di OpenSSL poiché non ho avuto un'analisi approfondita del codice, ma avrebbe potuto essere la lettura dalla memoria che era ancora richiesta, o la memoria che non era più necessaria ma non azzerato, o una combinazione dei due.

Altre letture:

risposta data 14.04.2014 - 15:06
fonte
0

I dati che possono essere recuperati saranno i dati che hanno attraversato la crittografia / decrittografia di openssls e quindi sono memorizzati nella memoria di openssl

    
risposta data 12.04.2014 - 16:03
fonte

Leggi altre domande sui tag