Was ist Cross-Site Request Forgery (CSRF)?

Veröffentlicht: 2023-04-12

Cross-Site Request Forgery (CSRF oder XSRF)-Schwachstellen sind in ihrer Schweregradbewertung selten hoch oder kritisch. Sie können jedoch immer noch viel Schaden anrichten. Sie waren in den letzten Jahren nach Cross-Site-Scripting (XSS)-Schwachstellen die zweithäufigste WordPress-Schwachstelle. Sie werden verstehen, wie Sie Ihre Website besser schützen können, wenn Sie wissen, was eine CSRF-Schwachstelle ist und wie Angreifer sie üblicherweise ausnutzen.

Umgehung der Same-Origin-Policy

Eine CSRF-Schwachstelle ermöglicht es einem Angreifer, eine standardmäßige Browserfunktion namens Same-Origin-Policy zu umgehen. Alle Webbrowser befolgen diese Regel, um die Art von Interferenz zu verhindern, die CSRFs ermöglichen. Wenn Sie eine Webseite laden, interagiert Ihr Browser normalerweise nur mit einer Domain oder Subdomain, abgesehen von zulässigen Ausnahmen. Und es akzeptiert nur Inhalte über ein Protokoll, HTTP oder HTTPS (nicht beides), ohne Sie zu warnen, dass ein Problem vorliegt. Wenn böswillige Personen die Same-Origin-Richtlinie umgehen, können sie Sie auch dazu verleiten, auf Links zu klicken, die unerwünschte Aktionen ausführen, indem sie unerwartet mit einer anderen Website interagieren.

Wenn Ihre WordPress-Site durch eine CSRF-Schwachstelle ausgenutzt wurde, könnten Sie und Ihre Besucher Phishing, Clickjacking und Schlimmerem ausgesetzt sein. Glücklicherweise werden rechtzeitige Updates, starke Authentifizierung und Passkeys für ein passwortloses Anmeldeerlebnis Ihre WordPress-Site härten und viele Exploits, einschließlich CSRF-Versuche, negieren.

Visuell hätten Sie nur wenige oder keine Hinweise darauf, dass Sie auf unerwünschte Weise mit einer anderen Website interagieren. Clickjacking funktioniert so. Wenn Ihre WordPress-Site durch eine CSRF-Schwachstelle ausgenutzt wurde, könnten Sie und Ihre Besucher Phishing, Clickjacking und Schlimmerem ausgesetzt sein.

In diesem Leitfaden gehen wir auf die Details von Cross-Site-Request-Fälschungen ein. Wir sehen uns ein konkretes Beispiel einer CSRF-Schwachstelle an, damit Sie verstehen, wie sie funktioniert. Anschließend zeigen wir Ihnen, was Sie tun können, um zu verhindern, dass CSRF-Schwachstellen auf Ihrer Website auftreten. Wir schlagen auch einige Möglichkeiten vor, den Schaden zu negieren oder zu begrenzen, den ein erfolgreicher CSRF-Exploit anrichten kann, indem Sie Ihre Website gegen diese und andere Arten von Angriffen schützen.

Lass uns einen Blick darauf werfen.

Wie wirkt sich ein Cross-Site Request Forgery (CSRF)-Angriff auf Ihre WordPress-Site aus?

Wenn ein CSRF-Angriff erfolgreich ist, autorisieren seine Opfer unbeabsichtigt eine schädliche Aktion, wie z. B. eine Aktualisierung ihrer Anmeldedaten. Sie könnten dazu verleitet werden, einem Angreifer zu erlauben, ihr Benutzerkonto zu übernehmen. Schlimmer noch, ein Opfer eines CSRF-Exploits könnte es Angreifern ermöglichen, Finanztransfers in ihrem Namen zu initiieren.

Wenn ein Plugin auf Ihrer WordPress-Seite eine CSRF-Schwachstelle enthält, kann ein Angreifer möglicherweise einige Benutzerkonten kapern. Das wäre eines der Worst-Case-Szenarien. Wenn ein gestohlenes Konto eine administrative Rolle in WordPress hat oder der Benutzer sein Passwort auf anderen Seiten wiederverwendet, kann der Schaden groß sein.

Cross-Site-Anfragefälschung

Wie funktioniert ein CSRF-Angriff?

Für einen Hacker müssen drei verschiedene Bedingungen erfüllt sein, damit ein CSRF-Angriff funktioniert. Wenn Sie sie auf allgemeiner Ebene verstehen, verfügen Sie über ein gutes Arbeitsverständnis für einige Grundlagen der Websicherheit.

1. Cookie-basierte Sitzungsbehandlung

Wie andere zustandslose Anwendungen verlässt sich WordPress auf Sitzungscookies, um Benutzer zu identifizieren. Unter niedrigen oder kompromittierten Sicherheitsbedingungen kann ein Angreifer möglicherweise gefälschte Sitzungscookies erstellen oder einen angemeldeten Benutzer so manipulieren, dass er eine unerwünschte Aktion ausführt. WordPress akzeptiert gefälschte und manipulierte Anfragen, die von einem eingeloggten Benutzer stammen oder zu stammen scheinen.

