Виправлення безпеки для модуля Ruby OpenSSL: Дозволити "0/n splitting" як запобігання атаці TLS BEAST.

Опублікував Urabe Shyouhei 16-02-2012
Переклав: Andrii Furmanets

В OpenSSL, опція SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS для SSL з’єднання використовується для запобігання вразливості TLS-CBC-IV, описаної в [1]. Це відома проблема TLSv1/SSLv3, але вона привертає багато уваги останнім часом як атака BEAST [2] (CVE-2011-3389). Теми, пов’язані з Ruby , знаходяться в нашому трекері проблем [3].

До тепер розширення Ruby OpenSSL використовує опцію SSL_OP_ALL, комбіновану опцію OpenSSL для різних обхідних шляхів помилок, які повинні бути досить нешкідливими, для всіх SSL з’єднань за замовчуванням. І воно лише дозволяє користувачам додавати інші опції, тому ви не могли видалити функцію, яка включена в опцію SSL_OP_ALL, таку як SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS. Це було навмисним, оскільки воно не розкривало константи, такі як SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS, але ми повинні дозволити скасувати опцію, щоб розширення Ruby OpenSSL вставляло порожні фрагменти на початку SSL з’єднань (називається “0/n splitting”) для запобігання атаці TLS BEAST.

Цей випуск визначає додаткові константи та дозволяє користувачам скасувати опції в SSL_OP_ALL. Опція за замовчуванням все ще SSL_OP_ALL, але ви можете налаштувати SSLSocket з виконанням “0/n splitting” для запобігання BEAST , як це.

ctx = SSLContext.new
ctx.options = OP_ALL & ~OP_DONT_INSERT_EMPTY_FRAGMENTS
ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER
SSLSocket.new(socket, ctx)

Подяка Apple за повідомлення про цю проблему.

ПРИМІТКА: Деякі SSL кінцеві точки відомі тим, що мають помилку, яка не може обробити “0/n splitting” правильно, тому ми (і OpenSSL) не встановлюємо це як опцію за замовчуванням. Будь ласка, протестуйте підключення SSL перед увімкненням цього в виробничому середовищі. Якщо інша кінцева точка, до якої ви підключаєтеся, не може обробити “0/n splitting”, ви повинні використовувати інший обхідний шлях для запобігання атаці TLS BEAST, наприклад, примусове використання набору шифрів RC4. Для деталей, будь ласка, знайдіть обговорення та ресурси навколо CVE-2011-3389.

Останні новини

Вийшов 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

Вийшов Ruby 4.0.0 preview3

Раді повідомити про вихід Ruby 4.0.0-preview3. Ruby 4.0 вводить Ruby::Box і “ZJIT” та додає багато покращень.

Опублікував naruse 18-12-2025

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