Frage:
Sollten Anmelde- und Abmeldeaktionen CSRF-Schutz haben?
Jesvin Jose
2014-07-09 12:25:37 UTC
view on stackexchange narkive permalink

Ich erstelle eine Webanwendung in Django, die CSRF-Token für Sitzungen generiert und enthält (eine Django-Sitzung kann anonym oder ein registrierter Benutzer sein). Sollte ich den CSRF-Schutz für die Controller beibehalten, die Anmelde- und Abmeldeaktionen ausführen?

Websites wie "http: // superlogout.com /" verwenden tatsächlich die Tatsache, dass die meisten Websites keine Abmelde-CSRF haben. (Bevor Sie auf den Link klicken, werden wichtige Websites wie GMail oder EBay aufgerufen und der entsprechende Abmeldeendpunkt aufgerufen, um Sie abzumelden.)
[Hier ist ein praktisches Beispiel] (https://fin1te.net/articles/uber-turning-self-xss-into-good-xss/), das CSRF für die Anmelde- und Abmeldefunktionen von Uber verwendet, um eine XSS-Sicherheitsanfälligkeit auszunutzen.
Fünf antworten:
SilverlightFox
2014-07-09 20:05:31 UTC
view on stackexchange narkive permalink

Möglicherweise sollten Sie sich vor Login CSRF schützen. Ohne diesen Schutz kann ein Angreifer einen CSRF-Angriff effektiv umkehren. Anstatt dass das Opfer in seinem eigenen Konto angemeldet ist und der Angreifer versucht, die Sitzung zu starten, indem er mithilfe der Cookies des Opfers Anfragen an die Site stellt, meldet er sich unter den Anmeldeinformationen des Angreifers auf der Site an, sodass der Angreifer Anfragen an die Website effektiv entführen kann Domain, von der das Opfer glaubte, sie sei anonym oder unter seinem eigenen Konto und sende sie dann an das Konto des Angreifers. Ob dies für Ihre Site relevant ist oder nicht, hängt natürlich von der Art Ihrer Site ab und davon, ob so etwas für einen Angreifer von Vorteil ist. Ein Beispiel ist ein Login-CSRF-Angriff auf eine Suchmaschine, bei dem der Angreifer die gesuchten Begriffe sehen kann, wenn sie unter dem Konto des Angreifers anstatt unter dem des Opfers protokolliert werden.

Die Hauptziele für diese Art von Angriff sind Hier können authentifizierte Aktionen außerhalb der Hauptanwendung selbst ausgeführt werden. z.B. von einem Browser-Plugin oder Widget, das auf einer anderen Site eingebettet ist. Dies liegt daran, dass diese Aktionen durch die Verwendung von Cookies authentifiziert werden. Wenn Sie sich bei einem Angreifer angemeldet haben, wird jede Aktion in seinem Konto aufgezeichnet.

Sie sollten Ihren Abmeldemechanismus auch vor CSRF schützen. Auf den ersten Blick scheint ein Angreifer nur den Benutzer abmelden zu können, was im schlimmsten Fall ärgerlich wäre. Wenn Sie dies jedoch mit einem Phishing-Angriff kombinieren, kann der Angreifer das Opfer möglicherweise dazu verleiten, sich mit seinem eigenen Formular erneut anzumelden und dann die Anmeldeinformationen zu erfassen. Hier finden Sie ein aktuelles Beispiel - LostPass.

Außerdem: Abhängig davon, was Ihre App tut und / oder wie diese Abmeldung ausgelöst werden kann, kann dies zu einem DoS werden, das Kunden verjagt.
@SilverlightFox: Wenn Sie einer Seite tatsächlich hinzufügen, werden Sie von allen Google-Diensten abgemeldet.Wenn sie dies zulassen, liegt dies sicherlich daran, dass csrf zum Abmelden keine signifikante Bedrohung darstellt.
@SilverlightFox Wollen Sie damit sagen: Das Opfer meldet sich mit den Anmeldeinformationen des Angreifers an?Also hat der Angreifer das Opfer auf seinem eigenen Bankkonto eingeloggt?Scheint wie ein einzigartiger Angriff ...
@Alboz: In einem Zahlungsszenario ist dies möglicherweise möglich.Angenommen, in einem Widget gab es eine Funktion zum Generieren eines Zahlungslinks, mit der Sie einen Link zur Website Ihres Zahlungsanbieters abrufen können, damit Benutzer Geld einzahlen können, indem Sie ihnen den Link senden.Wenn der Angreifer Sie als diesen angemeldet hat, wird jedes Mal, wenn Sie einen Link generiert und dieser verwendet wurde, Geld auf das Konto des Angreifers anstatt auf Ihr Konto eingezahlt.
@SilverlightFox ist ein sehr kreatives mentales Szenario, aber völlig nicht realistisch und unmöglich, da in diesem Fall andere Schutzmaßnahmen vorhanden wären.Ich versuche jedenfalls zu sagen, dass dies nur für bestimmte Arten von Websites erforderlich ist.Nicht jede Web-App muss sich beim Anmelden um Reverse CSRF kümmern ... Der einzige Fall, den ich gehört habe, ist Youtube, und der Angreifer hat damit nur gesehen, welche Videos das Opfer gesehen hat ... Die Leute lesen Ihre Antwort und denken, dass dies sogar privat istWeb-Apps ohne Verteidigung gegen Reverse CSRF sind gefährdet. Dies ist nicht der Fall.
@alb Guter Punkt.Antwort bearbeitet.
@SilverlightFox Gut, ich kann Sie jetzt abstimmen.Es ist wichtig, die richtigen Informationen zu geben, da viele Leute eine akzeptierte Antwort hier als "Muss" ansehen.Dies ist eher ein Angriff auf öffentliche Websites als auf Enterprise-Webanwendungen, bei denen der Angreifer einer der Mitarbeiter sein muss, die einen anderen Kollegen angreifen.
security-guest
2015-07-31 19:46:13 UTC
view on stackexchange narkive permalink

CSRF-Schutz beim Abmelden ist ein Muss!

Warum? Nehmen Sie das folgende Szenario an:

  1. Sie befinden sich auf einer Handelsseite und bereiten eine Bestellung für z. 1000 Daimler auf einem Exchange XETRA.
  2. Bis Sie die Bestellung vorbereiten, sendet Ihnen jemand, der weiß, dass Sie angemeldet sind https://anybrokerpage.com/, einen Phishing-Link. z.B. https://anybrokerpage.com/logout
  3. Wenn Sie auf den Link klicken, werden Sie abgemeldet und die Bestellung ist möglicherweise noch nicht abgeschlossen.
  4. Nachdem Sie sich erneut angemeldet haben, erkennen Sie, dass der Preis für die 1000 Daimler höher ist als eine Minute, bevor Sie sich über diesen Phishing-Link abgemeldet haben.
  5. Jetzt müssen Sie einen höheren Preis bestellen .
  6. ol>

    Ein CSRF-Token beim Abmelden hätte dieses Durcheinander verhindert.

Sie müssen nicht einmal auf den Link klicken. Alles, was der "Angreifer" benötigt, ist eine von Ihnen besuchte Site, auf der Benutzer Bilder von externen Domains (Forum, andere Formen von Social-Media-Sites FE) einfügen können. Wenn Sie das "Bild" "https: // anybrokerpage.com / logout" anzeigen, werden Sie abgemeldet.
Dies scheint ein Argument für die POST-Abmeldung zu sein, ist jedoch nicht unbedingt eine CSRF-geschützte Abmeldung.
Wirklich seltsames Argument für CSRF meiner Meinung nach.Der gesamte Angriff in diesem Fall wurde von jemandem ausgeführt, um Ihre Aufmerksamkeit abzulenken. Sie haben sich erneut angemeldet, Zeit verschwendet und zu einem höheren Preis gekauft.Stellen Sie sich vor, jemand versucht dasselbe Grundstück, nur diesmal, als Sie sich erneut anmelden, sinkt der Preis (aufgrund einer neu gefundenen Diamantenmine in Südafrika) um 50%.Gott segne den Hacker!
Dmitry Janushkevich
2014-07-09 12:42:15 UTC
view on stackexchange narkive permalink

Anmelden? Ja. Ausloggen? Nein.

Warum anmelden? Es gibt diesen lustigen CSRF-Anmeldeangriff, bei dem sich der Angreifer unter einem vom Angreifer kontrollierten Konto beim Opfer anmeldet und dann "die Kontrolle über den Inhalt erlangen kann, den das Opfer erstellt hat, während er unter diesem Konto angemeldet ist". Die Auswirkungen sind IMO ziemlich lahm, aber sie begannen dies als Problem zu betrachten, da mehr saftige Angriffsvektoren verschwunden sind. ;-)

