Nejprve si krátce připomeňme, o co vlastně v kauze Heartbleed šlo. Chybu objevil Neel Mehta z Googlu dne 1. dubna 2014. Naneštěstí však zřejmě nebyl první, komu se to podařilo. Podle několika zdrojů o chybě poměrně dlouho, cca dva roky, věděla i americká Národní bezpečnostní agentura, která ji zneužívala pro přístup k šifrované komunikaci. Během týdne potom vývojáři OpenSSL připravili patch a 7. dubna do světa vypustili opravenou verzi. Tím informace o chybě vyšly na veřejnost.
Chyba spočívala v celkem prosté části knihovny. Jedná se tzv. heartbeating, kterým se jednotlivé stanice ujišťují, že spolu v danou chvíli mají spojení. Představit si to můžete jako jistou obdobu známého programu ping. „Heartbeat obsahuje pole dat, které musí protistrana poslat zpět beze změn. Protože toto pole payloadu může být různě dlouhé, předchází mu ve zprávě dvoubajtová hodnota určující jeho délku. Potíž je v tom, že OpenSSL nekontrolovalo, zda délka payloadu udaná v požadavku na heartbeat není delší než délka celé zprávy,“ popisuje problém v samostatném článku Ondřej Caletka.
Tímto způsobem tazatel mohl zařídit, že z paměti protistrany dostane víc dat, než by dostat měl a které pro něj nebyly určeny. O tom, že se jednalo o chybu výjimečné důležitosti, svědčí i mediální pokrytí celé kauzy. Případy, kdy jsou opravdové softwarové chyby propírány v médiích, bychom mohli spočítat na prstech jedné ruky. Navíc v něčem pro širokou veřejnost tak abstraktním, jako jakési šifrovací knihovně. OpenSSL totiž není jen jeden z mnoha programů, ale jeden z pilířů bezpečného internetu.
Není divu, že se odborná i laická veřejnost začala ptát, jak tak prostá chyba mohla v tak velkém projektu vydržet tak dlouho. Není snad OpenSSL open source? Je, ale co z toho, když zdrojové kódy systematicky nekontroluje několik párů očí. Máme tu co do činění s pěkným paradoxem. IT giganti investují stamilióny do vývoje vlastního softwaru, ale tak kritickou součást, jakou OpenSSL bezesporu je, často nechávají na pospas dobrovolníkům.
Core Infrastructure Initiative
Řada velkých hráčů si své pochybení brzy uvědomila. Pod křídly Linux Fondation již 24. dubna, tedy ani ne tři týdny po objevení Heartbleedu, vznikla Core Infrastructure Initiative (CII). Mezi třináctkou zakládajících členy byly i takové společnosti jako Google, Microsoft, Facebook, Intel, Amazon, Cisco a další. Každá z nich se zavázala přispívat alespoň 100 tisíci dolary ročně. To je pro zmíněné firmy jako kapka v moři, na kvalitu open-source projektů to ovšem může mít znatelný vliv.
Iniciativa sice vznikla v reakci na chybu OpenSSL, ovšem bude se zaměřovat i na další projekty, které patří mezi pilíře internetu a přitom nevznikají pod taktovkou žádné firmy. Řeč je tedy zejména o open-source projektech. V první fázi budou zafinancovány projekty NTP (Network Time Protocol), OpenSSH a OpenSSL.
Nejkýženější OpenSSL bude podpořeno dokonce dvojí cestou. Bude podpořen nejen samotný projekt (CII zaplatí alespoň dva vývojáře na plný úvazek), ale i nezávislý audit, který by měl knihovnu pořádně proklepnout. Audit zorganizuje Open Crypto Audit Project, jež byl původně založen za účelem prověření šifrovacího programu TrueCrypt. Co se týče auditu, věci by se měli dát do pohybu v nejbližších měsících.
OpenSSL kontra LibreSSL
Brzy po Heartbleedu o sobě dali vědět také lidé kolem unixového systému OpenBSD. „Open source model staví na tom, že lidé mají možnost číst kód. To však závisí na jeho srozumitelnosti. OpenSSL nemá čistý kód, protože její komunitě na srozumitelnosti, zdá se, nesejde,“ popsal Theo de Raadt důvody vzniku LibreSSL, forku OpenSSL. Raadt také tvrdí, že lídři OpenSSL na zabordelenost byli upozorňováni a věděli o ní, ale neměli vůli neblahou situaci měnit. A nemyslí si, že je k tomu přiměje ani Heartbleed. Proto byl podle něj vznik forku nevyhnutelný.
Projekt LibreSSL pokračuje v tom, co avizoval. Pročišťuje kód, odstraňuje nepotřebné pozůstatky a zároveň se snaží i o jeho revizi. Vyšlo už několik verzí, ale ty pochopitelně ještě nejsou určeny pro ostré nasazení. S nedávno vydanou verzí 2.0 se LibreSSL dostalo také na další platformy, kromě mateřského OpenBSD. Jsou to Linux, FreeBSD, Solaris a OS X. O tom, že OpenSSL opravdu potřebovalo pročistit, svědčí i čísla: LibreSSL je při zachování funkčnosti o 40 % lehčí.
Zda měl Raadt pravdu, ukáže až čas. Ovšem ani lidé z OpenSSL nestrkají hlavu do písku. Připravili reformní plán, který by měl pomoci napravit pošramocenou pověst knihovny. Reforma si samozřejmě vyžádá nějaký čas a její cíle nejspíš budou splněny nejdřív tak za rok. Už nyní však některé důležité změny proběhly. Každý commit například musí být zkontrolován dalším vývojářem.
V OpenSSL před sebou mají mnoho práce: v plánu jsou kompletace a oprava dokumentace, sjednocení programovacího stylu a také standardizace procesů. Měl by být přesně definován systém přijímání patchů, hlášení chyb apod. Definován by měl být i jakýsi krizový plán, podle kterého se bude postupovat v případě, že by se objevil nějaký následovník Heartbleedu. Cíl je zřejmý – minimalizace škod napáchaných chybou.
OpenSSL chce být také předvídatelnější a čitelnější. Co to znamená? Měl by být stanoven alespoň přibližný plán vydávání nových verzí, podle kterého by se vývojáři distribucí, správci serverů a další mohli orientovat. Stejně tak by měl být stanoven plán podpory.
V praxi to pravděpodobně bude znamenat, že jednotlivé verze budou podporovány kratší dobu, ale ta bude přesně určena a zmiňovaní vývojáři a správci s tím budou moci dlouho dopředu počítat. V současnosti nic jako plánovaná doba podpory neexistuje. Například taková verze 0.9.8 vyšla již před devíti lety a je stále podporovaná. Ale zřejmě už ne na dlouho.
Potřebná lekce
Jak se zdá, Heartbleed dal světu IT potřebnou lekci: open-source není všespásný. Otevřený kód, který nikdo nečte, na tom z hlediska bezpečnosti není lépe, než kód uzavřený. A kód tak kritických projektů jako OpenSSL nelze číst jen tak zběžně, musí být kontrolován přísně, podrobně a systematicky. To už si zúčastněné strany zřejmě uvědomily. Teď zbývá nastavit procesy, které takovou kontrolu zajistí. Finance budou, tak snad se podaří.
Méně veselou zprávou je, že v praxi je Heartbleed stále přítomen a část serverů je stále zranitelná. Robert Graham z firmy Errata Security zranitelnost testoval na 28 miliónech serverů. Cca dva dny po odhalení chybu obsahovalo na 600 tisíc z nich. Při posledním měření 22. června jich bylo zranitelných ještě 309 tisíc. Číslo přitom klesá už pouze velmi pomalu. Kdo neopravil dodnes, zřejmě už s tím spěchat nebude. Čísla samozřejmě nelze považovat za seriózní statistiku, ale pro připomenutí, že Heartbleed tu stále straší, úplně stačí.