Вразливість обходу перевірки імені хоста в 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.11

Вийшов Ruby 3.2.11. Цей реліз містить оновлення gem zlib, яке усуває CVE-2026-27820.

Опублікував hsbt 27-03-2026

Більше новин...