Exception-Methoden können $SAFE umgehen
Gepostet von Urabe Shyouhei am 18. Feb 2011
Die Exception#to_s-Methode kann verwendet werden, um die $SAFE-Prüfung zu umgehen, was es nicht vertrauenswürdigem Code ermöglicht, beliebige Strings zu ändern.
Detaillierte Beschreibung
In Rubys $SAFE-Semantik wird der sichere Level 4 verwendet, um nicht vertrauenswürdigen Code (wie z. B. Plugins) auszuführen. In höheren sicheren Levels sind bestimmte Operationen verboten, um zu verhindern, dass nicht vertrauenswürdiger Code äußere (vertrauenswürdige) Daten angreift.
Exception#to_s wurde als problematisch eingestuft. Die Methode kann den Safe-Level-Mechanismus austricksen und einen nicht-tainted String destruktiv zu einem tainted String modifizieren. Damit kann ein Angreifer beliebige untainted Strings wie folgt modifizieren:
$secret_path = "foo"
proc do
$SAFE = 4
Exception.new($secret_path).to_s
$secret_path.replace "/etc/passwd"
end.call
open($secret_path) do
...
end
Betroffene Versionen
Glücklicherweise ist dieser Angriff für die 1.9.x-Serie von Ruby unwirksam. Betroffene Versionen sind beschränkt auf:
- Ruby 1.8.6 Patchlevel 420 und alle früheren Versionen
- Ruby 1.8.7 Patchlevel 330 und alle früheren Versionen
- Entwicklungsversionen von Ruby 1.8 (1.8.8dev)
Lösungen
Bitte aktualisieren Sie auf eine neuere Version.
Aktualisierungen
- 1.8.7-334 wurde veröffentlicht, um dieses Problem zu beheben. 1.8.7-Benutzer werden ermutigt, ein Upgrade durchzuführen.
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