Heartbleed
Heartbleed — помилка в криптографічному програмному забезпеченні OpenSSL, що дозволяє несанкціоновано читати пам'ять на сервері або на клієнті, в тому числі для вилучення закритого ключа сервера[1][2].
Історія
Помилка з'явилася у версії OpenSSL 1.0.1 і виправлена у версії 1.0.1g.
Уразливість була внесена 31 грудня 2011 разом з підтримкою розширення TLS heartbeat і поширена з версією OpenSSL 1.0.1 14 березня 2012.
7 квітня 2014 було анонсовано, що OpenSSL версії 1.0.2-beta і всіх версій 1.0.1, що передують 1.0.1g, мають критичний баг роботи з пам'яттю в реалізації розширення TLS Heartbeat. Цей дефект може використовуватися для отримання до 64 кілобайт випадкових даних програми з кожним heartbeat-запитом. Дослідниками компаній Google і Codenomicon в OpenSSL була виявлена одна з найсерйозніших вразливостей (CVE-2014-0160)[3] в історії проекту, яка зачіпає величезне число сайтів, серверних систем і клієнтських застосунків, що використовують OpenSSL 1.0.1 для організації обміну даними через захищене з'єднання. Суть проблеми проявляється в можливості доступу до 64 Кб пам'яті клієнтського або серверного процесу з яким встановлено шифрування з'єднання.
Практична небезпека уразливості пов'язана з тим, що у схильній до витоку області пам'яті можуть розміщуватися закриті ключі або паролі доступу, які потенційно можуть бути вилучені віддаленим зловмисником. При вдалому проведенні атаки зловмисник може отримати вміст ключа, використовуваного для організації шифрованого доступу до сервера, і організувати перехоплення на транзитному вузлі захищеного трафіку. Також не виключений витік паролів, ідентифікаторів сесій і інших закритих даних клієнтських застосунків при спробі їх з'єднання з підконтрольними зловмисникам серверними системами.
Причиною проблеми є відсутність перевірки виходу за допустимі межі в коді реалізації TLS-розширення heartbeat (RFC 6520), що дозволяє ініціювати відправлення віддаленій стороні до 64 Кб даних з області за межею поточного буфера. За деякими оцінками проблема охоплювала до половини серверних систем в Мережі, що підтримують захищене з'єднання, включаючи зібрані з OpenSSL 1.0.1 веб-сервери (Apache httpd, nginx), поштові сервери, XMPP-сервери, VPN-системи, шлюзи і приховані сервіси анонімної мережі Tor.[4] Пов'язана з атакою активність не проявляється в серверних логах, що утруднює виявлення фактів експлуатації уразливості.
На думку Брюса Шнаєра,[5] відомого експерта в області комп'ютерної безпеки, Heartbeat-уразливість в OpenSSL слід зарахувати до категорії катастрофічних вразливостей, рівень небезпеки якої становить 11 балів, якщо розглядати існуючу 10-бальну шкалу ступенів небезпеки з урахуванням того, що OpenSSL є найпоширенішою криптографічного бібліотекою в Мережі.
Завдяки широкому висвітленню проблеми за два дні з моменту її оприлюднення близько 1/3 всіх серверів встигли застосували оновлення з усуненням уразливості. Проте, за попередніми даними в Мережі ще залишаються уразливими близько 600 тисяч серверів. Але проблема далека від свого рішення — незрозуміло, що робити з вбудованими та мобільними продуктами, схильними до вразливості, але такі що не передбачають можливість автоматичного оновлення прошивки.
В умовах можливості непомітного проведення атаки, без залишення слідів в балці, також чекає тривалий процес зміни SSL-сертифікатів, ключів шифрування і звичайних паролів, відсутність витоку яких неможливо гарантувати. Потенційно будь-який пароль і сертифікат міг потрапити в руки зловмисників, і незрозуміло, коли і де подібні витоки можуть проявитися.[6]
Атака
Атака виконується шляхом відправки специфічно зміненого heartbeat-запиту, що запитує дані з пам'яті сервера. Через відсутність перевірки меж запитуваної пам'яті, схильні до багу версії OpenSSL не перевіряли валідність heartbeat-запиту, дозволяючи атакуючому отримувати непризначені для цього дані.
Читаючи довільні блоки пам'яті сервера, зловмисники можуть отримати конфіденційні дані як сервера, так і користувачів. Потенційно уразливі дані включають закритий ключ сервера, який може дозволити атакуючому розшифровувати поточний або збережений трафік за допомогою атаки man-in-the-middle. Зловмисник не може запросити доступ до конкретних даних, оскільки сервер відповідає довільними блоками пам'яті.
Баг також може надати зловмисникам частини користувацьких запитів або відповідей, включаючи cookie сесії та паролі, таким чином дозволяючи зламати будь-якого користувача сервісу. На момент оголошення, близько 17% або півмільйона захищених вебсайтів можуть бути уразливими.
Версії OpenSSL
Схильні
- OpenSSL 1.0.2-beta
- OpenSSL 1.0.1-OpenSSL 1.0.1f
(Якщо не встановлений патч для CVE-2014-0160, що не міняє версії бібліотеки. Такий патч доступний, наприклад, для Debian, Red Hat Enterprise Linux (включаючи CentOS або Amazon Linux, що походять від нього) та Ubuntu (включаючи Linux Mint, що походить від нього).
Не схильні
- OpenSSL 1.0.2-beta2 (майбутня)
- OpenSSL 1.0.1g
- OpenSSL 1.0.0 (та релізи гілки 1.0.0)
- OpenSSL 0.9.8 (та релізи гілки 0.9.8)
Реакція
Системним адміністраторам рекомендується або використовувати OpenSSL 1.0.1g, або перекомпілювати бібліотеку OpenSSL з ключем DOPENSSL_NO_HEARTBEATS, відключаючи вразливе розширення до тих пір, поки не представиться можливим оновити ПЗ. Незважаючи на те, що накладення патча вирішує проблему, запущені програми використовуватимуть підвантажений і все ще уразливий код OpenSSL, поки кожен з додатків не буде перезапущений, дозволяючи підвантажити виправлений код. Оскільки всі використані вразливою версією OpenSSL сертифікати та паролі можуть вважатися скомпрометованими, всі закриті ключі повинні бути перевипущені і всі паролі змінені.
У день оголошення Tor Project випустив повідомлення, що радило всім охочим «надійної анонімності або приватності в Інтернеті» «триматися подалі від Інтернету кілька днів, поки все не вляжеться».
Власники сайтів та платформ, наприклад, Wikimedia Foundation, радять своїм користувачам змінити паролі.
Проект OpenBSD заснував LibreSSL, у рамках якого розвивається форк OpenSSL, націлений на забезпечення вищого рівня безпеки. З аналогічною метою з'явився проект BoringSSL від компанії Google.
Див. також
Посилання
- Summary and Q&A about the bug. (англ.)
- Наслідки OpenSSL HeartBleed. Хабрахабр. (рос.)
Примітки
- Heartbleed(англ.)
- Звернення Вікімедіа щодо вразливості безпеки через помилку «heartbleed»
- TLS heartbeat read overrun (CVE-2014-0160)
- В OpenSSL обнаружена критическая уязвимость, которая может привести к утечке закрытых ключей // opennet.ru 08.04.2014
- Heartbleed
- Heartbleed-уязвимость в OpenSSL могла эксплуатироваться с ноября прошлого года