Srdeční krvácení

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 24. září 2018; kontroly vyžadují 9 úprav .

Heartbleed ( CVE -2014-0160) je chyba přečtení vyrovnávací paměti v kryptografickém softwaru OpenSSL , která umožňuje neoprávněné čtení paměti na serveru nebo klientovi, včetně extrahování soukromého klíče serveru . Informace o zranitelnosti byly zveřejněny v dubnu 2014, chyba existuje od konce roku 2011.

V době oznámení chyby se počet zranitelných webových stránek odhadoval na půl milionu, což představovalo asi 17 % chráněných webových stránek internetu [1] .

Historie

Rozšíření Heartbeat pro protokoly TLS a DTLS bylo navrženo RFC 6520 jako standard v únoru 2012. Heartbeat umožňuje udržovat připojení aktivní bez nutnosti neustálého opětovného připojení s plnou autorizací. V roce 2011 jeden z autorů RFC, Robin Seggelman, implementoval rozšíření Heartbeat pro OpenSSL a poslal jej správcům projektu . Jeho kód byl zkontrolován Stephenem Hansonem, jedním ze čtyř hlavních vývojářů OpenSSL. Hanson nezaznamenal žádné problémy s implementací a 31. prosince 2011 přidal zranitelný kód do úložiště OpenSSL. Zranitelnost se rozšířila s OpenSSL 1.0.1 14. prosince 2012. Podpora Heartbeat byla ve výchozím nastavení povolena, což přispělo k rozšíření zranitelnost.

Objev

Existence chyby Heartbleed byla oficiálně oznámena 1. dubna 2014. Název Heartbleed vymyslel inženýr z finské společnosti Codenomicon pro informační bezpečnost . Přišli také s logem krvácejícího srdce a vytvořili web heartbleed.com , aby o této zranitelnosti informovali komunitu. Podle Codenomicon byl bezpečnostní tým Google první, kdo nahlásil Heartbleed v OpenSSL, ale obě společnosti objevily zranitelnost nezávisle. Codenomicon oznámil 3. dubna 2014 jako datum objevení chyby a datum, kdy byla nahlášena Národnímu centru počítačové bezpečnosti Finska za účelem sledování zranitelnosti. The Sydney Morning Herald zveřejnil 15. dubna 2014 časovou osu pro objevení zranitelnosti, která ukazuje, že některé organizace dokázaly zranitelnost opravit ještě předtím, než byla veřejně oznámena.

Oprava zranitelnosti

Bodo Meller a Adam Langley z Google vyvinuli opravu pro opravu Heartbleed. Stephen Hanson aplikoval tuto opravu na OpenSSL 7. dubna 2014. První opravená verze 1.0.1g byla vydána ve stejný den. K 21. červnu 2014 zůstalo zranitelných více než 300 000 serverů.

Útok

Útok je realizován prostřednictvím malého modulu Heartbeat rozšíření TLS knihovny OpenSSL. TLS je protokol pro prezentaci dat přes TCP nebo UDP , určený však pouze pro nepřetržitý datový tok. Pokud se výměna dat skládá z požadavků a odpovědí, je možné určit některé informace o aktivitě připojení a po dlouhém výpadku budete muset znovu navázat připojení TLS. Aby se s tímto problémem vyrovnali, klient a server si vzájemně periodicky posílají a přijímají pakety náhodné délky, a tak udržují komunikaci aktivní a „šumí“ kanál [2] .

Aby bylo obtížnější rozlišovat mezi „tepem srdce“ a užitečným provozem, použili vývojáři následující taktiku: paket se skládá z kontrolní linie a nesmyslného „ocasu“. Server by měl vrátit zprávu sestávající ze stejného řetězce a vlastní části "šumu". Délka řídicího řetězce je dána 16bitovým celým číslem [2] . Pokud je tato délka větší než celý paket, zranitelné verze OpenSSL čtou paměť mimo přidělenou vyrovnávací paměť (RFC dává pokyn, aby na takové pakety nereagovaly). Mimo vyrovnávací paměť lze nalézt jakákoli data, včetně (velmi zřídka) soukromých šifrovacích klíčů serveru, dat z jiných připojení obsahujících identifikační cookies a mnoho dalšího [3] .

