Вразливість обходу перевірки імені хоста в 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 4.0.5
Вийшов Ruby 4.0.5.
Опублікував k0kubun 20-05-2026
Вийшов Ruby 4.0.4
Вийшов Ruby 4.0.4.
Опублікував k0kubun 11-05-2026
Вийшов Ruby 4.0.3
Вийшов Ruby 4.0.3.
Опублікував k0kubun 21-04-2026
Вийшов Ruby 3.2.11
Вийшов Ruby 3.2.11. Цей реліз містить оновлення gem zlib, яке усуває CVE-2026-27820.
Опублікував hsbt 27-03-2026