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

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

Weitere Neuigkeiten...