Heartbleed se provádí odesláním špatně vytvořeného požadavku Heartbeat, ve kterém je skutečná délka řetězce menší než zadaná a číslo symbolizující délku přenášeného řetězce je naopak větší než skutečná délka řetězce. . V reakci tak můžete ze serveru získat ty nejskrytější informace. Od oběti je tak možné v jednom požadavku zjistit až 64 kilobajtů paměti, kterou dříve využívalo OpenSSL.

Požadavek prezenčního signálu vypadá takto: "Vraťte mi řetězec x , který se skládá z n znaků" a obdrží odpověď - řetězec x sestávající z n znaků. Požadavek Heartbleed vypadá jinak: „Vrať mi řetězec x , který se skládá z počtu znaků n + y “, a obdrží odpověď skládající se z řetězce x a y dalších znaků, které má oběť v aktivní paměti.

Přestože má útočník určitou kontrolu nad velikostí paměťového bloku, nemá kontrolu nad pozicí tohoto bloku, a proto jedinou možností, jak zvýšit pravděpodobnost získání cenných dat, je opakované zneužití chyby.

Řešení

Problém lze vyřešit ignorováním požadavků Heartbeat, které chtějí více dat, než je délka přenášeného řetězce.

OpenSSL verze 1.0.1g přidala kontrolu mezí, která zabraňuje překročení předávaného řetězce. Byl například přidán následující test, který odstraňuje neplatné požadavky na Heartbeat a zabraňuje Heartbleed.

if ( 1 + 2 + užitečné zatížení + 16 > s -> s3 -> rrec . délka ) return 0 ; /* tiché vyřazení za RFC 6520 sec. čtyři */

Verze OpenSSL

Předměty

  • OpenSSL 1.0.2-beta
  • OpenSSL 1.0.1 – OpenSSL 1.0.1f

Chcete-li bezpečně používat zranitelnou verzi OpenSSL, musí být zkompilována s -DOPENSSL_NO_HEARTBEATS.

Zranitelné zdrojové soubory: t1_lib.ca d1_both.c.
Zranitelné funkce: tls1_process_heartbeat()a dtls1_process_heartbeat().

Nedotčeno

  • OpenSSL 1.0.2-beta2 (chystaný)
  • OpenSSL 1.0.1g
  • OpenSSL 1.0.0 (a vydání větví 1.0.0)
  • OpenSSL 0.9.8 (a vydání větve 0.9.8)

Reakce

Správcům systému se doporučuje, aby buď použili OpenSSL 1.0.1g, nebo překompilovali knihovnu OpenSSL s klíčem -DOPENSSL_NO_HEARTBEATSa deaktivovali dotčené rozšíření, dokud nebude možné aktualizovat software. Přestože aplikace opravy problém vyřeší, spuštěné aplikace budou používat načtený a stále zranitelný kód OpenSSL, dokud nebude každá z aplikací restartována, což umožní načtení opraveného kódu. Vzhledem k tomu, že všechny certifikáty a hesla používaná zranitelnou verzí OpenSSL mohou být považována za kompromitovaná, musí být všechny soukromé klíče znovu vydány a všechna hesla změněna.

V den, kdy byla zranitelnost objevena, vydal Tor Project oznámení, v němž doporučoval každému, kdo chce „spolehlivou anonymitu nebo soukromí na internetu“, aby „se na několik dní nezdržoval, dokud se vše nevyřeší“ [4] . Majitelé webových stránek a platforem radí svým uživatelům, aby si změnili hesla.

Poznámky

  1. Mutton, Paul Půl milionu široce důvěryhodných webových stránek ohrožených chybou Heartbleed . Netcraft (8. dubna 2014). Získáno 16. dubna 2014. Archivováno z originálu 19. listopadu 2014.
  2. 1 2 RFC 6520 - Rozšíření prezenčního signálu Transport Layer Security (TLS) a Datagram Transport Layer Security (DTLS) . Získáno 15. dubna 2014. Archivováno z originálu 16. dubna 2014.
  3. Kritická chyba kryptoměn odhaluje Yahoo Mail, další hesla ve stylu ruské rulety | Ars Technica . Získáno 16. dubna 2014. Archivováno z originálu 11. dubna 2014.
  4. Chyba OpenSSL CVE-2014-0160 , Tor  (7. dubna 2014). Archivováno z originálu 10. července 2017. Staženo 16. dubna 2014.

Viz také

Odkazy