Esposizione eccessiva dei dati
La schermata nasconde i campi. La risposta API no.
Cos’è Esposizione eccessiva dei dati?
Un endpoint serializza un intero record archiviato e considera attendibile che l'app client visualizzi solo i campi sicuri. I chiamanti leggono la risposta grezza, non l'interfaccia renderizzata. Aprirai una scheda profilo che mostra un nome e una città, catturerai la chiamata dietro di essa e troverai e-mail, telefono, data di nascita e coordinate di casa nel payload, quindi ripeterai il tutto rispetto a un feed di scoperta per migliaia di persone. La correzione è una proiezione esplicita dell'elenco consentiti lato server. L'endpoint con patch risponde ancora a 200, solo con meno campi.
Cosa imparerai in Esposizione eccessiva dei dati
- Riconoscere un'eccessiva esposizione ai dati: un endpoint restituisce più campi di quelli di cui il client ha bisogno perché serializza l'intero oggetto e si affida al client per filtrare, quindi la risposta grezza perde campi sensibili che lo schermo non mostra mai
- Tieni presente che il client non rappresenta un limite di sicurezza: i chiamanti leggono la risposta grezza, non l'interfaccia utente renderizzata, quindi qualsiasi campo nel payload viene esposto indipendentemente da ciò che viene visualizzato dall'app
- Distinguerlo dall'autorizzazione a livello di oggetto interrotta (raggiungendo l'oggetto di un altro utente tramite ID) e dall'autorizzazione a livello di funzione interrotta (invocazione di una funzione al di sopra del proprio ruolo); qui al chiamante è consentito leggere la risorsa e il difetto è il set di campi restituito
- Applica la correzione: crea risposte da un elenco consentito lato server o da una proiezione di campi pubblici espliciti, non serializza mai un record archiviato all'ingrosso e taglia i serializzatori condivisi una volta per chiudere ogni percorso che li utilizza
- Riconoscere che la sovraesposizione non è un bug di controllo dell'accesso: l'endpoint fisso risponde ancora con 200, restituisce solo meno campi, quindi bloccare la richiesta interromperebbe erroneamente una funzionalità pubblica
- Controlla ogni endpoint che serializza un modello completo, in particolare i feed di elenchi e di rilevamento in cui un serializzatore con condivisione eccessiva diventa un'esportazione di dati in blocco
Esposizione eccessiva dei dati — Fasi della formazione
-
Una pagina runner pubblica
Oggi Bob prende di mira Trailkin, un'app di corsa sociale, per raccogliere dati personali sui suoi membri su larga scala. Si è iscritto come socio ordinario con identità usa e getta. I profili Trailkin sono pubblici per natura: chiunque può cercare qualsiasi corridore. Bob apre la pagina di un bersaglio, che mostra la scheda pubblica del corridore e un feed di altri corridori nelle vicinanze.
-
Solo i campi sicuri, sullo schermo
La scheda del profilo è volutamente scarna. È ciò che tutti dovrebbero vedere e non mostra nulla che un utente malintenzionato possa utilizzare per trovare o impersonare questa persona.
-
Corridori vicino a te
Sotto la scheda, la stessa pagina mostra il feed di scoperta di Trailkin: altri membri che corrono nelle vicinanze. Come il profilo, ogni scheda qui mostra solo dettagli pubblici.
-
Occhio alle richieste
La scheda e il feed sono stati estratti ciascuno dai dati recuperati dall'app tramite l'API. Bob apre gli strumenti di rete del browser e ricarica la pagina una volta, acquisendo entrambe le chiamate effettuate dall'app per crearla.
-
Due chiamate e tutto quello che nascondeva la carta
Gli strumenti di rete hanno catturato la ricarica. Entrambe le chiamate effettuate dalla pagina si trovano nell'elenco delle richieste e Bob apre la risposta alla prima, la chiamata del profilo.
-
Apri la chiamata nelle vicinanze
Un profilo è una vittima. La chiamata del feed è proprio lì nell'elenco. Bob fa clic per leggere cosa ha restituito la richiesta dei corridori vicino a te.
-
La perdita, su larga scala
La risposta vicina è la stessa perdita, moltiplicata per l'intero feed.
-
Verifica della conoscenza
Hai appena visto un semplice account membro leggere i dettagli privati che l'app non visualizza mai. Blocca il perché.
-
Arriva l'allerta
Possiedi il servizio di profilo atleta di Trailkin. Durante la notte, il monitoraggio ha segnalato un account di un singolo membro estraendo record completi per migliaia di utenti attraverso il profilo pubblico e gli endpoint vicini. La sicurezza ti ha inviato via email i dettagli.
-
Apri il router del profilo
Apri il router dell'atleta e osserva come trasforma un record memorizzato in una risposta.
Copertura dei framework di sicurezza
OWASP API Top 10
- API3:2019 Excessive Data Exposure
CWE
- CWE-213 Exposure of Sensitive Information Due to Incompatible Policies
- CWE-200 Exposure of Sensitive Information to an Unauthorized Actor
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