Während CSRF-Exploits häufig auf die Cookie-basierte Sitzungsbehandlung abzielen, ist dies nicht ihr einziges Ziel. CSRF-Angriffe können gegen jede Anwendung wirksam sein, die Benutzeranmeldeinformationen automatisch zu Anfragen hinzufügt. Aus diesem Grund sind die zertifikatbasierte Authentifizierung und die HTTP-Basisauthentifizierung ebenfalls anfällig für CSRF-Schwachstellen.

2. Eine relevante Aktion kann gezielt durchgeführt werden

Es muss eine Aktion innerhalb der gezielten Anwendung geben, zu der die Opfer verleitet werden können. Dies könnte eine privilegierte Aktion wie das Ändern von Benutzerberechtigungen sein. Es könnte sich auf benutzerspezifische Daten beziehen, wie z. B. das Aktualisieren des Passworts eines Benutzers. Dies sind gängige Aktionen in allen Webanwendungen, einschließlich WordPress. Sie sind als Ziele für Hacker wertvoll, weil sie ihnen einen Weg öffnen könnten, um Benutzerkonten zu stehlen und tiefer nach Möglichkeiten zu suchen, sich an Diebstahl, Betrug oder anderen böswilligen Aktivitäten zu beteiligen.

3. Keine unvorhersehbaren Anforderungsparameter

Die Anforderungen, die die gezielte Aktion ausführen, müssen bekannt oder vorhersehbar sein. Wenn die gezielten Anfragen keine Parameter enthalten müssen, deren Werte der Angreifer nicht bestimmen oder erraten kann, sind sie anfälliger für Manipulationen.

Wenn beispielsweise eine gültige Passwortänderungsanforderung das vorhandene Passwort enthalten muss, ist sie sicher – solange ein Angreifer das Passwort nicht kennt. CSRF-Token und SameSite-Cookies stellen weitere Hindernisse für Angreifer dar, wenn Entwickler sie verwenden, um ihren Code zu sichern. Aber manchmal implementieren Entwickler diese Sicherheitsmethoden nicht richtig oder überhaupt nicht. (Deshalb ist eine starke, passwortlose Benutzerauthentifizierung wertvoll.)

Ausnutzen einer CSRF-Schwachstelle zum Ändern von Benutzerkonto-E-Mails – ein Beispiel

Hier ist ein ausführlicheres Beispiel. Es wird nicht wirklich funktionieren, aber es veranschaulicht die wichtigsten Konzepte für einen effektiven CSRF-Exploit.

Erwägen Sie eine E-Mail-Änderungsanfrage. Wenn ein Benutzer diese Aktion ausführt, sendet er eine HTTP-Anfrage, die etwa so aussieht, an den Webserver, der sie empfängt:

 POST /test HTTP/1.1 Host: yourwebsite.com Content-Type: application/x-www-form-urlencoded Content-Length: 60 Cookie: session=yvthgjrudhgeQkAPzeQ5gHgTvlyxHfsAfE;[email protected]

Warum es funktioniert

Dies erfüllt die für CSRF erforderlichen Bedingungen, wenn/weil:

  • Die Zielseite/-anwendung verwendet ein Sitzungscookie, um zu identifizieren, welcher Benutzer die Anfrage gestellt hat, und es sind keine anderen Token oder Mechanismen vorhanden, um Benutzersitzungen zu verfolgen. Aus diesem Grund sollten Entwickler CSRF-Token und/oder SameSite-Cookies verwenden.
  • Das Ändern der E-Mail-Adresse eines Benutzers ist eine relevante Aktion im Interesse eines Angreifers. Es ist sicher! Wenn Sie die E-Mail-Adresse eines Benutzers in eine von Ihnen kontrollierte ändern können, können Sie die vollständige Kontrolle über sein Konto übernehmen.
  • Der Angreifer kennt die Anfrageparameter, die er benötigt, um die E-Mail-Adresse eines Benutzers zu ändern, und kann gültige Werte für sie generieren. Diese Parameter sind nicht geheim, und es ist nicht schwierig festzustellen, welche E-Mail-Adressen viele Menschen für ihre Online-Konten verwenden. Das Session-Cookie ist kniffliger.

Wie ein Angreifer Sitzungscookies stehlen könnte

Die größte Hürde des Angreifers besteht darin, die tatsächlichen Werte für die Parameter zu ermitteln, die auf das Konto eines bestimmten Benutzers zugreifen. Sie können dies tun, indem sie eine Webseite erstellen, die sich an Benutzer der Zielseite richtet. Diese betrügerische Website enthält möglicherweise Links oder Schaltflächen, die einen legitimen Zweck zu haben scheinen, z. B. das Anfordern von kostenlosen Geschenken. Wenn Sie auf diese Links oder Schaltflächen klicken, ist in Wirklichkeit die einzige Person, die ein paar süße Leckereien kostenlos bekommt, der Angreifer.

