Forscher des Web-Coding-Sicherheitsunternehmens SALT haben gerade eine faszinierende Beschreibung veröffentlicht, wie sie eine gefunden haben Authentifizierungsfehler synchronisiert CVE-2023-28131 in einem beliebten Online-App-Build-In-Toolkit namens Expo.
Die gute Nachricht ist, dass Expo antwortete Ich bin sehr schnell zum Fehlerbericht von SALT gekommen und habe innerhalb weniger Stunden nach der verantwortungsvollen Offenlegung durch SALT eine Lösung gefunden.
Glücklicherweise war der Fix nicht darauf angewiesen, dass Kunden etwas herunterluden, da der Patch im Cloud-Service von Expo implementiert wurde und keine Patches für vorinstallierte Apps oder clientseitigen Code erforderlich waren.
Expos beratend nicht nur erklärt, was passiert ist und wie das Unternehmen das Problem behoben hat, sondern hat seinen Kunden auch Programmiertipps gegeben, wie sie diese Art möglicher Schwachstellen bei anderen Online-Diensten vermeiden können.
SALT wartete dann drei Monate mit der Veröffentlichung seines Berichts, anstatt ihn so schnell wie möglich zu Werbezwecken zu veröffentlichen, um so den Expo-Benutzern die Möglichkeit zu geben, die Reaktion der Expo zu verarbeiten und darauf zu reagieren.
Halte es einfach
Der fehlerhafte Authentifizierungsprozess wird im Detail erläutert SALTs Bericht, aber wir präsentieren hier eine stark vereinfachte Beschreibung dessen, was beim OAUTH-Dienst von Expo schief gelaufen ist.
OAUTH, kurz für Öffnen Sie das Autorisierungs-Frameworkist ein Prozess, der es Ihnen ermöglicht, auf private Daten in einem Onlinedienst zuzugreifen (z. B. Ihr Online-Profil zu bearbeiten, einen neuen Blog-Artikel hinzuzufügen oder einem Webdienst zu genehmigen, Social-Media-Beiträge für Sie zu erstellen), ohne jemals ein Passwort einzurichten oder sich direkt bei diesem Dienst selbst anmelden.
Wenn Sie Webdienste sehen, die Ihnen Folgendes bieten: Melden Sie sich mit Google oder Facebook an Option verwenden sie beispielsweise fast immer OAUTH im Hintergrund, sodass Sie keinen neuen Benutzernamen und kein neues Passwort für eine weitere Website erstellen oder Ihre Telefonnummer an einen weiteren Onlinedienst weitergeben müssen.
Streng genommen authentifizieren Sie sich indirekt und geben Ihre Google- oder Facebook-Anmeldeinformationen immer nur auf einer dieser Websites ein.
Manchen Benutzern gefällt dies nicht, da sie sich nicht bei Google oder Facebook authentifizieren möchten, nur um ihre Identität gegenüber anderen, nicht verwandten Websites nachzuweisen. Andere mögen es, weil sie davon ausgehen, dass Websites wie Facebook und Google mehr Erfahrung in der Handhabung des Anmeldevorgangs, der sicheren Speicherung von Passwort-Hashes und der Durchführung von 2FA haben als eine Boutique-Website, die versucht hat, ihre eigenen kryptografischen Sicherheitsprozesse zu entwickeln.
Ausgelagerte Authentifizierung
Stark vereinfacht, eine Anmeldung im OAUTH-Stil über Ihr Facebook-Konto bei einer aufgerufenen Website example.com
, geht ungefähr so:
- Der Standort
example.com
sagt zu Ihrer App oder Ihrem Browser: „Hallo X, hol dir von Facebook ein magisches Zugriffstoken für diese Seite.“ - Sie besuchen eine spezielle Facebook-URL und melden sich an, falls Sie dies noch nicht getan haben. und sagen Sie: „Gib mir einen magischen Zugangstoken für
example.com
" - Wenn Facebook davon überzeugt ist, dass Sie die Person sind, für die Sie sich ausgeben, es antwortet: „Hallo, X, hier ist dein magischer Zugriffstoken.“
- Sie übergeben das Zugriffstoken an
example.com
, Dieser kann dann Facebook selbst kontaktieren, um den Token zu validieren.
Beachten Sie, dass nur Facebook Ihr Facebook-Passwort und Ihren 2FA-Code (falls erforderlich) sieht, sodass der Facebook-Dienst als Authentifizierungsvermittler zwischen Ihnen und Ihnen fungiert example.com
.
Hinter den Kulissen findet eine abschließende Validierung statt, etwa so:
- Der Standort
example.com
sagt zu Facebook, „Haben Sie dieses Token ausgestellt und validiert es Benutzer X?“ - Wenn Facebook zustimmt, es sagt
example.com
, „Ja, wir betrachten diesen Benutzer als authentifiziert.“
Subvertible Sequenz
Der Fehler, den die SALT-Forscher im Expo-Code gefunden haben, kann dadurch ausgelöst werden, dass Expos Handhabung des sogenannten „Authentifizierungs-Brokerage“-Prozesses in böswilliger Absicht untergraben wird.
Die wichtigsten Punkte sind:
- Expo selbst fügt dem Verifizierungsprozess einen Wrapper hinzu. sodass es die Authentifizierung und Validierung für Sie übernimmt und letztendlich ein magisches Zugriffstoken für die gewünschte Website weitergibt (
example.com
im obigen Austausch) zurück zu der App oder Website, von der aus Sie eine Verbindung herstellen. - Die Parameter, die bei der Durchführung der Überprüfung verwendet werden werden in eine große URL gepackt, die an den Expo-Dienst übermittelt wird.
- Einer dieser Parameter wird temporär in einem Web-Cookie gespeichert Dies gibt die URL an, an die das endgültige magische Sicherheitstoken gesendet wird, um den Zugriff zu ermöglichen.
- Bevor der Sicherheitstoken zugestellt wird, In einem Popup werden Sie aufgefordert, die URL zu bestätigen, die autorisiert werden soll. So können Sie jeden erkennen, der versucht, eine gefälschte URL in den Anmeldevorgang einzufügen.
- Wenn Sie das Popup genehmigen, Expo leitet Sie zum Facebook-Verifizierungsprozess weiter.
- Wenn Facebook die Verifizierung genehmigt, Es gibt ein magisches Zugriffstoken an den Expo-Dienst zurück, und Expo leitet es an die URL weiter, die Sie gerade im Popup genehmigt haben
returnURL
. - Die App oder Website, die auf die angegebene Weise lauscht
returnURL
erhält den Rückruf von Expo, erwirbt das Zugriffstoken und wird daher als Sie authentifiziert.
Bedauerlicherweise stellten die SALT-Forscher fest, dass sie den Anmeldevorgang unterlaufen konnten, indem sie mithilfe von JavaScript-Code den Zugriff auf die ursprüngliche Expo-Anmelde-URL auslösten, dann aber das Verifizierungs-Popup abschalteten, bevor Sie Zeit hatten, es zu lesen oder selbst zu genehmigen.
Zu diesem Zeitpunkt hatte der Dienst von Expo jedoch bereits ein Cookie mit dem Namen gesetzt ru
(kurz für returnURL
), um ihm am Ende mit Ihrem magischen Zugriffstoken mitzuteilen, wo es zurückrufen soll.
Dies bedeutete, dass ein Cyberkrimineller den Expo-Code dazu bringen konnte, sich an einen zu „erinnern“. returnURL
sowie https://roguesite.example
, ohne dass Sie jemals den Dialog sehen, der Sie warnt, dass ein Angriff im Gange ist, geschweige denn, dass Sie ihn versehentlich genehmigen.
Dann verwendeten die Forscher einen zweiten Teil des JavaScript-Codes, um die Weiterleitung von Expo zum Verifizierungsprozess von Facebook zu simulieren, was automatisch gelingen würde, wenn Sie (wie viele Menschen) bereits bei Facebook selbst angemeldet wären.
Die Verifizierung durch Facebook würde wiederum den Expo-Anmeldevorgang zurück in Expos eigenen JavaScript-Code umleiten …
…was vertrauensvoll, aber fälschlicherweise das nie wirklich Verifizierte ergreifen würde returnURL
für seinen Rückruf von dieser Magie ru
Cookie, das es zu Beginn gesetzt hat, ohne Ihre Zustimmung oder Ihr Wissen.
Fail-Open oder Fail-Closed?
Wie Sie der obigen Beschreibung entnehmen können, wurde die Sicherheitslücke durch einen unangemessenen Fehler im Expo-Code verursacht.
Der Authentifizierungscode sollte im Allgemeinen Fehler geschlossen, im Fachjargon, was bedeutet, dass der Prozess nur dann erfolgreich sein kann, wenn eine aktive Zustimmung signalisiert wird.
Wir vermuten, dass Expo das mit dem System nicht beabsichtigt hat scheitern offen, da der SALT-Bericht zeigt, dass sein Popup-Genehmigungsdialog so aussah:
Die App unter https://roguesite.example fordert Sie auf, sich bei Ihrem Facebook-Konto anzumelden. Vertrauen Sie https://roguesite.example voll und ganz und stimmen Sie zu: [Nein] [Ja]
Die Standardantwort war erwartungsgemäß auf eingestellt [No]
Dies würde jedoch nur dazu führen, dass das System nicht geschlossen werden kann, wenn Sie den clientseitigen Code von Expo zur Steuerung des Verifizierungsprozesses verwenden würden.
Durch die Bereitstellung ihres eigenen JavaScripts zur Ausführung der Abfolge von Verifizierungsanfragen konnten die Forscher den Genehmigungsdialog so behandeln, als hätte er Folgendes gesagt:
Wenn Sie uns nicht ausdrücklich anweisen, https://roguesite.example daran zu hindern, sich über Ihr Facebook-Konto anzumelden, lassen wir dies zu: [Zulassen] [Blockieren]
Die Lösung bestand neben anderen Änderungen darin, dass der anfängliche Login-Code von Expo diese Magie auslöste ru
Plätzchen erst nachdem Sie dem sogenannten ausdrücklich zugestimmt haben returnURL
, damit der spätere JavaScript-Anmeldecode von Expo nicht geschlossen werden kann, wenn das Bestätigungs-Popup übersprungen wird, anstatt blind einer URL zu vertrauen, die Sie noch nie gesehen oder genehmigt haben.
In vielerlei Hinsicht ähnelt dieser Fehler dem Belkin Wemo Smart Plug Fehler, den wir vor etwa zwei Wochen geschrieben haben, obwohl die Ursache in Belkins Fall ein Pufferüberlauf und kein betrügerischer Web-Callback war.
Der Code von Belkin wies in seinem serverseitigen Code einen 68-Byte-Speicherpuffer zu, verließ sich jedoch darauf, im clientseitigen Code zu überprüfen, dass nicht versucht wurde, mehr als 68 Bytes zu senden, wodurch der Server den Angreifern ausgeliefert war, die dies entschieden um mit dem Server über ihren eigenen clientseitigen Code zu kommunizieren, der den Überprüfungsprozess umgeht.
Was ist zu tun?
- Wenn Sie Fehler melden und schreiben, Erwägen Sie, SALTs zu folgen Beispiel. Machen Sie die Offenlegung verantwortungsbewusst und geben Sie dem Anbieter eine angemessene Zeit, um die Schwachstelle zu beheben, sowie eine angemessene Zeit, um seine eigenen Benutzer zu informieren, bevor Sie Details veröffentlichen, die es anderen ermöglichen würden, einen eigenen Exploit zu erstellen.
- Wenn Sie Fehlerberichte erhalten, Erwägen Sie, Expos zu folgen Beispiel. Antworten Sie schnell, bleiben Sie mit dem Melder des Fehlers in Kontakt, beheben Sie die Schwachstelle so schnell wie möglich, stellen Sie Ihren Benutzern einen hilfreichen Untersuchungsbericht zur Verfügung und bleiben Sie objektiv. (Widerstehen Sie den Vorschlägen Ihres Marketingteams, sich dafür zu loben, dass Sie „die Sicherheit ernst nehmen“, oder das Problem als unwichtig abzutun. Die Entscheidung liegt bei Ihren Benutzern, basierend auf der Schnelligkeit und Relevanz Ihrer Antwort und ihrer eigenen Einschätzung des Risikos.)
- Stellen Sie sicher, dass Ihr Authentifizierungscode nicht geschlossen ist. Stellen Sie sicher, dass Sie keine Verifizierungs- oder Genehmigungsschritte haben, die durch einfaches Ignorieren oder Abbrechen neutralisiert werden können.
- Gehen Sie niemals davon aus, dass Ihr eigener clientseitiger Code den Verifizierungsprozess steuert. Gehen Sie davon aus, dass Angreifer Ihr Protokoll zurückentwickeln und eigenen Client-Code erstellen, um so viele Überprüfungen wie möglich zu umgehen.
- Melden Sie sich von Webkonten ab, wenn Sie diese nicht aktiv nutzen. Viele Menschen melden sich bei Konten wie Google, Amazon, Facebook, Apple und anderen an und bleiben dann aus Bequemlichkeitsgründen auf unbestimmte Zeit eingeloggt. Durch das Abmelden wird verhindert, dass viele Aktionen (einschließlich Authentifizierungen, Beiträge, „Gefällt mir“-Angaben, Freigaben und vieles mehr) stattfinden, wenn Sie sie nicht erwarten – stattdessen wird eine Anmeldeaufforderung angezeigt.
Vergessen Sie nicht, dass Sie durch das Abmelden von Webdiensten, wann immer Sie können, und durch das häufige Löschen aller Browser-Cookies und gespeicherten Webdaten auch die Menge an Tracking-Informationen reduzieren, die Websites beim Surfen über Sie sammeln können.
Denn wenn Sie nicht eingeloggt sind und keine Tracking-Cookies mehr von früher haben, wissen Websites nicht mehr genau, wer Sie sind oder was Sie bei Ihrem letzten Besuch getan haben.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- PlatoAiStream. Web3-Datenintelligenz. Wissen verstärkt. Hier zugreifen.
- Die Zukunft prägen mit Adryenn Ashley. Hier zugreifen.
- Kaufen und verkaufen Sie Anteile an PRE-IPO-Unternehmen mit PREIPO®. Hier zugreifen.
- Quelle: https://nakedsecurity.sophos.com/2023/05/30/serious-security-verification-is-vital-examining-an-oauth-login-bug/
- :hast
- :Ist
- :nicht
- :Wo
- $UP
- 1
- 15%
- 2FA
- a
- Fähig
- Über uns
- oben
- Absolute
- Zugang
- Konto
- Trading Konten
- Erwirbt
- Handlung
- Aktionen
- aktiv
- aktiv
- Handlungen
- Hinzufügen
- Fügt
- Beratung
- beraten
- Nach der
- vor
- Alle
- zugeordnet
- erlauben
- erlaubt
- allein
- bereits
- ebenfalls
- immer
- Amazon
- unter
- Betrag
- an
- und
- Ein anderer
- beantworten
- jedem
- jemand
- etwas
- App
- Apple
- Genehmigung
- genehmigen
- genehmigt
- Apps
- SIND
- um
- Artikel
- AS
- Bewertung
- At
- Attacke
- authentifizieren
- authentifiziert
- Authentifizierung
- Autor
- autorisiert
- Genehmigung
- Auto
- Im Prinzip so, wie Sie es von Google Maps kennen.
- vermeiden
- Zurück
- Hintergrund
- background-image
- basierend
- BE
- weil
- war
- Bevor
- zwischen
- Big
- blindlings
- Blockieren
- Blog
- Grenze
- Boden
- Makler
- Browser
- Browser-Cookies
- puffern
- Pufferüberlauf
- Fehler
- Bugs
- aber
- by
- rufen Sie uns an!
- namens
- CAN
- Häuser
- Ringen
- Verursachen
- verursacht
- Center
- Chance
- Änderungen
- Überprüfung
- Schecks
- Anspruch
- Clearing
- Auftraggeber
- geschlossen
- Cloud
- Code
- Programmierung
- sammeln
- Farbe
- Kommen
- Unternehmen
- Sich zusammenschliessen
- Geht davon
- Kontakt
- Smartgeräte App
- Praktische
- Plätzchen
- Cookies
- könnte
- Abdeckung
- erstellen
- Referenzen
- kryptographisch
- Kunden
- Cyberkriminalität
- technische Daten
- entscheidet
- entschieden
- Standard
- geliefert
- Beschreibung
- erwünscht
- Detail
- Details
- Dialog
- DID
- Digest
- Direkt
- Enthüllen
- Bekanntgabe
- Entfernen
- Display
- do
- die
- Dabei
- Don
- Nicht
- synchronisiert
- Bearbeitung
- sonst
- ermöglichen
- Ende
- Sogar
- ÜBERHAUPT
- genau
- Untersuchen
- Beispiel
- Austausch-
- erwarten
- ERFAHRUNGEN
- erklärt
- Ausnutzen
- Ausstellung
- FAIL
- andernfalls
- scheitert
- faszinierend
- wenige
- Finale
- Fixieren
- fixiert
- Folgende
- folgt
- Aussichten für
- gefunden
- häufig
- für
- voll
- allgemein
- bekommen
- ABSICHT
- gegeben
- Unterstützung
- Go
- Goes
- gut
- greifen
- sehr
- hätten
- Pflege
- Griffe
- Handling
- passiert
- Los
- Haben
- Höhe
- hilfreich
- hier
- STUNDEN
- schweben
- Ultraschall
- Hilfe
- aber
- HTTPS
- Identitätsschutz
- if
- umgesetzt
- in
- Einschließlich
- indirekt
- Information
- Anfangs-
- beantragen müssen
- wollen
- in
- investigativ
- Problem
- IT
- SEINE
- selbst
- Jargon
- JavaScript
- nur
- Behalten
- Wesentliche
- stricken
- Wissen
- Wissen
- bekannt
- Nachname
- später
- Verlassen
- links
- Gefällt mir
- Hören
- ll
- protokolliert
- Protokollierung
- login
- länger
- sah
- Magie
- um
- viele
- viele Leute
- Marge
- Marketing
- max-width
- Bedeutung
- gemeint
- Medien
- Memory
- könnte
- Fehler
- Monat
- mehr
- viel
- Namens
- Need
- erforderlich
- hört niemals
- Neu
- News
- nicht
- normal
- Anzahl
- oauth
- Ziel
- of
- WOW!
- bieten
- angeboten
- on
- EINEM
- Online
- einzige
- XNUMXh geöffnet
- Option
- or
- Andere
- Anders
- übrig
- besitzen
- verpackt
- Parameter
- leitet
- Bestehen
- Passwort
- Patch
- Patches
- Alexander
- Personen
- Telefon
- Plato
- Datenintelligenz von Plato
- PlatoData
- erfahren
- Points
- Punkte
- Beliebt
- Position
- möglich
- BLOG-POSTS
- Gegenwart
- verhindert
- privat
- Prozessdefinierung
- anpassen
- Profil
- Programmierung
- Protokoll
- Belegen
- die
- Werbung
- veröffentlicht
- Publishing
- Zwecke
- Putting
- schnell
- lieber
- Lesen Sie mehr
- wirklich
- vernünftig
- erhält
- Empfang
- umleiten
- Veteran
- verlassen
- antworten
- berichten
- Reporter
- Reporting
- Meldungen
- Zugriffe
- erfordern
- Forscher
- Antwort
- für ihren Verlust verantwortlich.
- Rückgabe
- Recht
- Risiko
- Wurzel
- Führen Sie
- Said
- Salz
- zufrieden
- sagen
- sagt
- Szenen
- Zweite
- sicher
- Sicherheitdienst
- Sicherheitstoken
- sehen
- Sehen
- gesehen
- sieht
- senden
- geschickt
- Reihenfolge
- ernst
- Leistungen
- kompensieren
- Einstellung
- Shares
- Short
- sollte
- Konzerte
- Schild
- ähnlich
- vereinfachte
- einfach
- am Standort
- Seiten
- smart
- So
- Social Media
- Social Media
- Social Media Beiträge
- solide
- Lösung
- einige
- etwas
- Bald
- Sprechen
- besondere
- angegeben
- Anfang
- bleiben
- Shritte
- gelagert
- eingereicht
- Erfolg haben
- so
- Zuführung
- SVG
- System
- Reden
- erzählen
- erzählt
- als
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- ihr
- Sie
- dann
- deswegen
- Diese
- vom Nutzer definierten
- fehlen uns die Worte.
- diejenigen
- obwohl?
- nach drei
- Zeit
- zu
- Zeichen
- Toolkit
- Top
- Tracking
- Übergang
- transparent
- behandeln
- versucht
- auslösen
- ausgelöst
- Vertrauen
- vertrauen
- versuchen
- WENDE
- XNUMX
- Letztlich
- für
- auf
- URL
- us
- benutzt
- Mitglied
- Nutzer
- Verwendung von
- BESTÄTIGEN
- Bestätigung
- Verkäufer
- Verification
- überprüfen
- Besuchen Sie
- besucht
- lebenswichtig
- Verwundbarkeit
- wollen
- wurde
- Weg..
- Wege
- we
- Netz
- Web-Services
- Webseite
- Wochen
- ging
- waren
- Was
- wann
- sobald
- welche
- WHO
- werden wir
- mit
- .
- ohne
- würde
- Schreiben
- Falsch
- X
- ja
- noch
- U
- Ihr
- sich selbst
- Zephyrnet