[RUBY] Sicherheitslücken und Gegenmaßnahmen bei der wichtigen Verarbeitung (Einkaufsabwicklung) (CSRF)

Annahme
Programmieranfänger(2~Drei Monate)Ist was ich gelernt habe.
Es kann Dinge enthalten, die im eigentlichen Bereich nicht funktionieren oder die falsch sind.
Wir würden uns freuen, wenn Sie auf Teile hinweisen oder diese hinzufügen könnten, die falsch sind oder die Sie nicht verstehen.

Wir haben einen der Angriffe gegen wichtige Verarbeitung, CSRF (Cross-Site Request Forgery), zusammengefasst. Was ist zum Beispiel eine wichtige Verarbeitung? Es ist ein Prozess, der nicht von außen ausgeführt werden sollte, z. B. das Posten an einem schwarzen Brett, das Senden einer E-Mail oder der Kauf eines Produkts auf einer EC-Site. In CSRF wird dieser wichtige Prozess von einem Angreifer verwendet, um sich als legitimer Benutzer auszugeben (eine Anfrage senden).

CSRF-Mechanismus und Gegenmaßnahmen

** Was genau wird CSRF tun? ** Die folgenden wichtigen Prozesse sind in einer Webanwendung vorhanden. ・ Zahlung per Kreditkarte ・ Mail senden ·ändere das Passwort Ein Angreifer kann diese wichtigen Prozesse nutzen, indem er sich als legitimer Benutzer ausgibt.

CSRF (Cross Site Request Forgery)

Ein Angriff, bei dem ein Angreifer die Anmeldeinformationen eines Benutzers stiehlt (Sitzungsentführung) und eine Anfrage an eine anfällige Webanwendung sendet, indem er sich als legitimer Benutzer ausgibt. Eine Spoofing-Anfrage ist eine böswillige Anfrage, und eine Webanwendung, die diese böswillige Anfrage nicht ermitteln kann, ist für CSRF anfällig.

Schäden, die auftreten können, wenn eine CSRF-Sicherheitsanfälligkeit vorliegt

Die CSRF-Schwachstellen können folgende Schäden verursachen: ・ Benutzerkonto wird missbraucht ・ Das Passwort und die E-Mail-Adresse des Benutzers werden geändert ・ Das Geld, das der Benutzer hat, wird verwendet

Wie CSRF funktioniert

Verfahren für CSRF ① Bereiten Sie eine Website vor, auf der ein Angreifer Benutzerinformationen stiehlt Ein Angreifer erstellt im Voraus eine Website, um Informationen zu stehlen (für Sitzungsentführungen). (2) Der Benutzer meldet sich bei der anfälligen Webanwendung an und erhält die Sitzungs-ID. Melden Sie sich bei einer anfälligen Webanwendung an, um die Website wie gewohnt zu verwenden. ③ Greifen Sie auf eine schädliche Site zu, während Sie bei der Webanwendung angemeldet sind Durch den Zugriff auf eine schädliche Website von einer anfälligen Website aus wird eine Sitzungsentführung eingerichtet und die Anmeldeinformationen werden von einem Angreifer gestohlen. (4) Stellen Sie eine nicht autorisierte Anfrage an eine anfällige Webanwendung basierend auf den vom Angreifer extrahierten Anmeldeinformationen. Ein Angreifer verwendet die durch Sitzungsentführung gestohlenen Anmeldeinformationen, um sich als legitimer Benutzer auszugeben und betrügerische Anfragen zu stellen (z. B. den Kauf von Waren oder das Senden von Geld).

Eine anfällige Webanwendung kann nicht feststellen, ob diese böswillige Anforderung böswillig ist oder nicht. Auf diese Weise wird CSRF eingerichtet. XSS ist übrigens eine clientseitige Sicherheitsanfälligkeit und CSRF eine serverseitige Sicherheitsanfälligkeit.

CSRF-Maßnahmen

Identifizieren von Elementen, die gegen CSRF genommen werden sollten

Zunächst ist es wichtig, die Anforderung zu kennen, die CSRF-Maßnahmen ergreifen muss. CSRF muss nicht für jede Anfrage durchgeführt werden. Anforderungen, die Gegenmaßnahmen erfordern, sind Anforderungen, die nicht von anderen Benutzern ausgeführt werden sollten. Zum Beispiel Anfragen wie die Verarbeitung von EC-Site-Käufen und die Verarbeitung von Kennwortänderungen.

Spezifische Gegenmaßnahmen

Es gibt zwei effektive Möglichkeiten, um festzustellen, ob die Anforderung von einem legitimen Benutzer stammt. ・ Geben Sie vor der Bestätigung das Passwort ein ・ Einbetten von Token in Anfragen

Gegenmaßnahme ① Passwort erneut eingeben

Bitten Sie sie, ihr Passwort erneut einzugeben, bevor der wichtige Vorgang bestätigt wird. Es ist möglich, CSRF-Angriffe zu verhindern, indem das aktuelle Kennwort für Anforderungen im Zusammenhang mit Kennwortänderungen eingegeben wird, die Ziel von CSRF-Angriffen sind. Dies ist eine Methode, die verwendet werden kann, da der Angreifer durch Sitzungsentführung angemeldet ist, das Kennwort selbst jedoch nicht bekannt ist.

Gegenmaßnahme (2) Einbetten von Token (vertrauliche Informationen) in Anfragen

Wenn der Angreifer ein Token anfordert, das der Angreifer nicht über Seiten kennt, für die CSRF-Gegenmaßnahmen erforderlich sind, z. B. den Registrierungsbildschirm und den Auftragsbestätigungsbildschirm, wird eine wichtige Verarbeitung aufgrund betrügerischer Anforderungen nicht ausgeführt.

Zeichen Ein Token ist ein Kennwort, das nur einmal verwendet werden kann und nur im Browser des Benutzers gespeichert wird. Es wird häufig zur Benutzerauthentifizierung verwendet. Wenn Sie eine Verarbeitung wie die Anmeldung durchführen, wird ein eindeutiges Token im Browser des Absenders gespeichert. Wenn ich eine ähnliche Anfrage von einem anderen Benutzer stelle, ist das Token anders oder nicht vorhanden. Auf diese Weise können Sie feststellen, ob die Anforderung ungültig ist. Übrigens übernimmt die Hilfsmethode, eine Form von Ruby on Rails, diese Maßnahme.

Schließlich

wichtiger Punkt Wie einige von Ihnen vielleicht bemerkt haben, kann das Vorhandensein von XSS- und Session-Hijacking-Schwachstellen dieses Token sogar extrahieren. Infolgedessen werden CSRF-Maßnahmen bedeutungslos. Mit anderen Worten ** Sicherheitsmaßnahmen müssen in allen Aspekten umfassend sein ** darüber. Selbst wenn Sie einen Ort stärken, besteht die Möglichkeit, dass ein anderer schwacher Ort Ihnen einen Hinweis gibt, um den gestärkten Ort zu durchbrechen.

Recommended Posts

Sicherheitslücken und Gegenmaßnahmen bei der wichtigen Verarbeitung (Einkaufsabwicklung) (CSRF)
Parallele und parallele Verarbeitung in verschiedenen Sprachen (Java Edition)
[Android / Java] Bildschirmübergang und Rückgabeverarbeitung in Fragmenten
Asynchrone Verarbeitung und Web-API-Integration in Android Studio