Вразливість обходу перевірки імені хоста в SSL клієнті (CVE-2013-4073)
Опублікував nahi 27-06-2013
Переклав: Andrii Furmanets
Вразливість у SSL клієнті Ruby, яка може дозволити зловмисникам man-in-the-middle підробляти SSL сервери через дійсний сертифікат, виданий довіреним центром сертифікації.
Цій вразливості присвоєно ідентифікатор CVE CVE-2013-4073.
Резюме
SSL клієнт Ruby реалізує перевірку ідентичності імені хоста, але він не правильно обробляє імена хостів у сертифікаті, які містять null байти.
Деталі
OpenSSL::SSL.verify_certificate_identity реалізує перевірку ідентичності сервера RFC2818
для SSL клієнта Ruby, але він не правильно обробляє
імена хостів у розширенні subjectAltName X509, які містять null байти.
Існуючий код у lib/openssl/ssl.rb використовує OpenSSL::X509::Extension#value
для витягування ідентичності з subjectAltName. Extension#value залежить від
функції OpenSSL X509V3_EXT_print(), і для dNSName subjectAltName він
використовує sprintf(), яка відома як небезпечна для null байтів. В результаті
Extension#value повертає ‘www.ruby-lang.org’, якщо subjectAltName є
‘www.ruby-lang.org\0.example.com’, і
OpenSSL::SSL.verify_certificate_identity неправильно ідентифікує
сертифікат як один для ‘www.ruby-lang.org’.
Коли CA, якому довіряє SSL клієнт, дозволяє видати серверний сертифікат , який має null байт у subjectAltName, віддалені зловмисники можуть отримати сертифікат для ‘www.ruby-lang.org\0.example.com’ від CA, щоб підробити ‘www.ruby-lang.org’ та зробити атаку man-in-the-middle між SSL клієнтом Ruby та SSL серверами.
Зачеплені версії
- Всі версії ruby 1.8 до ruby 1.8.7 рівня патчу 374
- Всі версії ruby 1.9 до ruby 1.9.3 рівня патчу 448
- Всі версії ruby 2.0 до ruby 2.0.0 рівня патчу 247
- до ревізії trunk 41671
Рішення
Всім користувачам рекомендується оновитися до Ruby 2.0.0-p247, 1.9.3-p448 або 1.8.7-p374.
Подяка
Цю вразливість знайшов William (B.J.) Snow Orvis та скоординував з security@ruby-lang.org David Thiel з iSEC Partners.
Історія
- Спочатку опубліковано 2013-06-27 11:00:00 (UTC)
Останні новини
Вийшов Ruby 3.2.10
Вийшов Ruby 3.2.10.
Опублікував hsbt 14-01-2026
Вийшов Ruby 4.0.1
Вийшов Ruby 4.0.1.
Опублікував k0kubun 13-01-2026
Вийшов Ruby 4.0.0
Ми раді повідомити про випуск Ruby 4.0.0. Ruby 4.0 представляє “Ruby Box” та “ZJIT”, а також додає багато покращень.
Опублікував naruse 25-12-2025
Новий вигляд документації Ruby
Слідом за ре-дизайном ruby-lang.org, ми маємо більше новин, щоб відсвяткувати 30-річчя Ruby: docs.ruby-lang.org має повністю новий вигляд завдяки Aliki — новій темі за замовчуванням для...
Опублікував Stan Lo 23-12-2025