Warum nicht abmelden? Es gibt keine Sicherheitsauswirkungen. Das Beste, was Sie tun können, ist, jemanden vom System abzumelden, was höchstens Ärger verursacht.

BEARBEITEN : Es gibt keine Sicherheitsauswirkungen beim Abmelden von CSRF-Angriffen . Es kann Fälle geben, in denen dies bei einem mehrstufigen Angriff verwendet wird, um zuerst jemanden abzumelden und ihn dann auf einer gefälschten Seite zur Anmeldung aufzufordern.

Wenn Sie CSRF korrekt implementieren, sollten Sie nicht einmal jedes Feld einzeln schützen müssen. Es sollte Teil Ihres Frameworks sein.
Sicherlich meinten Sie "jede Form"?
Ja, das habe ich gemeint
Könnten Sie näher auf "Kontrolle über vom Opfer erstellte Inhalte" eingehen?
Angenommen, Sie sind der Angreifer. Sie erstellen ein Konto auf einem anfälligen System und können somit offensichtlich auf das Konto und alles, was damit zusammenhängt, zugreifen. Dann führen Sie den Login-CSRF-Angriff gegen das Opfer durch. Angenommen, das Opfer erstellt ein "geheimes" Dokument, während es unter dem kontrollierten Konto angemeldet ist, und speichert es dort. Anschließend haben Sie automatisch Zugriff auf das Dokument, da Sie Zugriff auf das von ihm erstellte Konto haben. Der Angriff ist schwach und erfordert einige Vorbereitungen, sieht aber etwas plausibel aus.
Sirens
2017-04-26 04:44:10 UTC
view on stackexchange narkive permalink

