Виправлення безпеки для модуля 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
Оновлення айдентики нашого сайту
Раді оголосити про комплексне оновлення нашого сайту. Дизайн для цього оновлення створила Taeko Akatsuka.
Опублікував Hiroshi SHIBATA 22-12-2025
Вийшов Ruby 4.0.0 preview3
Раді повідомити про вихід Ruby 4.0.0-preview3. Ruby 4.0 вводить Ruby::Box і “ZJIT” та додає багато покращень.
Опублікував naruse 18-12-2025