Какво представлява уязвимостта Heartbleed?

Една от най-известните уязвимости от средата на 2010 г. се наричаше „Heartbleed“. Heartbleed беше особено сериозен, защото засегна софтуера „OpenSSL“, основната криптографска библиотека за HTTPS връзки, които са много широко използвани. За да влоши нещата, уязвимостта е присъствала в OpenSSL повече от две години преди това беше открит, разгласен и коригиран, което означаваше, че много хора използват уязвим версия.

Heartbleed беше уязвимост при изтичане на данни в разширението за сърдечен ритъм, което при експлоатиране изтече данни от RAM от сървъра към клиента. Разширението на сърдечния ритъм се използва за поддържане на връзка между уеб сървъра и клиента, без да се прави нормална заявка за страница.

В случай на OpenSSL, клиентът изпраща съобщение до сървъра и информира сървъра колко дълго е съобщението, до 64KB. След това сървърът трябва да повтори същото съобщение. Най-важното обаче е, че сървърът всъщност не е проверил дали съобщението е толкова дълго, колкото клиентът твърди, че е. Това означаваше, че клиентът може да изпрати съобщение от 10KB, да твърди, че е 64KB и да получи отговор от 64KB, като допълнителните 54KB се състоят от следващите 54KB RAM, без значение какви данни се съхраняват там. Този процес се визуализира добре от

XKCD комикс #1354.

Изображение с любезното съдействие на xkcd.com.

Като прави много малки заявки за сърдечен ритъм и твърди, че са големи, нападателят може да изгради картина на по-голямата част от RAM на сървъра, като събере отговорите заедно. Данните, които се съхраняват в RAM, които могат да бъдат изтекли, включват ключове за криптиране, HTTPS сертификати, както и некриптирани POST данни, като потребителски имена и пароли.

Забележка: Това е по-малко известно, но протоколът за сърдечен ритъм и експлойтът също работиха в другата посока. Злонамерен сървър би могъл да бъде конфигуриран да чете до 64KB потребителска памет на сърдечна заявка.

Проблемът беше открит от множество изследователи по сигурността независимо на първи април 2014 г. и беше разкрит частно на OpenSSL, за да може да се създаде корекция. Грешката беше публикувана, когато пластирът беше пуснат на седми април 2014 г. Най-доброто решение за разрешаване на проблема беше прилагането на корекцията, но също така беше възможно да се отстрани проблемът чрез деактивиране на разширението за сърдечен ритъм, ако незабавното коригиране не беше опция.

За съжаление, въпреки че експлойтът е публичен и като цяло добре известен, много уебсайтове все още не се актуализираха веднага, като уязвимостта все още се открива понякога дори години по-късно. Това доведе до редица случаи на експлойта, използван за получаване на достъп до акаунти или изтичане на данни.