Autenticazione utente interrotta
Un codice a 6 cifre è solo un segreto mentre le ipotesi sono limitate.
Cos’è Autenticazione utente interrotta?
Un endpoint può controllare correttamente una credenziale e tuttavia non difendere mai il controllo dall'automazione: nessun limite di tentativi, nessun blocco, nessuna limitazione di velocità. Quando la credenziale è un codice a 6 cifre, un utente malintenzionato percorre l'intero spazio una richiesta alla volta. Inizierai un accesso tenendo solo l'e-mail di una destinazione, guarderai una risposta con codice errato 200 senza contare nulla, quindi creerai la strada verso una sessione live. La correzione tiene traccia dei tentativi falliti nello stato lato server, restituisce 429 al limite, utilizza un codice in caso di corrispondenza e mantiene la scadenza a breve.
Cosa imparerai in Autenticazione utente interrotta
- Riconoscere l'autenticazione utente interrotta in cui un endpoint convalida correttamente una credenziale ma non pone limiti ai tentativi, quindi rientra nella forza bruta
- Comprendere che un breve codice numerico (un OTP o un codice di accesso) è segreto solo mentre il numero di tentativi è limitato e che un endpoint senza limitazioni consegna a un utente malintenzionato l'intero spazio del codice una richiesta alla volta
- Distinguere questo dal furto di token, dalla falsificazione di token e dai difetti di accesso a livello di oggetto; qui il controllo delle credenziali è corretto e il controllo mancante è anti-automazione sull'endpoint
- Applica la correzione: conta i tentativi falliti nello stato lato server con chiave sull'account, blocca dopo una soglia e restituisce 429, consuma codici in uso e mantiene i codici di breve durata
- Controlla ogni endpoint di accesso, verifica e reimpostazione della password per un limite di tentativi mancanti, poiché un passaggio di autenticazione senza limitazioni è sufficiente per il controllo dell'account
Autenticazione utente interrotta — Fasi della formazione
-
Un codice fa la guardia
Kelvo è un'app di denaro di consumo e fa accedere le persone con un codice a 6 cifre inviato via email al loro indirizzo, senza password. Inserisci la tua email, Kelvo invia un codice, lo digiti nuovamente e sei dentro. Bob non ha un codice. Ciò che ha, da una mailing list violata, è l'indirizzo email di un cliente: renata.voss@gmail.com. Apre la pagina di accesso di Kelvo per vedere esattamente cosa deve affrontare.
-
Attiva il codice
Bob avvia l'accesso per l'account a cui si rivolge. Digita l'e-mail della vittima e chiede a Kelvo di inviare il codice. Il codice arriva nella casella di posta di Renata, non nella sua, ma Kelvo ora gli mostra la schermata che lo richiede. Quello schermo e la richiesta dietro di esso sono ciò che studierà dopo.
-
Guarda la richiesta
La schermata di immissione del codice è ora davanti a Bob. Non ha il vero codice di Renata, ma prima di provare a decifrarlo vuole vedere come lo schermo controlla un codice e dove lo invia. Digita un codice sbagliato e lo invia, quindi osserva la richiesta effettuata dal suo browser nel pannello Rete.
-
Il punto finale, in bella vista
Il browser di Bob ha inviato il codice all'API di Kelvo e il pannello Rete ha catturato l'intera richiesta. Gli offre l'unica cosa di cui ha bisogno per affrontare questo problema senza lo schermo: l'endpoint esatto che controlla i codici.
-
La sceneggiatura a forza bruta
Con il punto finale in mano, Bob non indovina a mano. Apre il breve script che eseguirà: un ciclo che invia ogni codice possibile all'endpoint di verifica di Kelvo finché non ne viene accettato uno.
-
Come funziona il ciclo
L'intero attacco è una manciata di righe. Scopri cosa fa ciascuna parte e perché nulla sul server vulnerabile la ferma.
-
Percorri ogni codice
Bob esegue lo script sull'endpoint di verifica di Kelvo. Lancia la stessa richiesta più e più volte, incrementando ogni volta il codice e attende che ne venga accettata una.
-
Un codice che funziona
Lo script è stato eseguito senza opposizione e ha trovato un codice accettato dal server.
-
Usa il codice
Bob prende il codice trovato dallo script e lo invia manualmente all'endpoint ancora una volta, per confermare che l'account è suo e vedere cosa possiede ora.
-
Una sessione live, da sei cifre
L'endpoint ha accettato il codice indovinato e ha restituito una sessione reale.
Copertura dei framework di sicurezza
OWASP API Top 10
- API2:2023 Broken Authentication
CWE
- CWE-287 Improper Authentication
- CWE-307 Improper Restriction of Excessive Authentication Attempts
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security