Heap-Überlauf beim Parsen von Floating-Point (CVE-2013-4164)

Es gibt einen Überlauf beim Parsen von Gleitkommazahlen in Ruby. Dieser Sicherheitslücke ist die CVE-Nummer CVE-2013-4164 zugewiesen worden.

Details

Immer dann, wenn ein String in einer Gleitkommazahl konvertiert wird, kann ein speziell angefertigter String einen Heap-Überlauf verursachen, was für einen Denial-of-Service-Angriff mithilfe von Segmentation Faults ausgenutzt werden kann und möglicherweise die Ausführung beliebigen Codes ermöglicht. Jedes Programm, das nicht vertrauenswürdigen Input in Gleitkommazahlen konvertiert (was typischerweise bei der Verarbeitung von JSON der Fall ist), ist verwundbar.

Verwundbarer Code sieht etwa so aus:

untrusted_data.to_f

Jedoch ist jeder Code, der Gleitkommawerte aus externen Daten generiert, verwundbar, beispielsweise so:

JSON.parse untrusted_data

Beachten Sie, dass dieser Fehler CVE-2009-0689 ähnelt.

Alle Nutzer, die ein betroffenes Release verwenden, sollten auf die FIXED-Versionen von Ruby aktualisieren.

Betroffene Versionen

  • Alle 1.8er Ruby-Versionen nach Ruby 1.8.6 patchlevel 230
  • Alle 1.9er Ruby-Versionen vor Ruby 1.9.3 patchlevel 484
  • Alle 2.0er Ruby-Versionen vor Ruby 2.0.0 patchlevel 353
  • Alle 2.1er Ruby-Versionen vor Ruby 2.1.0 preview2
  • Alle Trunk-Revisionen vor Revision 43780

Lösungen

Allen Nutzern wird empfohlen, auf Ruby 1.9.3 patchlevel 484, Ruby 2.0.0 patchlevel 353 oder Ruby 2.1.0 preview2 zu aktualisieren.

Beachten Sie, dass die 1.8er-Serie von Ruby und frühere Versionen obsolet sind. Es gibt keine Pläne, FIXED-Versionen für diese zu veröffentlichen und es wird daher allen Nutzern solcher Versionen empfohlen, so schnell wie möglich zu aktualisieren, da wir für nicht unterstützte Releases die Verfügbarkeit von Sicherheitsaktualisierungen nicht garantieren können.

Danksagung

Dank an Charlie Somerville für die Meldung dieses Fehlers!

Historie

  • Erstmals veröffentlicht 2013-11-22 04:00:00 UTC
  • Zweitveröffentlicht 2013-11-22 06:46:00 UTC
  • Drittveröffentlicht 2013-11-22 22:46:00 UTC
  • Viertveröffentlicht 2013-12-10 12:09:38 UTC