CVE-2018-16395: Gleichheitsprüfung mit OpenSSL::X509::Name funktioniert nicht richtig

Die Gleichheitsprüfung mit OpenSSL::X509::Name, die in der mit Ruby ausgelieferten OpenSSL-Erweiterungsbibliothek enthalten ist, funktioniert nicht richtig. Diese Sicherheitslücke wurde die CVE-Nummer CVE-2018-16395 zugewiesen.

Details

Eine Instanz von OpenSSL::X509::Name enthält Elemente wie CN, C, usw. Zwei Instanzen von OpenSSL::X509::Name sind nur dann gleich, wenn alle diese Elemente genau gleich sind. Es gibt aber einen Fehler in der Gleichheitsprüfungsroutine, der dazu führt, dass die Gleichheitsprüfung ein falsches Ergebnis liefert, wenn der Wert eines Elements des Arguments (rechte Seite) mit dem Wert des entsprechenden Empfängerelements (linke Seite) beginnt. Wenn ein so präpariertes X.509-Zertifikat mit einem bestehenden Zertifikat verglichen wird, kann es passieren, dass die zwei Zertifikate fälschlicherweise für gleich gehalten werden.

Es wird dringlichst empfohlen, so bald wie möglich die eigene Ruby-Installation zu aktualisieren oder den nachfolgenden Workaround anzuwenden.

Betroffene Versionen

  • Ruby 2.3er-Serie: 2.3.7 und früher
  • Ruby 2.4er-Serie: 2.4.4 und früher
  • Ruby 2.5er-Serie: 2.5.1 und früher
  • Ruby 2.6er-Serie: 2.6.0-preview2 und früher
  • Trunk vor Revision r65139

Workaround

Das Problem ist im OpenSSL-Gem mit Version 2.1.2 und später behoben worden. Wenn Sie Ruby 2.4 oder neuer einsetzen, können Sie daher auch das OpenSSL-Gem auf die neueste Version aktualisieren.

gem install openssl -v ">= 2.1.2"

Dies ist jedoch in der 2.3er-Serie von Ruby nicht möglich, da die mitgelieferte Version des OpenSSL-Gems hier nicht überschrieben werden kann. In diesem Fall müssen Sie Ihre Ruby-Installation auf die neueste Version aktualisieren.

Dankasgung

Dank an Tyler Eckstein, der den Fehler gemeldet hat.

Historie

  • Erstveröffentlichung am 2018-10-17 14:00:00 (UTC)
  • Erwähne die Trunk-Revision, in der das Problem behoben wurde am 2018-10-19 00:00:00 (UTC)