Wenn Sie auf diese betrügerischen Links klicken, stellen sie eine Adressänderungsanfrage an die betreffende und CSRF-anfällige Website. Wenn Sie bei dieser Site angemeldet sind, ist die Anfrage gültig. Ihr Konto wurde gestohlen – Sie haben Ihre Schlüssel übergeben.

Benutzer einer WordPress-Site, die eingeloggt bleiben, haben ein aktives Sitzungscookie in ihrem Browser, das auch dann bestehen bleibt, wenn sie sich auf einer anderen Site befinden. Ihr Browser fügt dieses Sitzungscookie automatisch in eine gefälschte Anfrage ein. WordPress kann dies als eine vollkommen gültige Adressänderungsanfrage sehen – obwohl sie von einer anderen Seite kommt und der Benutzer keine Ahnung hat, dass sie es tun.

Unter der Annahme, dass keine anderen Sicherheitsmaßnahmen wie das SameSite-Cookie-Attribut vorhanden sind, verarbeitet die anfällige Zielseite eine gefälschte Anfrage genauso wie eine gültige. Wenn die angegriffene Website keinen Bestätigungsschritt für die Adressänderung erzwingt oder der Angreifer eine Möglichkeit hat, dies zu umgehen, ändert der Angreifer die Adresse des Benutzers erfolgreich in eine vom Angreifer gewählte Adresse.

Wie ein CSRF-Angriff an eine anfällige Website übermittelt wird

Die Bereitstellungsmechanismen für CSRF-Angriffe und Reflected Cross-Site Scripting (Reflected XSS)-Angriffe sind ähnlich.

In den meisten Fällen platzieren Angreifer ihren bösartigen Code auf einer betrügerischen Website, die sie kontrollieren. Dies könnte eine legitime Website sein, die sie bereits kompromittiert haben, weshalb Google eine irreführende Website-Liste führt. Alle Browser werden ihre Benutzer warnen, wenn Sie auf dieser Liste stehen! Aus diesem Grund prüft iThemes Security jeden Tag, um sicherzustellen, dass Ihre Website nicht zum Werkzeug eines Hackers geworden ist.

Potenzielle Opfer dazu zu bringen, eine betrügerische Website zu besuchen, ist einfach eine Frage des grundlegenden Social Media- und E-Mail-Marketings. Manchmal wird der Schadcode einfach auf einer beliebten Seite in einem aktiven Bereich platziert.

Ein Angreifer benötigt möglicherweise nicht einmal eine Website, um seine Opfer anzulocken. Einige einfache CSRF-Exploits verwenden die GET-Methode. Dies macht Ihr Browser, wenn Sie auf einen Link klicken oder eine URL in die Adressleiste eingeben. Es macht eine GET-Anforderung unter Verwendung der URL im Link oder die Sie angeben. Manchmal kann ein CSRF-Angriff mit einer einzigen GET-Anfrage an eine anfällige Website vollständig ausgeführt werden. In solchen Situationen muss der Angreifer möglicherweise keine betrügerische Website verwenden. Sie können ihren Opfern einfach direkt eine bösartige URL zuführen.

Schutz Ihrer Website vor Cross-Site Request Forgery (CSRF)-Angriffen

CSRF-Schwachstellen tauchen häufig in Plugins und manchmal in Themes auf. Wenn Hacker sie angreifen, ist es nicht schwer, sich zu schützen. Verwenden Sie hochwertige Plugins und Designs, denen Sie vertrauen, entfernen Sie diejenigen, die Sie nicht verwenden, und halten Sie Ihre gesamte Software auf dem neuesten Stand . Sie sollten auch eine wohlüberlegte Benutzersicherheitsrichtlinie implementieren und erwägen, passwortlos zu arbeiten. Wenn eine CSRF-Schwachstelle (oder eine andere) auf Ihrer Website ausgenutzt wird, um Zugriff auf Benutzerkonten zu erhalten, nützt es dem Angreifer nicht viel, wenn Sie Passkeys verwenden. Niemand kann stehlen, was nicht existiert.

Zusätzlich zur Verwaltung von Updates und Warnungen vor anfälligen Plugins und Designs erleichtert iThemes Security Pro die Einrichtung und Verwaltung von benutzer- und rollenbasierten Sicherheitsregeln. Delegieren Sie Privilegien nach dem Prinzip der geringsten Privilegien. Sichern Sie Ihre Anmeldung, Passwortwiederherstellung und Kontaktformulare mit CAPTCHAs. Geben Sie Ihren Benutzern nicht mehr Möglichkeiten, als sie benötigen. Fordern Sie Benutzer mit höheren Berechtigungen auf, stärkere Authentifizierungsmethoden zu verwenden. Und nehmen Sie auf jeden Fall die bequemste, absolut einfache Möglichkeit an, sich ohne Passwort bei WordPress anzumelden: Passkeys!