Heartbleed bug - jak opravit a zabezpečit váš server

11. 4. 2014 | Jindřich Zechmeister

Termínem Heartbleed je označena (maximálně) závažná chyba v OpenSSL, kterou žije celý internet. Útočníkovi bug umožňuje ukrást ze serveru privátní klíč k SSL certifikátu. V tomto článku se dozvíte, jak zjistit, jestli je server ohrožen, a jak v případě nutnosti server opravit.

Heartbleed bug

O co se jedná?

Dne 7. 4. 2014 byla objevena bezpečnostní chyba v knihovně OpenSSL, která umožňuje útočníkovi získat obsah 64KB paměti procesu, který používá knihovnu OpenSSL. Může tak získat privátní klíč k certifikátu a s ním dešifrovat komunikaci. Kód této zranitelnosti je CVE-2014-0160.

Obzvláště dvě skutečnosti jsou zarážející - první je rozsah použití OpenSSL a druhou je neexistence stop po útočníkovi. 

Knihovna OpenSSL se používá v mnoha GNU/Linux distribucích a používá ji i webový server Apache a Nginx. Podle odhadu ji používají dvě třetiny všech webových serverů. Druhým problémem je fakt, že útočník po sobě nezanechá žádné stopy a není možné zjistit, jestli byl server napaden a zneužit, či nikoliv.

Této závažné chybě je věnován web heartbleed.com. Pro test zranitelnosti serveru jsou dostupné ověřovače, které prozradí, jestli je server zranitelný, nebo jestli je už opraven. Můžete použít i známý ověřovač SSLlabs.

Je to závažný problém?

Jedná se o maximálně závažný problém, protože si nemůžete být jisti, zda nebyl z vašeho serveru s OpenSSL odcizen a zneužit privátní klíč. Jak poznamenal známý odborník na bezpečnost a šifrování Bruce Schenier na svém blogu, na stupnici od 1 do 10 je Heartbleed číslo 11.

Jaké verze chybu obsahují a jak je updatovat?

Ohroženy jsou všechny servery využívající OpenSSL 1.0.1 až do verze 1.0.1f včetně. Verze 1.0.1g, stejně jako starší verze 1.0.0 a 0.9.7 zranitelností netrpí. Postižená verze OpenSSL je i v aktuální větvi Debianu, který se na serverech často používá. V Debianu 7.0 Wheezy je přítomna verze 1.0.1e, která je nebezpečná.

Jakou verzi OpenSSL používáte je snadné. Stačí na serveru spustit v terminálu příkaz:

dpkg -s openssl | grep version nebo dpkg -l | grep openssl či nejlépe openssl version

V Debianu Wheezy stable je zranitelnost opravena v balíku 1.0.1e-2+deb7u5, v testing (jessie) a unstable (sid) distribuci je bug opraven ve verzi 1.0.1g-1. Obecně je verze 1.0.1g v pořádku a můžete ji v klidu použít.

Nejjednodušší možností je samozřejmě provést upgrade celého serveru a všech balíků, ne vždy to však chcete provést. Potom je možné aktualizovat pouze OpenSSL, knihovnu libssl a restartovat Apache (nebo celý server):

apt-get update && apt-get install openssl libssl1.0.0 && /etc/init.d/apache2 restart

Přítomnost nové verze ověřte opět příkazem openssl version. Datum sestavení musí být 7. 4. 2014 a novější. 

Pokud není nová verze pro vaši distribuci dostupná, budete ji muset zkompilovat ze zdrojového kódu. Problematika je však nad rámec tohoto článku.

Jak zranitelnost a problém vyřešit?

Řešením problému je update OpenSSL a tzv. re-key certifikátu (vystavení s novým privátním klíčem, reissue). Po updatu OpenSSL, libssl1 a restartu nechte přegenerovat všechny SSL certifikáty, které na serveru používáte. Vytvořte si úplně nové privátní klíče

openssl genrsa -out privatni-klic.key 2048

a úplně nové CSR requesty (více v návodu).

openssl req -new -key klic-s-heslem.key -out nazev.csr

Ty pošlete na adresu podpory SSLmarketu, která nechá certifikáty zdarma přegenerovat, nebo ve vaší zákaznické administraci využijte zcela nové funkce a znovuvystavení certifikátu proveďte kdykoliv sami. Stačí kliknout na Vydat znovu a vložit nový CSR request.

V případě přegenerování DV certifikátů (RapidSSL, Thawte SSL 123, QuickSSL) nezapomeňte na nutnost znovu potvrdit ověřovací e-mail autority, který dorazí na ověřovanou doménu (stejně jako při prvním vystavení).

Přegenerování, znovuvystavení, reissue a re-key znamená, že staré a možná kompromitované certifikáty autorita automaticky zruší, a vystaví vám nové, s původní expirací. Ty potom na server nainstalujete. V případě výměny privátního klíče se proces nazývá re-key.

Nevíte si rady?

Pokud si nevíte rady, nebo nemůžete CSR request z nového privátního klíče vytvořit (například máte neochotného webhostera), napište na podporu SSLmarketu žádost, a my vám oba klíče vytvoříme a následně bezpečně pošlete zpátky. Můžete nás kontaktovat v případě potřeby telefonicky, e-mailem nebo chatem.

P.S. Pokud si nevzpomínáte, jak se instaluje SSL certifikát na Apache, využijte náš návod.


Ing. Jindřich Zechmeister
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz