Schwachstellen OAuth | So implementieren Sie die sichere Berechtigung in Ihrer Webanwendung

Anonim
Schwachstellen OAuth | So implementieren Sie die sichere Berechtigung in Ihrer Webanwendung 2740_1

Dieser Artikel beschäftigt sich mit den bekannten Schwachstellen der OAuth. Die Leser erfahren auch, wie Sie eine sichere und sichere Berechtigung in der Webanwendung implementieren.

OAuth ist ein zuverlässiges Protokoll, aber sein Sicherheitsgrad hängt weitgehend von dem Bewusstsein der Webentwicklern ab, wenn die Genehmigung implementiert wird. Dies macht dieses Thema für Informationssicherheitspersonal äußerst wichtig. Sie müssen ein hohes Maß an Konten von ihren Benutzern angeben. Es ist an der Zeit, effektive Praktiker kennenzulernen, die dazu beitragen, die Gefahr des schlechten Verkaufs von OAUH zu reduzieren.

Einführung

Das OAuth 2.0-Protokoll wird derzeit in verschiedenen Anwendungen häufig verwendet. Verwenden Sie dazu eine komfortable Benutzeroberfläche, eine einfachere Authentifizierung und Autorisierung im Vergleich zu herkömmlichen Methoden zur Eingabe des Benutzernamens und des Kennworts. Mit ordnungsgemäßer und nachdenklicher Umsetzung ist das OAuth-Protokoll sicherer als die traditionelle Berechtigung, da Benutzer ihre Bilanzierungsdaten nicht mit einer Drittanbieteranwendung teilen müssen, um auf eine bestimmte Ressource zuzugreifen. Benutzer ziehen es oft vor, sich mit ihren Google-Konten, Facebook oder LinkedIn anzumelden, anstatt jedes Mal ein neues Konto zu erstellen, wenn Sie sich auf einer Website anmelden müssen. Das OAuth-Protokoll vereinfacht somit unser Leben erheblich.

Im Allgemeinen sind beliebte OAUTH-Dienstleister sehr zuverlässig. Melden Sie sich mit Google oder Facebook an, inspiriert ein gewisses Sicherheitsgefühl, und es ist richtig. Das Protokoll wird sorgfältig von Experten getestet. Alle verfügbaren Sicherheitsanfälligkeiten werden vom Entwicklerteam immer schnell korrigiert. Es ist jedoch erwähnenswert, dass das Gefühl der vollständigen Sicherheit falsch sein kann.

OAUTH-Diensteanbieter linken die Anwendungsentwicklungen viele Gründe, um die Sicherheit ihrer Programme zu kontrollieren. Tatsächlich kann der anfänglich geschützte OAuth-Dienst, der in der Installation falsch umgesetzt wurde, zu einem einfachen Ziel für Eindringlinge werden. Eine solche Beschäftigung wird zum Diebstahl personenbezogener Daten der Benutzer führen.

Als Nächstes sollten Sie die häufigsten Schwachstellen in Betracht ziehen, die in Drittanwendungen auftreten, die das OAuth-Protokoll implementieren, um ihre Benutzer zu ermächtigen. Es muss daran erinnert werden, dass das Protokoll selbst sicher und zuverlässig ist. Erst nach fehlerhafter Implementierung wird es anfällig für Hackerangriffe.

OAuth Tocey Diebstahl mit dem Referen-Header

Wenn die Anwendung die Ermächtigung auf dem Namen des Benutzers am OAuth-Server anfordert, erhält eine Person den Code, um den Server zum Anschluss an den Server zurückzutreten und zum anschließenden Scheck an den Server zurückzusenden. Wenn der Benutzer während der Arbeit auf eine andere Seite umgeleitet wird, wird der Code im Header "Referener" der HTTP-Anforderung angezeigt. Somit fällt der Code auf die externe Website, die die auf dem OAuth-Server registrierten Benutzerdaten gefährdet.

HINWEIS: Der Referen-Header ist ein HTTP-Abfragekopf, der den URL-Host überträgt, aus dem die Anforderung gesendet wird.

Um die Folgen dieser Sicherheitsanfälligkeit zu erweichen, muss der Entwickler sicherstellen, dass seine Webanwendung keine HTML-Injektionen enthält. Wenn die Injektionen erkannt wurden, kann der Angreifer das Bild-Tag leicht auf den Webserver einstellen und einen Weg finden, den Benutzer darauf zu leiten. Daher wird er die Gelegenheit bekommen, den Code vom Header "Referener" der HTTP-Anfrage zu stehlen.

OAuth Tocey Diebstahl mit dem Parameter Redirect_uri

Die Anwendung initiiert den Berechtigungsvorgang, indem er eine Anforderung an den OAuth-Server sendet:

https://www.example.com/signin/authorize?[...E&Redirect_uri=httpps:///demo.example.com/loginuccessful.

Die Abfrage enthält immer den vom OAuth-Server "redirect_uri" -Parameter, der vom OAuth-Server verwendet wird, um Token an die Anwendung zu senden, nachdem der Benutzer seine Zustimmung gegeben hat. Wenn der Wert dieses Parameters nicht gesteuert oder nicht geprüft wird, kann der Angreifer es einfach ändern und den Antrag auf seiner Website umleiten, wo er ein spezielles Programm zur Bearbeitung des Tokens verwendet und Zugriff auf eine begrenzte Ressource erhält.

