CVE-2014-0160
Summary
Chyba v TLS heartbeat rozhraní umožnila vzdálenému útočníkovi číst paměť procesu OpenSSL a odhalovat klíče, cookies nebo jiné citlivé údaje.
Writeup
Heartbleed vznikl v implementaci TLS heartbeat v OpenSSL. Server po přijetí Heartbeat requestu poslal zpět právě tolik bajtů, kolik bylo deklarováno v délce, aniž by ověřil, zda skutečně odpovídá délce dat v payloadu. To umožnilo útočníkovi poslat záměrně nepravdivý údaj o délce a získat obsah z paměti aplikace, která běžela v procesu OpenSSL. V praxi to vedlo k exfiltraci privátních klíčů, session IDs, hesel a dalších dat, která běžně zůstávají v heapu. Pro úspěch útoku nebylo nutné získat přístup k hostitelskému systému; stačilo zaslat požadavek přes internet. Z pohledu bezpečnosti byl problém mimořádně zákeřný, protože nebyl přímý RCE ani exploitable bug v aplikační logice, ale důsledek špatné bounds checking v nízkoúrovňové knihovně. To z něj udělalo typický případ 'memory disclosure', který postihl velké množství webových služeb a vyžádal si rychlé patchování a rotaci klíčů.
Impact
Útočník mohl číst obsah paměti procesu, ukrást TLS klíče, autentizační cookies, hesla a další citlivé údaje. V důsledku toho bylo nutné rotovat certifikáty a ověřovat kompromitaci serverů i po patchu.
Affected products
- OpenSSL 1.0.1 through 1.0.1f
- OpenSSL 1.0.2-beta releases