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

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