https://www.example.com/signin/authorize?[...e&redirect_uri=httpps://localhost.evil.com.

Manchmal sind ähnliche URLs blockiert. Der Angreifer kann die empfangenen Daten auf der offenen URL umleiten, wie folgt:

https://www.example.com/oAuth20_Authorize.srf?[.[.&Redirect_uri=htTPPS://Accounts.google.com/backtouthubtarget?next=httpset://evil.com.

Oder dieses:

https://www.example.com/oAuth2/authorize? [...]% iRect_uri = https% 3A% 2F% 2FAPPS.FACEBOOK.com% 2FATACKER% 2F.

Bei der Implementierung von OAuth können Sie niemals ganze Domains in der weißen Liste einschließen. In "redirect_uri" sollten nur wenige URLs hinzugefügt werden, um keine Anforderung zum Öffnen von Umleitungen umgeleitet zu werden.

Fälschung von Querlinienanträgen

Wenn ein Angreifer eine Fälschung einer Antragsforderung auftreten kann, wenn ein Angreifer gelingt, das Opfer auf seinen Link zu klicken, und somit, um eine Anfrage zu erstellen, die er nicht erzeugen würde. Die Fälschung von Querlinienanträgen wird in der Regel mit dem CSRF-Token erweicht, das der Benutzersitzung zugeordnet ist. Es hilft der Anwendung, die Person einer Person zu überprüfen, die die Anfrage gesendet hat. Der Parameter "Status" im OAuth-Protokoll dient als CSRF-Token.

Es lohnt sich, zu sehen, wie der CSRF-Angriff auf OAuth ausgeführt wird und der Parameter "Status" verwendet werden kann, um die Auswirkungen der Anfälligkeit zu mildern.

Hacker eröffnet eine Webanwendung und startet den Autorisierungsprozess, um auf den Dienstanbieter mit OAUHH zuzugreifen. Die Anwendung fordert einen Dienstanbieter an, auf den Zugriff auf das bereitgestellt werden muss. Der Hacker wird auf die Website des Dienstanbieters weitergeleitet, in der Sie normalerweise Ihren Benutzernamen und Ihr Passwort eingeben müssen, um den Zugriff zu autorisieren. Stattdessen fängt der Hacker und verhindert und verhindert diese Anfrage und speichert seine URL. Hacker irgendwie bewirkt, dass das Opfer diese URL öffnet. Wenn das Opfer mit dem Konto des Dienstanbieters mit dem Konto eingetragen ist, werden ihre Anmeldeinformationen verwendet, um einen Autorisierungscode auszustellen. Der Autorisierungscode tauscht den Zugriff auf das Zugangsstoken aus. Nun ist das Hacker-Konto in der Anwendung autorisiert. Es kann auf das Konto des Opfers zugreifen.

Wie kann ich diese Situation also mit dem Parameter "Status" verhindern?

Die Anwendung muss einen Wert erstellen, der auf dem Quellkonto basierend auf dem Quellkonto (z. B. die User-Session-Hash-Taste verwendet) erstellt wird. Es ist nicht so wichtig, was es ist, die Hauptsache ist, dass der Wert mit privaten Informationen über den ursprünglichen Benutzer einzigartig und generiert ist. Es ist dem Parameter "Status" zugewiesen.

Dieser Wert wird beim Umleiten an den Dienstanbieter übermittelt. Nun lädt der Hacker das Opfer ein, die URL zu öffnen, die er beibehalten hatte.

Der Autorisierungscode wird ausgestellt und an den Client in der Sitzung zusammen mit dem Parameter "Status" an den Client gesendet.

Der Client erzeugt einen Parameterwert basierend auf einer Sitzungsinformation und vergleicht sie mit dem Wert "Status", der von der Berechtigungsanforderung an den Dienstanbieter gesendet wurde. Dieser Wert stimmt nicht mit dem Parameter "Status" in der Abfrage überein, da er nur auf der Grundlage von Informationen über die aktuelle Sitzung erstellt wurde. Infolgedessen wird der erhaltene Wert nicht vom System akzeptiert.

Andere Anfälligkeiten, die bei der Implementierung von OAuth erkannt werden, umfassen die Möglichkeit, XSS (Cross-Site-Scripting) mit dem Parameter "Redirect_uri" durchzuführen, die OAuth-Private-Schlüsseleinstellung (der Schlüssel kann manchmal erhalten werden, wenn Sie eine mobile Anwendung dekompilieren) und die Verstoß gegen die Berechtigungscode-Regel (wann Der Berechtigungscode kann mehr als einmal verwendet werden, um mehrere Zugriffs-Token auszugeben). Diese Schwachstellen sind weniger verbreitet als die oben beschriebenen, aber sie macht sie nicht weniger gefährlich. Der Entwickler sollte alle notwendigen Praktiken kennen, um einen zuverlässigen Betrieb seiner Webanwendung sicherzustellen.

Der Autor des übersetzten Artikels: Simon Saliba.

Wichtig! Informationen ausschließlich zu akademischen Zwecken. Bitte erfüllen Sie die Gesetzgebung und wenden Sie diese Informationen nicht für illegale Zwecke an.

Interessanteres Material auf cisoclub.ru. Abonnieren Sie uns: Facebook | Vk | Twitter | Instagram | Telegramm | Zen | Messenger | ICQ NEU | YouTube | Impuls.

Weiterlesen