| 

.NET C# Java Javascript Exception

6
Vor mittlerweile zwei Monaten hat Egor Homakov mit einem kleinen Hack auf eine potentielle Lücke durch Attributzuweisungen in Rails-Anwendungen aufmerksam gemacht. Die Rails Entwickler haben sich des Problems angenommen und mit Rails 3.2.3 eine Lösung für alle neuen Rails-Anwendungen geschaffen. Doch wie aktualisiert man eine bestehende? Worum geht es? Attributzuweisungen sind integraler Bestandteil von Rails

(More)…

Vor mittlerweile zwei Monaten hat Egor Homakov mit einem kleinen Hack auf eine potentielle Lücke durch Attributzuweisungen in Rails-Anwendungen aufmerksam gemacht. Die Rails Entwickler haben sich des Problems angenommen und mit Rails 3.2.3 eine Lösung für alle neuen Rails-Anwendungen geschaffen. Doch wie aktualisiert man eine bestehende?

Worum geht es?
Attributzuweisungen sind integraler Bestandteil von Rails und erlauben das einfache und bequeme Setzen mehrerer Model-Attribute auf einmal. Oft kommt das Konstrukt beim Anlegen oder Aktualisieren neuer Models in Controllern zum Einsatz.

Model.new(params[:model])

Doch genau dadurch hat ein Angreifer potentiellen Zugriff auf alle Attribute eines Models.
Wer es genauer wissen möchte, sei auf den Abschnitt Mass Assignments aus dem Rails Security Guide verwiesen.

Was ist die Lösung?
Seit Rails 3.2.3 wird in neuen Anwendungen standardmäßig ein Whitelist Modus für Attribute in jedem Model aktiviert. Das bedeutet, Entwickler müssen jedes Attribut, welches durch Mass Assignment zugewiesen werden soll, mittels attr_accessible oder attr_protected in eine Whitelist aufnehmen. Alle anderen Attribute können nur einzeln und nicht per Mass Assignment zugewiesen werden.

Update bestehender Anwendungen
Bestehende Anwendungen müssen erst auf Rails 3.2.3 aktualisiert werden. Das geschieht am einfachsten durch Anpassen der Gemfile Datei mit

gem 'rails', '3.2.3'

und anschließendem bundle update rails.

Bleibt noch die Whitelist für alle Modelle über die config/application.rb zu aktivieren.

# Enforce whitelist mode for mass assignment.
# This will create an empty whitelist of attributes available for mass-assignment for all models
# in your app. As such, your models will need to explicitly whitelist or blacklist accessible
# parameters by using an attr_accessible or attr_protected declaration.
config.active_record.whitelist_attributes = true

Danach ist die Anwendung sicher und es beginnt die eigentliche Arbeit :)
Wohl dem, der eine hohe Testabdeckung hat. Denn die Tests, die vor dem Update hoffentlich durchgelaufen sind, meckern jetzt fehlende Whitelist Einträge an. Die gilt es nachzupflegen.

Nach diesen einfachen Schritten mit etwas Monkey-Work am Ende gehört die Mass-Assignment Lücke der Vergangenheit an.

sicherheit ruby rails ruby-on-rails
Weitere News:
Schreibe einen Kommentar:
Themen:
ruby-on-rails rails ruby sicherheit
Entweder einloggen... ...oder ohne Wartezeit registrieren
Benutzername
Passwort
Passwort wiederholen
E-Mail