FREAK
FREAK (англ. Factoring RSA Export Keys) — вразливість в реалізації TLS/SSL. Уразливість полягає в недостатній перевірці при виконанні TLS Handshake на стороні клієнта, що призводить до можливості знизити шифрування під час виконання атаки «людина посередині» до використання 512-бітних ключів RSA (RSA_EXPORT ключі), які можуть бути підібрані зловмисником протягом декількох годин. Уразливість була знайдена в 2015 році, а сама помилка існувала з 1990-х[1].
Історія
На початку 1990-х був винайдений протокол SSL в Netscape Communications. Приблизно з середини XX століття, в США діяв закон про обмеження експорту стійких шифрів за межі країни. Дозволялося експортувати тільки спеціально ослаблені версії шифрів, наприклад, з ключами 40 або 56 біт для симетричного і 512 біт для асиметричного шифрування. Для RSA дозволялося мати 512-бітний ключ[1].
Причини появи вразливості
Після виявлення проблем з державними система було виявлено, що сервера використовують кілька основних браузерів (включаючи браузери Safari і OpenSSL на Android). Ця атака націлена на клас свідомо слабких наборів шифраторів експорту. Як випливає з назви, цей клас алгоритмів був введений під тиском агентств урядів США, щоб гарантувати, що вони зможуть розшифрувати всі закордонні шифровані повідомлення, в той час як більш сильні алгоритми були заборонені до експорту (оскільки вони були класифіковані як військова зброя)[2].
Підтримка цих слабких алгоритмів залишилася в багатьох реалізаціях, таких як OpenSSL, хоча вони за умовчанням відключені; проте виявлено, щр користувач, використовуючи можливості шифрування, може «обдурити» браузер, який використовувати слабкий ключ експорту. Підібрати 512-бітний RSA ключ можна на Amazon EC2 за 7-8 годин. Такий ключ коштує 100 доларів[2].
Атака
Частина сучасних TLS клієнтів (в їх числі Apple TLS/SSL і OpenSSL) мають помилку. Ця помилка дозволяє TLS клієнту приймати RSA_EXPORT ключ, навіть якщо клієнт не запитував цей ключ. Використовуючи дану вразливість можна ініціювати атаку «людина посередині» для ослаблення рівня шифрування.
Атака «людина посередині» працює так:
- У клієнтському Hello повідомленні запитується стандартний RSA шифр.
- Зловмисник змінює повідомлення, щоб зробити запит RSA_EXPORT.
- Сервер відповідає з 512-бітовим RSA_EXPORT ключем, який підписаний довгостроковим ключем.
- Зловмисник перехоплює повідомлення і відправляє клієнту ослаблений ключ.
- Клієнт приймає ослаблений ключ, так як існує вразливість в TLS/SSL.
- Зловмисник факторізує RSA модулі й виявляє відповідний RSA ключ для дешифрування.
- Коли клієнт шифрує «pre-master secret» і відправляє серверу, зловмисник тепер може розшифрувати це й отримати TSL «master secret»
- З цього моменту зловмисник бачить нешифрований текст[1].
Вразливості соцмережі Facebook
Окрім вебсайтів, сервери HTTPS, які забезпечують експортні ciphersuites, включають ті, на яких розміщується популярний сторонній JavaScript, наприклад, SDK для JavaScript JavaScript (завантажується на більшості сайтів, які використовують кнопку на Facebook Like або Login). Видаючи за такі вразливі сервери сценаріїв, зловмисник може вводити довільний JavaScript в будь-яку кількість невинних сторонніх вебсайтів, щоб вкрасти призначені для користувача дані (наприклад, паролі), введені на цих сайтах. Зловмисник може виконувати поширені атаки XSS після факторингу 512-бітного модуля RSA для connect.facebook.net (сайту, який служить SDK для JavaScript у Facebook)[2].
Вразливі ПЗ
Вразливості піддаються як клієнтські, так і серверні системи, а також різноманітне ПЗ. В тому числі:
- OpenSSL (вразливість виправлена в 0.9.8zd, 1.0.0p і 1.0.1k).
- Застарілі версії Chrome на Mac OS і Android (випущено екстрене оновлення).
- Internet Explorer на всіх клієнтських і серверних версіях Windows.
- Dolphin, Opera і вбудований браузер на Android.
- Safari і Opera на OS X.
- Safari і Dolphin на iOS.
- Opera на Mac OS і Linux.
- Blackberry Browser.
Firefox до проблемних не відноситься, оскільки не використовує OpenSSL[3].