Eine Schwachstelle in Ruby on Rails hat zur Folge, dass ein entfernter Angreifer Cross-Site-Skripting-Attacken durchführen kann.
Das Problem besteht darin, dass das Feature “option_tags” in “form_options_helper.rb” sowie die Funktion “SafeBuffer#[]” benutzerdefinierten HTML-Code nicht ordentlich filtern. Daher ist ein entfernter Angreifer in der Lage, Cross-Site-Skripting-Attacken durchzuführen, indem er unsicheren HTML-Code einschleust.
Das Problem lässt sich an folgendem Beispiel demonstrieren:
x = 'foo'.html_safe
x.html_safe? # => true
x.gsub!('f', 'user input').html_safe? # => false
x[0..-1].html_safe? # => true
Zunächst wird hier der String ‘foo’ als HTML-sicher markiert. Die Substitution in der dritten Zeile via “gsub” führt dazu, dass der String nicht mehr HTML-sicher ist. Dies ist auch sinnvoll, da an dieser Stelle ‘f’ durch ‘user input’ ersetzt wird. Dabei könnte es sich auch um eine Benutzereingabe handeln, die unerwünschte Escape-Zeichen enthält. Deshalb wird dieser String als nicht sicher markiert. Allerdings führt ein Zugriff auf x via [] dazu, dass der resultierende String wieder als HTML-sicher markiert ist, was nicht geschehen sollte, da der zurückgelieferte String kritische Zeichen enthalten kann.
Betroffen sind die Versionen vor 3.0.12, 3.1.4 und 3.2.2.

