Вразливість у TLS, що допускає визначення ключа для з'єднань на базі шифрів DH

Розкрито відомості про нову уразливості (CVE-2020-1968) у протоколі TLS, що отримала кодове ім'я
Єнот і дозволяє за рідкісного збігу обставин визначити попередній первинний ключ (pre-master), який можна використовувати для розшифровки TLS-з'єднань, у тому числі HTTPS, при перехопленні транзитного трафіку (MITM). Наголошується, що атака дуже складна для практичної реалізації і більше має теоретичний характер. Для проведення атаки потрібна специфічна конфігурація TLS-сервера і можливість точного виміру часу обробки операцій сервером.

Проблема присутня безпосередньо у специфікації TLS і зачіпає лише з'єднання, що використовують шифри на основі протоколу обміну ключами DH (Diffie-Hellman, TLS_DH_*»). Із шифрами ECDH проблема не проявляється, і вони залишаються безпечними. Вразливі лише протоколи TLS до версії 1.2 включно, протокол TLS 1.3 проблемі не схильний. Вразливість проявляється у реалізаціях TLS, які повторно використовують секретний ключ DH у різних TLS-з'єднаннях (подібна поведінка спостерігається приблизно на 4.4% серверів з рейтингу Alexa Top 1M).

В OpenSSL 1.0.2e і попередніх випусках первинний ключ DH повторно використовується у всіх серверних з'єднаннях, якщо явно не виставлена ​​опція SSL_OP_SINGLE_DH_USE. Починаючи з OpenSSL 1.0.2f, первинний ключ DH повторно використовується тільки при використанні статичних DH-шифрів («DH-*», наприклад «DH-RSA-AES256-SHA»). В OpenSSL 1.1.1 вразливість не виявляється, оскільки в цій гілці не використовується первинний ключ DH і не використовуються статичні DH-шифри.

При використанні методу обміну ключами DH обидві сторони з'єднання генерують випадкові закриті ключі (далі ключ «a» та ключ «b»), на основі яких обчислюються та відправляються відкриті ключі (ga mod p та gb mod p). Після отримання відкритих ключів кожною стороною обчислюється загальний первинний ключ (gab mod p), який застосовується формування сесійних ключів. Атака Raccoon дозволяє визначити первинний ключ через аналіз інформації по стороннім каналам, відштовхуючись від того, що в специфікаціях TLS аж до версії 1.2 пропонується відкидати всі початкові нульові байти первинного ключа перед обчисленнями за його участю.

У тому числі урізаний первинний ключ передається у функцію генерації сесійного ключа, засновану на хеш-функціях з відмінними затримками при обробці різних даних. Точне вимірювання часу виконуваних сервером операцій із ключем дозволяє атакуючому визначити підказки (oracle), які дозволяють судити у тому, починається первинний ключ із нуля чи ні. Наприклад, атакуючий може перехопити відправлений клієнтом відкритий ключ (ga), перенаправити його на сервер і визначити
чи починається з нуля результуючий первинний ключ.

Саме по собі визначення одного байта ключа нічого не дає, але перехопивши передане при узгодженні з'єднання клієнтом значення ga атакуючий може сформувати набір інших значень, пов'язаних з ga і відправити їх на сервер в окремих сеансах узгодження з'єднання. Формуючи та відправляючи значення «gri*ga», атакуючий може через аналіз зміни затримок у відповіді сервера визначити значення, що призводять до отримання первинних ключів, що починаються з нуля. Визначивши подібні значення атакуючий, може скласти набір рівнянь для рішення проблеми прихованих чисел та обчислити вихідний первинний ключ.

Вразливість у TLS, що допускає визначення ключа для з'єднань на базі шифрів DH

В OpenSSL вразливості привласнений низький рівень небезпеки, а виправлення звелося до переміщення у випуску 1.0.2w проблемних шифрів "TLS_DH_*" у відключену за замовчуванням категорію шифрів з недостатнім рівнем захисту ("weak-ssl-ciphers"). Аналогічно надійшли розробники Mozilla, які відключили у бібліотеці NSS, яка використовується у Firefox, набори шифрів DH та DHE. Починаючи з Firefox 78, проблемні шифри відключені. У Chrome підтримка DH була припинена ще 2016 року. Бібліотеки BearSSL, BoringSSL, Botan, Mbed TLS та s2n проблемі не схильні, оскільки не підтримують шифри DH або статичні варіанти шифрів DH.

Окремо зазначаються додаткові проблеми (CVE-2020-5929) у TLS-стеку пристроїв F5 BIG-IP, що роблять атаку більш реалістичною. Зокрема, були виявлені відхилення в поведінці пристроїв за наявності нульового байта на початку первинного ключа, які можна використовувати замість точного вимірювання часу затримки при обчисленнях.

Джерело: opennet.ru

Додати коментар або відгук