Abmelden und Anmelden CSRF ist tatsächlich sehr ausnutzbar.

Wenn Sie eine Möglichkeit finden, ein permanentes privates / selbst-XSS zu erhalten (z. B. ein ungesichertes privates Feld wie in den Benutzereinstellungen), können Sie die Abmeldung des Opfers erzwingen und sich mit Ihrem Konto anmelden, das über das selbst-XSS verfügt angewendet, und führen Sie dann Code aus, um einen Phishing-Angriff auszuführen, außer in der richtigen Domäne mit einem gültigen SSL-Zertifikat . Wenn sich der Benutzer anmeldet (oder über eine automatische Ausfüllung verfügt, mit der Sie seine Anmeldeinformationen stehlen können, bevor er überhaupt auf "Senden" klickt, und sich dann automatisch für ihn anmeldet, damit seine Seite möglicherweise nur weiß blinkt und dann dort ist, wo er sie erwartet), werden Sie jetzt angemeldet haben ihr Passwort und die gleiche Ursprungsausführung. Führen Sie jetzt einfach eine gewisse Exploit-Persistenz in ihren privaten Einstellungen aus, und jetzt haben Sie eine permanente Remote-JS-Ausführung für das Benutzerkonto.

Dies ermöglicht sehr große Angriffe, zumal viele Entwickler nicht beide mit HTML-Injection-Exploits aktivieren private Felder, da nur der Benutzer dies sehen kann und keinen Grund hat, Code gegen sich selbst auszuführen. Mit einem CSRF-Exploit zum Abmelden von Anmeldungen können Sie Phishing mit demselben Ursprung durchführen. Wenn für dieselben Iframes der gleiche Ursprung aktiviert ist, können Sie die Anmeldeseite auch im Vollbildmodus einbetten und dann den gewünschten Code in den scheinbar legitimen Iframe ausführen Die Fehler allein reichen von nutzlos bis bestenfalls ärgerlich, aber wenn Sie diese beiden haben (und es ist am besten, immer davon auszugehen, dass Sie dies tun), kann ein Angreifer ein Benutzerkonto mit nur einer bösen Anzeige entführen.

Darragh
2016-07-19 04:40:09 UTC
view on stackexchange narkive permalink

CSRF für die Anmeldung im Allgemeinen ja, hängt jedoch von Ihrer Anwendung ab. Ein Angreifer kann Sie bei einem böswilligen Konto anmelden, z. B. bei Google, und dann alle Ihre Site-Besuche überwachen.

CSRF für die Abmeldung - ja, kann DOS absolut verhindern



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...