Errata configurazione della sicurezza
Un'impostazione CORS e qualsiasi sito può leggere l'account.
Cos’è Errata configurazione della sicurezza?
Il codice è corretto e l'API non è ancora sicura, perché un'impostazione rilevante per la sicurezza viene lasciata in uno stato pericoloso. Questo è CORS: l'API riflette qualunque origine un chiamante invii a Access-Control-Allow-Origin e imposta Access-Control-Allow-Credentials su true, dicendo ai browser che qualsiasi sito può leggere le sue risposte con il cookie di sessione del visitatore. Utilizzerai una pagina di ricompensa che invia la risposta dell'API dell'account al tuo server, quindi limiterai le origini consentite a un elenco esplicito sul lato server. La riproduzione mostra che CORS è applicato dal browser, non dal server.
Cosa imparerai in Errata configurazione della sicurezza
- Riconoscere un'errata configurazione della sicurezza in un'API: un'impostazione rilevante per la sicurezza lasciata non sicura, come una policy CORS eccessivamente permissiva, errori dettagliati, flag di debug o configurazione predefinita
- Comprendere perché riflettendo la richiesta Origin in Access-Control-Allow-Origin e consentendo le credenziali si consente a qualsiasi sito visitato da un utente che ha effettuato l'accesso di leggere il proprio account con il cookie di sessione allegato
- Scopri come un utente malintenzionato dimostra l'errata configurazione con una singola richiesta, quindi utilizza come arma una pagina dall'aspetto ordinario in modo che una vittima debba solo aprire un collegamento per consentire al proprio account di divulgare informazioni incrociate sull'origine
- Distinguerlo dall'autorizzazione a livello di oggetto non funzionante (un controllo di proprietà per record mancante) e dall'eccessiva esposizione dei dati (campi con restituzione eccessiva); qui il gestore va bene e il difetto è la configurazione
- Applicare la correzione: limitare le origini consentite a un elenco consentito esplicito lato server, non associare mai un'origine riflessa o con caratteri jolly alle credenziali e comprendere che è un browser, non il server, ciò che applica CORS
Errata configurazione della sicurezza — Fasi della formazione
-
Un'API intuitiva per i browser
Corvexa è un'app di finanza personale: le persone collegano la propria banca e tengono traccia delle proprie spese e l'app Web Corvexa legge il proprio conto dall'API di Corvexa direttamente nel browser. Oggi Bob prende di mira Corvexa. Vuole i dati dell'account cliente da poter phishing e rivendere. Ha un account Corvexa usa e getta e inizia dai documenti pubblici degli sviluppatori per vedere come l'API viene esposta al browser.
-
È consentito qualsiasi sito
Una scheda nei documenti descrive come l'API tratta le richieste provenienti da altri siti Web. Bob lo legge attentamente.
-
Chiedi come sito dell'aggressore
Bob ripete la richiesta avanzata dalla sua pagina dannosa. Punta un client API all'endpoint dell'account e, esattamente come farebbe un browser, imposta l'intestazione Origin sul proprio sito. Ha effettuato l'accesso al suo account Corvexa usa e getta, quindi la richiesta comporta una sessione reale. Ciò che gli interessa non è il corpo, ma ciò che l'API dice al browser che può fare con la risposta.
-
L'API dice di sì
Guarda le intestazioni di risposta inviate dall'API con l'account.
-
La pagina delle esche
Bob crea una pagina dall'aspetto innocuo da ospitare sul suo sito: un banner premio Corvexa. Viene visualizzato nel browser a sinistra; la sua fonte è aperta nell'editor a destra. Di per sé non fa altro che mostrare un'offerta $50.
-
Arma la pagina
Ora Bob aggiunge il carico utile. Il banner apparirà identico a un visitatore, ma la pagina chiamerà silenziosamente l'API dell'account Corvexa dal proprio browser e invierà tutto ciò che ritorna al suo server. Poiché l'API consente la sua provenienza con credenziali, il cookie del visitatore fa il resto.
-
Come funziona il furto
La pagina mostra ancora solo la ricompensa per un visitatore. Scopri cosa fa lo script aggiunto nel momento in cui un cliente Corvexa che ha effettuato l'accesso lo apre.
-
Invia l'esca
La trappola è pronta. Bob ha solo bisogno che un cliente Corvexa abbia effettuato l'accesso per aprirlo, quindi invia via email il collegamento del premio a uno, travestito da autentica promozione Corvexa dal suo dominio simile.
-
Una ricompensa nella casella di posta
Utilizzi Corvexa tu stesso e in questo momento hai effettuato l'accesso al tuo account nel tuo browser. Arriva un'e-mail che offre una ricompensa Corvexa $50. L'offerta sembra plausibile e il marchio sembra corretto.
-
Apri il collegamento
Fai clic per richiedere il premio, come farebbe la maggior parte delle persone. La pagina si apre nel tuo browser, portando ancora la tua sessione Corvexa live.
Copertura dei framework di sicurezza
OWASP API Top 10
- API8:2023 Security Misconfiguration
CWE
- CWE-942 Permissive Cross-domain Policy with Untrusted Domains
- CWE-1188 Initialization of a Resource with an Insecure Default
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