Des chercheurs de la société de sécurité de codage Web SALT viennent de publier une description fascinante de la façon dont ils ont trouvé un bogue d'authentification doublé CVE-2023-28131 dans une boîte à outils de création d'applications en ligne populaire connue sous le nom d'Expo.
Les bonnes nouvelles sont que Expo a répondu très rapidement au rapport de bogue de SALT, proposant un correctif quelques heures seulement après la divulgation responsable de SALT.
Heureusement, le correctif ne reposait pas sur le téléchargement de quoi que ce soit par les clients, car le correctif était implémenté dans le service cloud d'Expo et ne nécessitait aucun correctif pour les applications préinstallées ou le code côté client.
Expos consultatif non seulement expliqué ce qui s'est passé et comment l'entreprise l'a corrigé, mais a également offert des conseils de programmation à ses clients sur la façon d'éviter ce type de vulnérabilité possible avec d'autres services en ligne.
SALT a ensuite attendu trois mois avant de publier son rapport, plutôt que de le publier à des fins publicitaires dès qu'il le pouvait, donnant ainsi aux utilisateurs de l'Expo une chance de digérer et d'agir en fonction de la réponse de l'Expo.
Faire simple
Le processus d'authentification bogué est expliqué en détail dans Le rapport de SALT, mais nous présenterons ici une description très simplifiée de ce qui n'a pas fonctionné dans le service OAUTH d'Expo.
OAUTH, court pour Cadre d'autorisation ouvert, est un processus qui vous permet d'accéder à des données privées dans un service en ligne (comme la modification de votre profil en ligne, l'ajout d'un nouvel article de blog ou l'approbation d'un service Web pour publier pour vous des publications sur les réseaux sociaux), sans jamais configurer de mot de passe avec , ou en vous connectant directement à ce service lui-même.
Lorsque vous voyez des services Web qui vous offrent un Connectez-vous avec Google ou Facebook option, par exemple, ils utilisent presque toujours OAUTH en arrière-plan, de sorte que vous n'avez pas besoin de créer un nouveau nom d'utilisateur et un nouveau mot de passe avec un autre site Web, ou de donner votre numéro de téléphone à un autre service en ligne.
À proprement parler, vous vous authentifiez indirectement, en ne mettant jamais vos informations d'identification Google ou Facebook que sur l'un de ces sites.
Certains utilisateurs n'aiment pas cela, car ils ne veulent pas s'authentifier auprès de Google ou Facebook simplement pour prouver leur identité à d'autres sites non liés. D'autres l'aiment parce qu'ils supposent que des sites tels que Facebook et Google ont plus d'expérience dans la gestion du processus de connexion, le stockage sécurisé des hachages de mot de passe et la réalisation de 2FA, qu'un site Web de boutique qui a essayé de créer ses propres processus de sécurité cryptographique.
Authentification externalisée
Grandement simplifié, une connexion de type OAUTH, via votre compte Facebook à un site appelé example.com
, va quelque chose comme ceci:
- Le site
example.com
dit à votre application ou à votre navigateur, "Bonjour, X, va chercher un jeton d'accès magique pour ce site de Facebook." - Vous visitez une URL Facebook spéciale, en vous connectant si vous ne l'avez pas déjà fait, et dire : "Donnez-moi un jeton d'accès magique pour
example.com
. » - Si Facebook est convaincu que vous êtes la personne que vous prétendez, il répond: "Bonjour, X, voici votre jeton d'accès magique."
- Vous remettez le jeton d'accès à
example.com
, qui peut ensuite contacter Facebook lui-même pour valider le jeton.
Notez que seul Facebook voit votre mot de passe Facebook et votre code 2FA, si nécessaire, de sorte que le service Facebook agit comme un courtier d'authentification entre vous et example.com
.
Dans les coulisses, il y a une validation finale, comme ceci :
- Le site
example.com
dit à Facebook, "Avez-vous émis ce jeton et valide-t-il l'utilisateur X ?" - Si Facebook est d'accord, ça raconte
example.com
, "Oui, nous considérons que cet utilisateur est authentifié."
Séquence subversible
Le bogue que les chercheurs de SALT ont trouvé dans le code d'Expo peut être déclenché en subvertissant de manière malveillante la gestion par Expo de ce que vous pourriez appeler le processus de "courtage d'authentification".
Les points clés sont les suivants:
- Expo elle-même ajoute un wrapper autour du processus de vérification, afin qu'il gère l'authentification et la validation pour vous, en passant finalement un jeton d'accès magique pour le site Web souhaité (
example.com
dans l'échange ci-dessus) vers l'application ou le site Web à partir duquel vous vous connectez. - Les paramètres utilisés pour gérer la vérification sont regroupés dans une grande URL soumise au service Expo.
- L'un de ces paramètres est stocké temporairement dans un cookie Web qui spécifie l'URL à laquelle le jeton de sécurité magique final sera envoyé pour permettre l'accès.
- Avant la livraison du jeton de sécurité, une fenêtre contextuelle vous demande de vérifier l'URL qui est sur le point d'être autorisée, afin que vous puissiez détecter toute personne essayant de remplacer une fausse URL dans le processus de connexion.
- Si vous approuvez la popup, Expo vous redirige vers le processus de vérification Facebook.
- Si Facebook approuve la vérification, il renvoie un jeton d'accès magique au service Expo, et Expo le transmet à l'URL que vous venez d'approuver dans la fenêtre contextuelle, surnommée le
returnURL
. - L'application ou le site Web qui écoute à l'heure spécifiée
returnURL
reçoit le rappel d'Expo, acquiert le jeton d'accès, et est donc authentifié comme vous.
Malheureusement, les chercheurs de SALT ont découvert qu'ils pouvaient subvertir le processus de connexion en utilisant du code JavaScript pour déclencher l'accès à l'URL de connexion initiale de l'Expo, mais en supprimant ensuite la fenêtre de vérification avant que vous n'ayez eu le temps de la lire ou de l'approuver vous-même.
À ce stade, cependant, le service d'Expo avait déjà défini un cookie nommé ru
(court pour returnURL
) pour lui dire où rappeler avec votre jeton d'accès magique à la fin.
Cela signifiait qu'un cybercriminel pouvait tromper le code d'Expo pour qu'il "se souvienne" d'un returnURL
tel que https://roguesite.example
, sans que vous ne voyiez jamais la boîte de dialogue pour vous avertir qu'une attaque était en cours, et encore moins l'approuver par erreur.
Ensuite, les chercheurs ont utilisé un deuxième morceau de code JavaScript pour simuler la redirection d'Expo vers le processus de vérification de Facebook, qui réussirait automatiquement si (comme beaucoup de gens) vous étiez déjà connecté à Facebook lui-même.
La vérification de Facebook, à son tour, redirigerait le processus de connexion à l'Expo vers le propre code JavaScript de l'Expo…
… qui saisirait de manière confiante mais erronée le jamais réellement vérifié returnURL
pour son rappel de cette magie ru
cookie qu'il a déposé au départ, à votre insu.
Échec ouvert ou échec fermé ?
Comme vous pouvez le voir dans la description ci-dessus, la vulnérabilité a été causée par le code d'Expo qui a échoué de manière inappropriée.
Le code d'authentification doit généralement échec fermé, dans le jargon, ce qui signifie que le processus ne devrait pas réussir à moins qu'une sorte d'approbation active n'ait été signalée.
Nous supposons qu'Expo n'avait pas l'intention que le système échouer ouvert, étant donné que le rapport de SALT montre que sa boîte de dialogue d'approbation contextuelle ressemblait à ceci :
L'application sur https://roguesite.example vous demande de vous connecter à votre compte Facebook. Faites-vous entièrement confiance à https://roguesite.example et acceptez-vous de le laisser : [Non] [Oui]
La réponse par défaut, comme vous vous en doutez, a été définie sur [No]
, mais cela n'entraînerait la fermeture du système que si vous utilisiez religieusement le propre code côté client d'Expo pour contrôler le processus de vérification.
En fournissant leur propre JavaScript pour exécuter la séquence de demandes de vérification, les chercheurs ont pu traiter la boîte de dialogue d'approbation comme si elle avait dit :
Si vous ne nous dites pas explicitement d'empêcher https://roguesite.example de se connecter via votre compte Facebook, nous le laisserons faire : [Autoriser] [Bloquer]
La solution, entre autres changements, était que le code de connexion initial d'Expo définisse cette magie ru
gâteau seulement après avoir explicitement approuvé le soi-disant returnURL
, de sorte que le code de connexion JavaScript ultérieur d'Expo échouerait si la fenêtre contextuelle de vérification était ignorée, au lieu de faire aveuglément confiance à une URL que vous n'aviez jamais vue ou approuvée.
À bien des égards, ce bogue est similaire au Prise intelligente Belkin Wemo bogue que nous avons écrit il y a environ deux semaines, même si la cause principale dans le cas de Belkin était un dépassement de mémoire tampon, pas un rappel Web malveillant.
Le code de Belkin a alloué une mémoire tampon de 68 octets dans son code côté serveur, mais s'est appuyé sur la vérification de son code côté client que vous n'avez pas essayé d'envoyer plus de 68 octets, laissant ainsi le serveur à la merci des attaquants qui ont décidé pour parler au serveur en utilisant leur propre code côté client qui a contourné le processus de vérification.
Que faire?
- Lors du signalement et de la rédaction de bogues, envisager de suivre SALT exemple. Divulguez de manière responsable, en donnant au fournisseur un délai raisonnable pour corriger la vulnérabilité, ainsi qu'un délai raisonnable pour informer ses propres utilisateurs, avant de publier des détails qui permettraient à quiconque de créer son propre exploit.
- Lors de la réception de rapports de bugs, envisager de suivre les Expo exemple. Répondez rapidement, restez en contact avec le signaleur du bogue, corrigez la vulnérabilité dès que possible, fournissez un rapport d'enquête utile à vos utilisateurs et restez objectif. (Résistez aux suggestions de votre équipe marketing de vous féliciter de « prendre la sécurité au sérieux » ou de rejeter le problème comme sans importance. C'est à vos utilisateurs de décider, en fonction de la rapidité et de la pertinence de votre réponse, et de leur propre évaluation du risque.)
- Assurez-vous que votre code d'authentification échoue fermé. Assurez-vous de ne pas avoir d'étapes de vérification ou d'approbation qui peuvent être neutralisées simplement en les ignorant ou en les annulant.
- Ne présumez jamais que votre propre code côté client contrôlera le processus de vérification. Supposons que les attaquants procéderont à une ingénierie inverse de votre protocole et créeront leur propre code client pour contourner autant de vérifications que possible.
- Déconnectez-vous des comptes Web lorsque vous ne les utilisez pas activement. De nombreuses personnes se connectent à des comptes tels que Google, Amazon, Facebook, Apple et autres, puis restent connectées indéfiniment, car c'est pratique. La déconnexion empêche de nombreuses actions (y compris les authentifications, les publications, les likes, les partages et bien plus encore) de se produire lorsque vous ne les attendez pas - vous verrez une invite de connexion à la place.
N'oubliez pas qu'en vous déconnectant des services Web chaque fois que vous le pouvez et en effaçant fréquemment tous les cookies de votre navigateur et les données Web stockées, vous réduisez également la quantité d'informations de suivi que les sites peuvent collecter à votre sujet lorsque vous naviguez.
Après tout, si vous n'êtes pas connecté et qu'il ne vous reste plus de cookies de suivi, les sites ne savent plus exactement qui vous êtes ou ce que vous avez fait lors de votre dernière visite.
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- PlatoAiStream. Intelligence des données Web3. Connaissance Amplifiée. Accéder ici.
- Frapper l'avenir avec Adryenn Ashley. Accéder ici.
- Achetez et vendez des actions de sociétés PRE-IPO avec PREIPO®. Accéder ici.
- La source: https://nakedsecurity.sophos.com/2023/05/30/serious-security-verification-is-vital-examining-an-oauth-login-bug/
- :possède
- :est
- :ne pas
- :où
- $UP
- 1
- 15%
- 2FA
- a
- Capable
- Qui sommes-nous
- au dessus de
- Absolute
- accès
- Compte
- hybrides
- L'acquisition de
- Agis
- actes
- infection
- activement
- actes
- ajoutant
- Ajoute
- conseils
- conseiller
- Après
- depuis
- Tous
- consacrée
- permettre
- permet
- seul
- déjà
- aussi
- toujours
- Amazon
- parmi
- montant
- an
- ainsi que le
- Une autre
- répondre
- tous
- chacun.e
- quoi que ce soit d'artificiel
- appli
- Apple
- approbation
- approuver
- ,
- applications
- SONT
- autour
- article
- AS
- Évaluation de risque climatique
- At
- attaquer
- authentifier
- authentifié
- Authentification
- auteur
- autorisé
- autorisation
- auto
- automatiquement
- éviter
- RETOUR
- fond
- image de fond
- basé
- BE
- car
- était
- before
- jusqu'à XNUMX fois
- Big
- aveuglément
- Block
- Blog
- frontière
- Bas et Leggings
- courtier
- navigateur
- cookies du navigateur
- tampon
- débordement de tampon
- Punaise
- bogues
- mais
- by
- Appelez-nous
- appelé
- CAN
- maisons
- Attraper
- Causes
- causé
- Canaux centraux
- Chance
- Modifications
- vérification
- Contrôles
- réclamer
- Clairière
- client
- fonds à capital fermé
- le cloud
- code
- Codage
- recueillir
- Couleur
- Venir
- Société
- Connecter les
- Considérer
- contact
- des bactéries
- Pratique
- gâteau
- biscuits
- pourriez
- couverture
- engendrent
- Lettres de créance
- cryptographique
- Clients
- CYBERCRIMINEL
- données
- décider
- décidé
- Réglage par défaut
- livré
- la description
- voulu
- détail
- détails
- dialogue
- DID
- Digérer
- directement
- Divulguer
- divulgation
- Fermer
- Commande
- do
- faire
- Don
- Ne pas
- doublé
- édition
- d'autre
- permettre
- fin
- Pourtant, la
- JAMAIS
- exactement
- Examiner
- exemple
- échange
- attendre
- Découvrez
- expliqué
- Exploiter
- Exposition
- FAIL
- défaut
- échoue
- fascinant
- few
- finale
- Fixer
- fixé
- Abonnement
- suit
- Pour
- trouvé
- fréquemment
- de
- d’étiquettes électroniques entièrement
- généralement
- obtenez
- Donner
- donné
- Don
- Go
- Goes
- Bien
- saisir
- considérablement
- ait eu
- main
- Poignées
- Maniabilité
- arrivé
- EN COURS
- Vous avez
- la taille
- utile
- ici
- HEURES
- flotter
- Comment
- How To
- Cependant
- HTTPS
- Active
- if
- mis en œuvre
- in
- Y compris
- indirectement
- d'information
- initiale
- plutôt ;
- l'intention
- développement
- enquête
- aide
- IT
- SES
- lui-même
- jargon
- JavaScript
- juste
- XNUMX éléments à
- ACTIVITES
- tricoter
- Savoir
- spécialisées
- connu
- Nom de famille
- plus tard
- départ
- à gauche
- comme
- Écoute
- ll
- Connecté
- enregistrement
- vous connecter
- plus long
- regardé
- la magie
- a prendre une
- de nombreuses
- Beaucoup de gens
- Marge
- Stratégie
- largeur maximale
- sens
- signifiait
- Médias
- Mémoire
- pourrait
- erreur
- mois
- PLUS
- beaucoup
- Nommé
- Besoin
- nécessaire
- n'allons jamais
- Nouveauté
- nouvelles
- aucune
- Ordinaire
- nombre
- oauth
- objectif
- of
- de rabais
- code
- présenté
- on
- ONE
- en ligne
- uniquement
- ouvert
- Option
- or
- Autre
- Autres
- ande
- plus de
- propre
- emballé
- paramètres
- passes
- En passant
- Mot de Passe
- Pièce
- Patches
- paul
- Personnes
- Téléphone
- Platon
- Intelligence des données Platon
- PlatonDonnées
- plus
- Point
- des notes bonus
- Populaire
- position
- possible
- Poteaux
- représentent
- empêche
- Privé
- processus
- les process
- Profil
- Programmation
- protocole
- Prouver
- fournir
- publicité
- publié
- Édition
- des fins
- Putting
- vite.
- plutôt
- Lire
- vraiment
- raisonnable
- reçoit
- recevoir
- réorienter
- réduire
- compter
- répondre
- rapport
- journaliste
- Rapports
- Rapports
- demandes
- exigent
- chercheurs
- réponse
- responsables
- Retours
- bon
- Analyse
- racine
- Courir
- Saïd
- sel
- satisfait
- dire
- dit
- Scènes
- Deuxièmement
- en toute sécurité
- sécurité
- jeton de sécurité
- sur le lien
- voir
- vu
- voit
- envoyer
- envoyé
- Séquence
- grave
- service
- Services
- set
- mise
- Partages
- Shorts
- devrait
- Spectacles
- signer
- similaires
- simplifié
- simplement
- site
- Sites
- smart
- So
- Réseaux sociaux
- réseaux sociaux
- Publications sur les réseaux sociaux
- solide
- sur mesure
- quelques
- quelque chose
- disponible
- parlant
- spécial
- spécifié
- Commencer
- rester
- Étapes
- stockée
- soumis
- réussir
- tel
- approvisionnement
- SVG
- combustion propre
- discutons-en
- dire
- raconte
- que
- qui
- Les
- leur
- Les
- puis
- donc
- Ces
- l'ont
- this
- ceux
- bien que?
- trois
- fiable
- à
- jeton
- Boîte à outils
- top
- Tracking
- transition
- communication
- traiter
- essayé
- déclencher
- déclenché
- La confiance
- confiant
- Essai
- TOUR
- deux
- En fin de compte
- sous
- sur
- URL
- us
- d'utiliser
- Utilisateur
- utilisateurs
- en utilisant
- VALIDER
- validation
- vendeur
- Vérification
- vérifier
- via
- Visiter
- visité
- vital
- vulnérabilité
- souhaitez
- était
- Façon..
- façons
- we
- web
- services Web
- Site Web
- Semaines
- est allé
- ont été
- Quoi
- quand
- chaque fois que
- qui
- WHO
- sera
- comprenant
- dans les
- sans
- pourra
- écriture
- faux
- X
- Oui
- encore
- you
- Votre
- vous-même
- zéphyrnet