Letztens entdeckten wir eine CSRF Lücke in den Hilfeseiten von Facebook. Da die Lücke nicht wirklich kritisch war, wurde diese von Facebooks Security Team zurückgewiesen. Wir wurden von einigen Twitterern gebeten trotzdem darüber zu bloggen.
Die “Sicherheitslücke” war wirklich unkritisch, da kaum bzw. keine Veränderung von Benutzerdaten möglich war, sodass wir Facebooks Entscheidung gelassen aufnehmen. Von daher erwartet keinen außergewöhnlichen Fund :)
Facebook betreibt eigene FAQ/Hilfeseiten, welche man hier finden kann: Facebook FAQ/Hilfe.
Dort gibt es ein Suchfeld im oberen Bereich der Seite. Gibt man dort ein Stichwort ein, so werden einem verschiedene Themenvorschläge in einem Dropdown aufgelistet.
Klickt man nun auf einen dieser Vorschläge, so wird der folgende Request an die Facebookserver geschickt:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Zurück kommt die folgende Antwort, welche einen auf den entsprechenden FAQ Eintrag (faq_id) weiterleitet.
1 2 3 4 5 6 7 8 9 10 |
|
Der Parameter namens ”fb_dtsg” ist eines der von Facebook genutzten CSRF Token. Das Token bzw. der Parameter wurde serverseitig nicht überprüft, sodass CSRF Angriffe möglich waren.
Man konnte sogar den Request Body auf einen Parameter reduzieren:
1
|
|
Da wir leider nicht wissen, ob bzw. wie der Parameter “user_query” in Verbindung mit dem angemeldeten Benutzer gebracht wird, können wir mit der Lücke erstmal nicht viel anfangen. Generell sind Vermutungen aber keine praktikable Lösung.
Wir können zusammenfassen: Wir haben zwar eine CSRF Lücke - mit dieser lässt sich aber kaum Schaden anrichten, da keine direkte Verbindung zu Benutzerdaten besteht. Wir haben trotzdem unser Glück versucht und die Lücke gemeldet. Wie zu erwarten war, kam die folgende Antwort von “Arya”:
1
|
|
Interessant: Warum validiert ein CSRF-Framework die Tokens nicht korrekt? ;)
Timeline:
06.02.2014: Lücke an Facebook gemeldet
06.02.2014: Antwort, das es nicht wirklich kritisch bzw. ein Problem ist
10.02.2014: Veröffentlichung des Blogposts
Das Team der Internetwache.org