Виправлення безпеки для модуля 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.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
Вийшов Ruby 3.3.11
Вийшов Ruby 3.3.11. Цей реліз містить оновлення gem zlib, яке усуває CVE-2026-27820, а також кілька виправлень помилок.
Опублікував hsbt 26-03-2026
Вийшов Ruby 4.0.2
Вийшов Ruby 4.0.2.
Опублікував k0kubun 16-03-2026