I ricercatori della società di sicurezza di codifica web SALT hanno appena pubblicato un'affascinante descrizione di come hanno trovato un errore di autenticazione soprannominato CVE-2023-28131 in un popolare toolkit per la creazione di app online noto come Expo.
La buona notizia è che Expo ha risposto molto rapidamente alla segnalazione di bug di SALT, trovando una correzione entro poche ore dalla divulgazione responsabile di SALT.
Fortunatamente, la correzione non si basava sul download da parte dei clienti, perché la patch è stata implementata all'interno del servizio cloud di Expo e non richiedeva patch per alcuna app preinstallata o codice lato client.
dell'Expo consultivo non solo ha spiegato cosa è successo e come l'azienda ha risolto il problema, ma ha anche offerto consigli di programmazione ai propri clienti su come evitare questo tipo di possibile vulnerabilità con altri servizi online.
SALT ha quindi aspettato tre mesi prima di pubblicare il suo rapporto, piuttosto che affrettarlo a scopi pubblicitari il prima possibile, dando così agli utenti di Expo la possibilità di digerire e agire in base alla risposta di Expo.
Tenendolo semplice
Il processo di autenticazione difettoso è spiegato in dettaglio in Il rapporto di SALE, ma presenteremo qui una descrizione notevolmente semplificata di ciò che è andato storto nel servizio OAUTH di Expo.
OAuth, abbreviazione di Aprire il quadro di autorizzazione, è un processo che ti consente di accedere a dati privati in un servizio online (come la modifica del tuo profilo online, l'aggiunta di un nuovo articolo di blog o l'approvazione di un servizio Web per creare post sui social media per te), senza mai impostare una password con o accedendo direttamente al servizio stesso.
Quando vedi servizi web che ti offrono un Accedi con Google o Facebook opzione, ad esempio, utilizzano quasi sempre OAUTH in background, quindi non è necessario creare un nuovo nome utente e una nuova password con un altro sito Web o fornire il proprio numero di telefono a un altro servizio online.
A rigor di termini, ti autentichi indirettamente, inserendo sempre e solo le tue credenziali Google o Facebook in uno di quei siti.
Ad alcuni utenti questo non piace, perché non vogliono autenticarsi su Google o Facebook solo per dimostrare la propria identità ad altri siti non correlati. Ad altri piace perché presumono che siti come Facebook e Google abbiano più esperienza nella gestione del processo di accesso, nell'archiviazione sicura degli hash delle password e nell'esecuzione di 2FA rispetto a un sito web boutique che ha provato a creare i propri processi di sicurezza crittografica.
Autenticazione esternalizzata
Molto semplificato, un accesso in stile OAUTH, tramite il tuo account Facebook a un sito chiamato example.com
, suona più o meno così:
- Il sito
example.com
dice all'app o al browser, "Ciao, X, vai a prendere un token di accesso magico per questo sito da Facebook." - Visiti un URL speciale di Facebook, effettuando l'accesso se non l'hai già fatto, e dire: "Dammi un token di accesso magico per
example.com
. " - Se Facebook è convinto che tu sia chi rivendichi, risponde: "Ciao, X, ecco il tuo token di accesso magico".
- Consegni il token di accesso a
example.com
, che può poi contattare Facebook stesso per validare il token.
Tieni presente che solo Facebook vede la tua password Facebook e il codice 2FA, se necessario, quindi il servizio Facebook funge da broker di autenticazione tra te e example.com
.
Dietro le quinte, c'è una convalida finale, come questa:
- Il sito
example.com
dice a Facebook, "Hai emesso questo token e convalida l'utente X?" - Se Facebook è d'accordo, racconta
example.com
, "Sì, consideriamo questo utente autenticato."
Sequenza sovvertibile
Il bug che i ricercatori di SALT hanno trovato nel codice di Expo può essere attivato sovvertendo maliziosamente la gestione di Expo di quello che si potrebbe chiamare il processo di "intermediazione di autenticazione".
I punti chiave sono i seguenti:
- Expo stessa aggiunge un involucro attorno al processo di verifica, in modo che gestisca l'autenticazione e la convalida per te, passando infine un token di accesso magico per il sito Web desiderato (
example.com
nello scambio sopra) all'app o al sito Web da cui ti stai connettendo. - I parametri utilizzati nella gestione della verifica sono racchiusi in un grande URL inviato al servizio Expo.
- Uno di questi parametri è memorizzato temporaneamente in un cookie web che specifica l'URL a cui verrà inviato il token di sicurezza magico finale per abilitare l'accesso.
- Prima che il token di sicurezza venga consegnato, un popup ti chiede di verificare l'URL che sta per essere autorizzato, in modo da poter individuare chiunque tenti di sostituire un URL fasullo nel processo di accesso.
- Se approvi il popup, Expo ti reindirizza al processo di verifica di Facebook.
- Se Facebook approva la verifica, restituisce un token di accesso magico al servizio Expo e Expo lo passa all'URL che hai appena approvato nel popup, soprannominato il
returnURL
. - L'app o il sito Web in ascolto all'orario specificato
returnURL
riceve la richiamata di Expo, acquisisce il token di accesso ed è quindi autenticato come te.
Sfortunatamente, i ricercatori SALT hanno scoperto di poter sovvertire il processo di accesso utilizzando il codice JavaScript per attivare l'accesso all'URL di accesso iniziale di Expo, ma poi eliminando il popup di verifica prima che tu avessi il tempo di leggerlo o approvarlo tu stesso.
A questo punto, però, il servizio di Expo aveva già impostato un cookie denominato ru
(Corto per returnURL
) per dirgli dove richiamare con il tuo token di accesso magico alla fine.
Ciò significava che un criminale informatico poteva indurre il codice di Expo a "ricordare" a returnURL
ad esempio https://roguesite.example
, senza che tu abbia mai visto la finestra di dialogo per avvisarti che era in corso un attacco, figuriamoci approvarlo per errore.
Quindi i ricercatori hanno utilizzato un secondo pezzo di codice JavaScript per simulare il reindirizzamento di Expo al processo di verifica di Facebook, che avrebbe avuto successo automaticamente se (come molte persone) si fosse già effettuato l'accesso a Facebook stesso.
La verifica di Facebook, a sua volta, reindirizzerebbe il processo di accesso a Expo nel codice JavaScript di Expo...
…che afferrerebbe con fiducia ma erroneamente ciò che non è mai stato effettivamente verificato returnURL
per il suo richiamo da quella magia ru
cookie che ha impostato all'inizio, senza la tua approvazione o conoscenza.
Fallire in apertura o fallire in chiusura?
Come puoi vedere dalla descrizione sopra, la vulnerabilità è stata causata dal codice di Expo che falliva in modo inappropriato.
Il codice di autenticazione dovrebbe generalmente fallito chiuso, in gergo, a significare che il processo non dovrebbe andare a buon fine a meno che non sia stata segnalata una sorta di approvazione attiva.
Supponiamo che Expo non intendesse che il sistema lo facesse fallire aperto, dato che il rapporto di SALT mostra che la sua finestra di dialogo di approvazione popup era simile a questa:
L'app su https://roguesite.example ti chiede di accedere al tuo account Facebook. Ti fidi completamente di https://roguesite.example e accetti di lasciarlo: [No] [Sì]
La risposta predefinita, come ti aspetteresti, era impostata su [No]
, ma ciò provocherebbe il fallimento della chiusura del sistema solo se si utilizza religiosamente il codice lato client di Expo per controllare il processo di verifica.
Fornendo il proprio JavaScript per eseguire la sequenza delle richieste di verifica, i ricercatori sono stati in grado di trattare la finestra di dialogo di approvazione come se avesse detto:
Se non ci dici esplicitamente di impedire a https://roguesite.example di accedere tramite il tuo account Facebook, lo lasceremo fare: [Consenti] [Blocca]
La soluzione, tra le altre modifiche, era che il codice di accesso iniziale di Expo impostasse quella magia ru
biscotto solo dopo aver esplicitamente approvato il cd returnURL
, in modo che il successivo codice di accesso JavaScript di Expo non si chiudesse se il popup di verifica fosse saltato, invece di fidarsi ciecamente di un URL che non avevi mai visto o approvato.
In molti modi, questo bug è simile al Presa intelligente Wemo Belkin bug che abbiamo scritto circa due settimane fa, anche se la causa principale nel caso di Belkin era un overflow del buffer, non una richiamata web non autorizzata.
Il codice di Belkin ha allocato un buffer di memoria di 68 byte nel suo codice lato server, ma si è basato sul controllo nel suo codice lato client che non hai provato a inviare più di 68 byte, lasciando così il server alla mercé degli aggressori che hanno deciso per parlare con il server utilizzando il proprio codice lato client che ha aggirato il processo di verifica.
Cosa fare?
- Quando si segnalano e si scrivono bug, considera di seguire i SALT esempio. Divulgare responsabilmente, concedendo al fornitore un tempo ragionevole per correggere la vulnerabilità, oltre a un tempo ragionevole per consigliare i propri utenti, prima di pubblicare dettagli che consentirebbero a chiunque altro di creare un proprio exploit.
- Quando si ricevono segnalazioni di bug, prendere in considerazione di seguire l'Expo esempio. Rispondi rapidamente, resta in contatto con il segnalatore del bug, correggi la vulnerabilità il prima possibile, fornisci un utile rapporto investigativo per i tuoi utenti e mantienilo obiettivo. (Resisti ai suggerimenti del tuo team di marketing di lodarti per "prendere sul serio la sicurezza" o di ignorare il problema come non importante. Spetta ai tuoi utenti decidere, in base alla tempestività e alla pertinenza della tua risposta e alla loro valutazione del rischio.)
- Assicurati che il codice di autenticazione non venga chiuso. Assicurati di non avere passaggi di verifica o approvazione che possono essere neutralizzati semplicemente ignorandoli o annullandoli.
- Non dare mai per scontato che il tuo codice lato client avrà il controllo del processo di verifica. Presumi che gli aggressori eseguano il reverse engineering del tuo protocollo e creino il proprio codice client per aggirare il maggior numero di controlli possibile.
- Disconnettersi dagli account Web quando non li si utilizza attivamente. Molte persone accedono ad account come Google, Amazon, Facebook, Apple e altri, e poi rimangono connessi a tempo indeterminato, perché è conveniente. La disconnessione impedisce che molte azioni (incluse autenticazioni, post, Mi piace, condivisioni e molto altro) vengano eseguite quando non te le aspetti: vedrai invece una richiesta di accesso.
Non dimenticare che disconnettendoti dai servizi Web ogni volta che puoi e cancellando frequentemente tutti i cookie del browser e i dati Web memorizzati, riduci anche la quantità di informazioni di tracciamento che i siti possono raccogliere su di te durante la navigazione.
Dopotutto, se non hai effettuato l'accesso e non hai più cookie di tracciamento rimasti da prima, i siti non sapranno più esattamente chi sei o cosa hai fatto l'ultima volta che li hai visitati.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- PlatoAiStream. Intelligenza dei dati Web3. Conoscenza amplificata. Accedi qui.
- Coniare il futuro con Adryenn Ashley. Accedi qui.
- Acquista e vendi azioni in società PRE-IPO con PREIPO®. Accedi qui.
- Fonte: https://nakedsecurity.sophos.com/2023/05/30/serious-security-verification-is-vital-examining-an-oauth-login-bug/
- :ha
- :È
- :non
- :Dove
- $ SU
- 1
- 15%
- 2FA
- a
- capace
- Chi siamo
- sopra
- Assoluta
- accesso
- Il mio account
- conti
- Acquisisce
- Legge
- azioni
- attivo
- attivamente
- atti
- l'aggiunta di
- Aggiunge
- consigli
- aiutarti
- Dopo shavasana, sedersi in silenzio; saluti;
- fa
- Tutti
- allocato
- consentire
- consente
- da solo
- già
- anche
- sempre
- Amazon
- tra
- quantità
- an
- ed
- Un altro
- rispondere
- in qualsiasi
- chiunque
- nulla
- App
- Apple
- approvazione
- approvare
- approvato
- applicazioni
- SONO
- in giro
- articolo
- AS
- valutazione
- At
- attacco
- autenticare
- autenticato
- Autenticazione
- autore
- autorizzato
- autorizzazione
- auto
- automaticamente
- evitare
- precedente
- sfondo
- background-image
- basato
- BE
- perché
- stato
- prima
- fra
- Big
- ciecamente
- Bloccare
- Blog
- sistema
- Parte inferiore
- broker
- del browser
- cookie del browser
- bufferizzare
- buffer overflow
- Insetto
- bug
- ma
- by
- chiamata
- detto
- Materiale
- Custodie
- lotta
- Causare
- ha causato
- centro
- possibilità
- Modifiche
- verifica
- Controlli
- rivendicare
- Radura
- cliente
- chiuso
- Cloud
- codice
- codifica
- raccogliere
- colore
- arrivo
- azienda
- Collegamento
- Prendere in considerazione
- contatti
- di controllo
- Comodo
- biscotto
- Cookies
- potuto
- coprire
- creare
- Credenziali
- crittografico
- Clienti
- CIBERCRIMINALE
- dati
- decide
- deciso
- Predefinito
- consegnato
- descrizione
- desiderato
- dettaglio
- dettagli
- dialogo
- DID
- digerire
- direttamente
- Rilevare
- Rivelazione
- Nascondi
- Dsiplay
- do
- effettua
- fare
- don
- Dont
- soprannominato
- montaggio
- altro
- enable
- fine
- Anche
- EVER
- di preciso
- esaminando
- esempio
- exchange
- attenderti
- esperienza
- ha spiegato
- Sfruttare
- Expo
- FAIL
- in mancanza di
- fallisce
- affascinante
- pochi
- finale
- Fissare
- fisso
- i seguenti
- segue
- Nel
- essere trovato
- frequentemente
- da
- completamente
- generalmente
- ottenere
- Dare
- dato
- Dare
- Go
- va
- buono
- afferrare
- molto
- ha avuto
- cura
- Maniglie
- Manovrabilità
- successo
- Happening
- Avere
- altezza
- utile
- qui
- ORE
- librarsi
- Come
- Tutorial
- Tuttavia
- HTTPS
- Identità
- if
- implementato
- in
- Compreso
- indirettamente
- informazioni
- inizialmente
- invece
- intendono
- ai miglioramenti
- investigativo
- problema
- IT
- SUO
- stessa
- gergo
- JavaScript
- ad appena
- mantenere
- Le
- maglia
- Sapere
- conoscenze
- conosciuto
- Cognome
- dopo
- partenza
- a sinistra
- piace
- Ascolto
- ll
- registrati
- registrazione
- accesso
- più a lungo
- guardò
- magia
- make
- molti
- molte persone
- Margine
- Marketing
- max-width
- significato
- significava
- Media
- Memorie
- forza
- errore
- mese
- Scopri di più
- molti
- Detto
- Bisogno
- di applicazione
- mai
- New
- notizie
- no
- normale
- numero
- OAuth
- obiettivo
- of
- MENO
- offrire
- offerto
- on
- ONE
- online
- esclusivamente
- aprire
- Opzione
- or
- Altro
- Altri
- su
- ancora
- proprio
- imballato
- parametri
- Passi
- Di passaggio
- Password
- Toppa
- Patch
- Paul
- Persone
- telefono
- Platone
- Platone Data Intelligence
- PlatoneDati
- più
- punto
- punti
- Popolare
- posizione
- possibile
- Post
- presenti
- impedisce
- un bagno
- processi
- i processi
- Profilo
- Programmazione
- protocollo
- Dimostra
- fornire
- pubblicità
- pubblicato
- editoriale
- fini
- Mettendo
- rapidamente
- piuttosto
- Leggi
- veramente
- ragionevole
- riceve
- ricevente
- reindirizzare
- ridurre
- fare affidamento
- rispondere
- rapporto
- reporter
- Reportistica
- Report
- richieste
- richiedere
- ricercatori
- risposta
- responsabile
- problemi
- destra
- Rischio
- radice
- Correre
- Suddetto
- sale
- soddisfatte
- dire
- dice
- Scene
- Secondo
- in modo sicuro
- problemi di
- token di sicurezza
- vedere
- vedendo
- visto
- vede
- inviare
- inviato
- Sequenza
- grave
- servizio
- Servizi
- set
- regolazione
- azioni
- Corti
- dovrebbero
- Spettacoli
- segno
- simile
- semplificata
- semplicemente
- site
- Siti
- smart
- So
- Social
- Social Media
- Post sui social media
- solido
- soluzione
- alcuni
- qualcosa
- Arrivo
- parlando
- la nostra speciale
- specificato
- inizia a
- soggiorno
- Passi
- memorizzati
- presentata
- avere successo
- tale
- fornitura
- SVG
- sistema
- Parlare
- dire
- dice
- di
- che
- I
- loro
- Li
- poi
- perciò
- Strumenti Bowman per analizzare le seguenti finiture:
- di
- questo
- quelli
- anche se?
- tre
- tempo
- a
- token
- toolkit
- top
- Tracking
- transizione
- trasparente
- trattare
- provato
- innescare
- innescato
- Affidati ad
- confidando
- prova
- TURNO
- seconda
- in definitiva
- per
- su
- URL
- us
- utilizzato
- Utente
- utenti
- utilizzando
- CONVALIDARE
- convalida
- venditore
- Convalida
- verificare
- via
- Visita
- visitato
- importantissima
- vulnerabilità
- volere
- Prima
- Modo..
- modi
- we
- sito web
- servizi web
- Sito web
- Settimane
- è andato
- sono stati
- Che
- quando
- ogni volta che
- quale
- OMS
- volere
- con
- entro
- senza
- sarebbe
- scrittura
- Wrong
- X
- sì
- ancora
- Tu
- Trasferimento da aeroporto a Sharm
- te stesso
- zefiro