Come posso recuperare dal bug Heartbleed in OpenSSL?


Risposte:


95

Questa vulnerabilità ha un potenziale impatto elevato perché se il tuo sistema è stato attaccato, rimarrà vulnerabile anche dopo l'applicazione di patch e gli attacchi potrebbero non aver lasciato alcuna traccia nei log. È probabile che se hai patchato rapidamente e non sei un bersaglio di alto profilo, nessuno sarà riuscito ad attaccarti, ma è difficile esserne sicuri.

Sono vulnerabile?

La versione buggy di OpenSSL

Il software difettoso è la libreria OpenSSL 1.0.1 fino alla 1.0.1f e OpenSSL 1.0.2 fino alla beta1. Le versioni precedenti (0.9.x, 1.0.0) e le versioni in cui il bug è stato corretto (1.0.1g in poi, 1.0.2 beta 2 in poi) non sono interessate. È un bug di implementazione, non un difetto nel protocollo, quindi solo i programmi che usano la libreria OpenSSL sono interessati.

È possibile utilizzare lo strumento da riga di comando openssl version -aper visualizzare il numero di versione di OpenSSL. Si noti che alcune distribuzioni portano la correzione di bug a versioni precedenti; se il registro delle modifiche del tuo pacchetto menziona la correzione di bug Heartbleed, va bene, anche se vedi una versione come 1.0.1f. Se openssl version -amenziona una data di costruzione (non la data sulla prima riga) del 07-04-2014 intorno alla sera UTC o successiva, dovresti andare bene. Si noti che il pacchetto OpenSSL potrebbe avere il 1.0.0suo nome anche se la versione è 1.0.1 (si 1.0.0riferisce alla compatibilità binaria).

Applicazioni interessate

Lo sfruttamento viene eseguito tramite un'applicazione che utilizza la libreria OpenSSL per implementare connessioni SSL . Molte applicazioni usano OpenSSL per altri servizi di crittografia, e questo va bene: il bug sta nell'implementazione di una particolare funzionalità del protocollo SSL, il "battito cardiaco".

Potresti voler controllare quali programmi sono collegati alla libreria sul tuo sistema. Sui sistemi che usano dpkg e apt (Debian, Ubuntu, Mint, ...), il seguente comando elenca i pacchetti installati diversi dalle librerie che usano libssl1.0.0(il pacchetto interessato):

apt-cache rdepends libssl1.0.0 | tail -n +3 |
xargs dpkg -l 2>/dev/null | grep '^ii' | grep -v '^ii  lib'

Se esegui un software server presente in questo elenco e ascolta le connessioni SSL, probabilmente sei interessato. Ciò riguarda i server Web, i server di posta elettronica, i server VPN, ecc. Saprai che hai abilitato SSL perché dovevi generare un certificato, inviando una richiesta di firma del certificato a un'autorità di certificazione o facendo autofirmato certificato. (È possibile che alcune procedure di installazione abbiano generato un certificato autofirmato senza che te ne accorga, ma generalmente viene eseguito solo per server interni, non per server esposti a Internet.) Se hai eseguito un server vulnerabile esposto a Internet, consideralo compromesso a meno che i log non mostrino alcuna connessione dall'annuncio del 07-04-2014. (Ciò presuppone che la vulnerabilità non sia stata sfruttata prima del suo annuncio.) Se il tuo server è stato esposto solo internamente,

Il software client è interessato solo se è stato utilizzato per connettersi a un server dannoso. Quindi, se ti sei connesso al tuo provider di posta elettronica tramite IMAPS, non devi preoccuparti (a meno che il provider non sia stato attaccato, ma in tal caso dovrebbero farti sapere), ma se hai navigato in siti Web casuali con un browser vulnerabile, potresti aver bisogno preoccuparsi. Finora sembra che la vulnerabilità non sia stata sfruttata prima che fosse scoperta, quindi devi preoccuparti solo se ti sei connesso a server dannosi dal 2014-04-08.

