Grave vulnerabilità in OpenSSL TLS Heartbeat Extension (CVE-2014-0160)

C’è una grave vulnerabilità nell’implementazione del TLS/DTLS (protocolli transport layer security) heartbeat extension (RFC6520) di OpenSSL. Questa è una seria vulnerabilità a cui è stato assegnato l’identificativo CVE CVE-2014-0160.

Lo sfruttamento potrebbe causare la divulgazione del contenuto della memoria dal server al client e dal client al server. Un utente malintenzionato potrebbe recuperare in remoto dati sensibili dalla memoria, inclusi, ma non limitati a chiavi segrete utilizzate per Crittografia SSL e token di autenticazione.

Per maggiori informazioni su questo attacco: heartbleed.com.

In che modo Ruby è affetto?

Ruby è affetto nel caso sia stato compilato staticamente con una versione vulnerabile di OpenSSL attraverso l’estensione C della standard library OpenSSL.

Versioni di OpenSSL dalla 1.0.1 fino alla 1.0.1f (compresa) sono vulnerabili a questo attacco. Per verificare quale versione della libreria OpenSSL è linkata a Ruby, utilizza il seguente comando:

ruby -v -ropenssl -rfiddle -e 'puts Fiddle::Function.new(Fiddle.dlopen(nil)["SSLeay_version"], [Fiddle::TYPE_INT], Fiddle::TYPE_VOIDP).call(0)'

Per verificare la versione di OpenSSL attualmente installata con Ruby, utilizza il seguente comando:

ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'

Puoi verificare se un tuo software client o un servizio sono vulnerabili usando lo script di emboss.

Soluzioni

Per aggiornare all’ultima versione di OpenSSL 1.0.1g o superiori, dovresti controllare all’interno del gestore di pacchetti del tuo sistema operativo per assicurarti che fornisca una versione aggiornata di OpenSSL. Dovresti consultare il distributore del tuo sistema operativo per verificare che la sua versione contenga la patch di sicurezza, a prescindere dal numero di versione disponibile.

Se aggiornare non è un’opzione, ricompila la versione di OpenSSL contenente la patch con l’opzione -DOPENSSL_NO_HEARTBEATS.

Una volta ottenuta una verisone aggiornata di OpenSSL, è raccomandato ricompilare Ruby per assicurarsi che non ci siano link alla versione vulnerabile di OpenSSL.

Questo implica l’aggiornamento di ogni tool usato per compilare Ruby come RVM e ruby-build. Se compili Ruby manualmente usa l’opzione --with-openssl-dir per linkare una directory contenente OpenSSL aggiornato.

$ ./configure --with-openssl-dir=/path/to/openssl
$ make
$ make install

Dopo aver aggiornato OpenSSL e Ruby, è importante riavviare tutti i programmi che usano la versione vulnerabile.

Molti sistemi operativi forniscono già (o lo faranno presto) una versione contenente la path e pacchetti ricompilati per le librerie vulnerabili a questo attacco. É importante monitorare il distributore del tuo sistema operativo per assicurarsi di rimanere in sicurezza.