Sicherheitskorrektur für das Ruby OpenSSL-Modul: Erlaubt "0/n-Splitting" als Schutz vor dem TLS BEAST-Angriff.

Gepostet von Urabe Shyouhei am 16. Feb 2012

In OpenSSL wird die Option SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS für SSL-Verbindungen verwendet, um die TLS-CBC-IV-Schwachstelle zu verhindern, die unter [1] beschrieben ist. Es ist ein bekanntes Problem von TLSv1/SSLv3, das jedoch heutzutage als BEAST-Angriff [2] (CVE-2011-3389) viel Aufmerksamkeit erregt. Ruby-bezogene Themen finden Sie in unserem Issue-Tracker [3].

Bisher verwendete die Ruby OpenSSL-Erweiterung standardmäßig für alle SSL-Verbindungen die Option SSL_OP_ALL, eine Kombination von OpenSSL-Optionen für verschiedene Fehlerumgehungen, die eher harmlos sein sollten. Und sie erlaubte den Benutzern nur, andere Optionen hinzuzufügen, sodass man Funktionen, die in der Option SSL_OP_ALL enthalten sind, wie SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS, nicht entfernen konnte. Dies war beabsichtigt, da keine Konstanten wie SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS offengelegt wurden, aber wir sollten das Entfernen der Option erlauben, damit die Ruby OpenSSL-Erweiterung leere Fragmente am Anfang von SSL-Verbindungen einfügt (sogenanntes "0/n-Splitting"), um den TLS BEAST-Angriff zu verhindern.

Diese Veröffentlichung definiert zusätzliche Konstanten und erlaubt Benutzern, Optionen in SSL_OP_ALL zu entfernen. Die Standardoption ist weiterhin SSL_OP_ALL, aber Sie können den SSLSocket wie folgt einrichten, um "0/n-Splitting" zur BEAST-Prävention durchzuführen.

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

Dank an Apple für die Meldung dieses Problems.

HINWEIS: Es ist bekannt, dass einige SSL-Endpunkte einen Fehler haben, der "0/n-Splitting" nicht korrekt verarbeiten kann. Daher setzen wir (und OpenSSL) dies nicht als Standardoption. Bitte testen Sie die SSL-Konnektivität, bevor Sie dies in einer Produktionsumgebung aktivieren. Wenn der andere Endpunkt, mit dem Sie sich verbinden, "0/n-Splitting" nicht verarbeiten kann, müssen Sie eine andere Umgehung zur Verhinderung des TLS BEAST-Angriffs verwenden, wie z. B. die Erzwingung von ciphersuite zur Verwendung von RC4. Weitere Details finden Sie in den Diskussionen und Ressourcen rund um CVE-2011-3389.

Aktuelle Nachrichten

Ruby 4.0.0 veröffentlicht

Wir freuen uns, die Veröffentlichung von Ruby 4.0.0 bekannt zu geben. Ruby 4.0 führt „Ruby Box“ und „ZJIT“ ein und bringt viele Verbesserungen mit sich.

Veröffentlicht von naruse am 25. Dez 2025

Ein neuer Look für Rubys Dokumentation

Nach dem Redesign von ruby-lang.org gibt es weitere Neuigkeiten zur Feier des 30-jährigen Jubiläums von Ruby: docs.ruby-lang.org hat ein komplett neues Erscheinungsbild mit Aliki – dem neuen Standard-Theme von RDoc.

Veröffentlicht von Stan Lo am 23. Dez 2025

Neues Website-Erscheinungsbild

Wir freuen uns, ein umfassendes Redesign unserer Website bekannt zu geben. Das Design für dieses Update wurde von Taeko Akatsuka erstellt.

Veröffentlicht von Hiroshi SHIBATA am 22. Dez 2025

Ruby 4.0.0 preview3 veröffentlicht

Wir freuen uns, die Veröffentlichung von Ruby 4.0.0-preview3 bekannt zu geben. Ruby 4.0 führt Ruby::Box und „ZJIT“ ein und bringt viele Verbesserungen mit sich.

Veröffentlicht von naruse am 18. Dez 2025

Weitere Neuigkeiten...