I seguenti programmi non sono interessati poiché non utilizzano OpenSSL per implementare SSL:

  • SSH (il protocollo non è SSL)
  • Chrome / Chromium ( utilizza NSS )
  • Firefox (usa NSS) (almeno con Firefox 27 su Ubuntu 12.04, ma non con tutte le build?

Qual è l'impatto?

Il bug consente a qualsiasi client in grado di connettersi al server SSL di recuperare contemporaneamente 64 KB di memoria dal server. Non è necessario che il client sia autenticato in alcun modo. Ripetendo l'attacco, il client può scaricare diverse parti della memoria in tentativi successivi. Ciò consente potenzialmente all'attaccante di recuperare tutti i dati presenti nella memoria del processo del server, inclusi chiavi, password, cookie, ecc.

Uno dei dati critici che l'attaccante potrebbe essere in grado di recuperare è la chiave privata SSL del server. Con questi dati, l'attaccante può impersonare il tuo server.

Il bug consente inoltre a qualsiasi server a cui si è connesso il client SSL di recuperare alla volta circa 64 KB di memoria dal client. Questa è una preoccupazione se hai usato un client vulnerabile per manipolare dati sensibili e successivamente ti sei connesso a un server non attendibile con lo stesso client. Gli scenari di attacco da questo lato sono quindi significativamente meno probabili rispetto al lato server.

Si noti che per le distribuzioni tipiche, non vi è alcun impatto sulla sicurezza sulla distribuzione dei pacchetti poiché l'integrità dei pacchetti si basa sulle firme GPG, non sul trasporto SSL.

Come riparo la vulnerabilità?

Risanamento di server esposti

  1. Porta offline tutti i server interessati. Finché sono in esecuzione, stanno potenzialmente perdendo dati critici.

  2. Aggiorna il pacchetto della libreria OpenSSL . Ormai tutte le distribuzioni dovrebbero avere una correzione (o con 1.0.1g, o con una patch che corregge il bug senza cambiare il numero di versione). Se hai compilato dal sorgente, esegui l'upgrade a 1.0.1 go superiore. Assicurarsi che tutti i server interessati siano riavviati.
    Su Linux, puoi verificare se i processi potenzialmente interessati sono ancora in esecuzionegrep 'libssl.*(deleted)' /proc/*/maps

  3. Genera nuove chiavi . Ciò è necessario perché il bug potrebbe aver consentito a un utente malintenzionato di ottenere la vecchia chiave privata. Segui la stessa procedura che hai usato inizialmente.

    • Se si utilizzano certificati firmati da un'autorità di certificazione, inviare le nuove chiavi pubbliche alla propria CA. Quando ottieni il nuovo certificato, installalo sul tuo server.
    • Se si utilizzano certificati autofirmati, installarlo sul server.
    • In ogni caso, sposta le vecchie chiavi e i certificati (ma non eliminarli, assicurati solo che non vengano più utilizzati).
  4. Ora che hai nuove chiavi senza compromessi, puoi riportare il tuo server online .

  5. Revoca i vecchi certificati.

  6. Valutazione del danno : qualsiasi dato che è stato nella memoria di un processo che serve connessioni SSL potrebbe essere stato trapelato. Ciò può includere password degli utenti e altri dati riservati. È necessario valutare quali potrebbero essere stati questi dati.

    • Se stai eseguendo un servizio che consente l'autenticazione con password, le password degli utenti che si sono connessi da poco prima dell'annuncio della vulnerabilità dovrebbero essere considerate compromesse. Controlla i tuoi registri e modifica le password di qualsiasi utente interessato.
    • Invalida anche tutti i cookie di sessione, poiché potrebbero essere stati compromessi.
    • I certificati client non sono compromessi.
    • Tutti i dati scambiati da poco prima della vulnerabilità potrebbero essere rimasti nella memoria del server e quindi potrebbero essere stati divulgati a un utente malintenzionato.
    • Se qualcuno ha registrato una vecchia connessione SSL e ha recuperato le chiavi del tuo server, ora può decodificare la sua trascrizione. (A meno che PFS non sia stato garantito - se non lo sai, non lo era.)

Risanamento in altri casi

I server che ascoltano solo su localhost o su una intranet devono essere considerati esposti solo se gli utenti non attendibili possono connettersi a loro.

Con i client, ci sono solo scenari rari in cui il bug può essere stato sfruttato: un exploit richiederebbe di utilizzare lo stesso processo client per

  1. manipolare dati riservati (ad es. password, certificati client, ...);
  2. e quindi, nello stesso processo, connesso a un server dannoso su SSL.

Quindi, ad esempio, un client di posta elettronica che usi solo per connetterti al tuo provider di posta (non completamente non attendibile) non è un problema (non un server dannoso). Eseguire wget per scaricare un file non è un problema (non ci sono dati riservati da perdere).

Se lo hai fatto tra il 2014-04-07 sera UTC e l'aggiornamento della tua libreria OpenSSL, considera compromessi tutti i dati presenti nella memoria del client.

Riferimenti


5
"In genere, sei interessato se esegui un server in cui hai generato una chiave SSL a un certo punto." può indurre in errore. Per sottolineare, se generi la tua chiave su un server e la usi su un altro, sei nei guai se il server che la utilizza esegue una versione vulnerabile di OpenSSL.
Matt Nordhoff,

3
Anche i certificati dei clienti sono interessati IIRC
Elazar Leibovich,

2
@ElazarLeibovich Non specificamente certificati client (in realtà è improbabile che i certificati client trapelino da questo errore), ma tutti i dati nella memoria client se un client che utilizza una versione di libreria vulnerabile si è collegato a un server dannoso utilizzando un protocollo che supporta battiti cardiaci avviati dal server. Ho chiesto agli esperti di questo , non ho ancora avuto una risposta chiara.
Gilles,

1
Penso che Firefox usi OpenSSL. Se corro lsof -c firefox | grep 'ssl\|crypto', ottengo /usr/lib64/libssl.so.1.0.0, /usr/lib64/libcrypto.so.1.0.0, /lib64/libk5crypto.so.3.1 e /opt/firefox/libssl3.so .

1
@ B4NZ41 Fai solo gli aggiornamenti di sicurezza. L' advisory è fuori servizio da oltre 20 ore.
Gilles,

11

Per verificare se sei vulnerabile vai qui: http://filippo.io/Heartbleed/

Se scopri di essere vulnerabile, aggiorna openssle riavvia il tuo server web.


1
come menziona Gilles nella sua risposta, semplicemente l'aggiornamento e il riavvio non sono sufficienti. devi rispondere al potenziale compromesso delle tue chiavi private: il requisito fondamentale è la revoca di tali chiavi, ma devi anche gestire le informazioni che potrebbero essere state compromesse utilizzando la chiave. come gli ID di sessione.
Strugee,

0

Non c'è modo di recuperare da questo errore. Salvare tutti i registri, saranno necessari nel caso in cui qualcuno abbia effettivamente realizzato la vulnerabilità effettivamente esistita prima che fosse annunciata

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.