I sistemi operativi moderni utilizzano spazi di memoria virtuale per ogni processo che conduce a isolamento dei processi . Quindi è impossibile per un server web che utilizza la libreria OpenSSL imperfetta leggere la memoria allocata ad altri processi (non esplicitamente condivisa con il processo), nel migliore dei casi i tentativi di farlo risulterebbero in un errore di segmentazione.
La verità è che il heartbleed è un semplice overread di un buffer attendendo che la dimensione del payload sia inviata in un'intestazione controllata da un attacker e non verificando mai che il payload fosse effettivamente tale dimensione e scritto in memoria (si veda [1] , [2] , [3] ). L'utente malintenzionato invia un pacchetto heartbeat al server con un'intestazione che indica la lunghezza del suo payload inviato (la dimensione nell'intestazione è di due byte quindi fino a ff ff = 65535 byte), scrive il payload inviato in memoria e quindi lo legge indietro i dati di quella dimensione tornano al client che consente di leggere qualsiasi cosa sia in memoria nel processo del webserver seguendo il payload scritto. Questo è abbastanza importante in quanto è possibile ripetere l'attacco molte volte e alla fine potrebbe essere fortunato e riuscire a ottenere chiavi private per il server HTTPS ea quel punto è possibile utilizzare il server HTTPS MitM. (E ottenere cose come fan fiction erotica o e-mail dell'utente). Sì, nel frattempo potresti venire a conoscenza di dati casuali che il server web stava già pubblicando, ma in realtà le chiavi private (e meno i cookie di sessione) sono la parte importante.
Inoltre, la parte spaventosa è che l'attacco fa ciò in un modo che non verrà registrato a meno che non si sia in una modalità di debug / intercettazione di ogni pacchetto sul filo e registrare l'inizio di ogni richiesta di handshake TLS.