Geschrieben von Quintus am 18.2.2011
Die Methode Exception#to_s kann missbraucht werden, um die Überprüfung
von $SAFE
zu umgehen, was unsicherem Code erlaubt, beliebige Strings
zu verändern.
Das Konzept von Rubys $SAFE
-Variablen auf Stufe 4 erlaubt es,
unsicheren Code (wie z.B. Plugins), in einem sicheren Kontext
auszuführen. Das bedeutet, dass bei höhren Stufen einige Einstellungen
vorgenommen werden, die Attacken auf äußeren (sicheren) Code verhindern
sollen.
Es ist bekannt geworden, dass Exception#to_s sich hier problematisch verhält. Mithilfe dieser Methode kann man den Mechanismus der Sicherheitsstufen umgehen und einen untainted String destruktiv bearbeiten und in einen tainted umwandeln. Damit kann ein Angreifer beliebige untainted Strings wie folgt verändern:
Betroffene Versionen
Glücklicherweise sind solche Attacken in der 1.9er-Serie von Ruby wirkungslos. Es sind lediglich die folgenden Versionen betroffen:
- Ruby 1.8.6-p420 und alle vorherigen Versionen
- Ruby 1.8.7-p330 und alle vorherigen Versionen
- Entwicklerversionen von Ruby 1.8 (1.8.8-dev)
Lösungen
Aktualisiere auf eine neuere Version.
Updates
Ruby 1.8.7-p334 wurde zur Behandlung des Problems veröffentlicht. Nutzern von 1.8.7 wird empfohlen, zu aktualisieren.