Exception-Methoden können $SAFE umgehen
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:
$secret_path = "foo"
proc do
$SAFE = 4
Exception.new($secret_path).to_s
$secret_path.replace "/etc/passwd"
end.call
open($secret_path) do
...
endBetroffene 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.
Aktuelle Neuigkeiten
Ruby 3.4.2 veröffentlicht
Ruby 3.4.2 wurde veröffentlicht.
Geschrieben von k0kubun am 14.2.2025
Ruby 3.2.7 veröffentlicht
Ruby 3.2.7 wurde veröffentlicht.
Geschrieben von nagachika am 4.2.2025
Ruby 3.3.7 veröffentlicht
Ruby 3.3.7 wurde veröffentlicht.
Geschrieben von k0kubun am 15.1.2025
Ruby 3.4.0 veröffentlicht
Wir freuen uns, die Veröffentlichung von Ruby 3.4.0 bekannt zu geben. Ruby 3.4 führt den it-Blockparameter ein, ändert Prism zum Standardparser, bietet Happy Eyeballs Version...
Geschrieben von naruse am 25.12.2024