JSON Manipulation durch Cross-Site Request Forgery
Bei Ajaxian entdeckte ich gerade einen interessantes Thema. CSRF und JSON. Dabei wird das Opfer auf eine Seite gelockt die das Verhalten des Array Objekts überschreibt, Daten manipuliert und einen offene JSON Service - zudem das Opfer Zugang hat - aufruft und das Resultat absetzt. Beispiel einer solchen Modifikation:
-
function Array(){ alert('Array kreiert') }
-
var bla = ['mein', 'normales', 'array', 'geheim']
Davon ausgehend das die Daten des JSON Dienstes in einem Array sind, würde unsere Funktion also aufgerufen. Allein durch die vereinfachte Deklaration des Arrays wird meine neudefinierte Funktion verwendet und ein "Array kreiert" gemeldet.
-
function Array() {
-
this[1] = 50;
-
}
-
var a = [40];
-
alert(a[0] + a[1]); // Gives 90
In diesem Beispiel von Ajaxian wurde die Funktion so umgeschrieben das der erste Wert gleich 50 ist. Der anhnungslose Benutzer würde dieses modifizierte Array Ungesehen weitersenden, jedoch mit seiner Zustimmung. Der Dienst selbst würde nicht wissen das die Datenmodifikation ungewollt ist und diese verarbeiten.
Generell eine clevere Sache. Wie ich aber schon dort als Kommentar hinterliess, bin ich recht unbeeindruckt von dieser Methode. Ich würde niemals sensitive Daten ausserhalb meiner Domain zugänglich machen. Ich persönlich überprüfe immer wie die Daten gesendet wurden (vllt. via XHR?), was für Daten erwartet werden, woher die Anfrage stammt und ob eine Berechtigung vorliegt. Bei dieser Methode ist genau die Frage nach der Berechtigung ausgehebelt, aber nicht ob die Daten innerhalb der erlaubten Parameter liegen und ob der Aufruf überhaupt möglich ist. Das schöne an Ajax ist beispielweise, dass man eben nicht auf andere Domains zugreifen kann. Wenn man nun der Applikation keine andere Kommunikation erlaubt um JSON anzufordern, oder Daten zu modifizieren, oder JSON Daten letztendlich zu manipulieren, ist man eigentlich auf der sicheren Seite.
~GetDEF(CSRF)~
