Consumo illimitato di risorse

Consumo illimitato di risorse

Una richiesta, un quarto di milione di record, nessun limite in vista.

Cos’è Consumo illimitato di risorse?

Alcuni endpoint non pongono limiti alla quantità di lavoro che una richiesta può richiedere. Un endpoint elenco prende la dimensione della pagina direttamente dalla richiesta e la passa al database senza un limite massimo lato server, in modo che un chiamante possa richiedere l'intera tabella. Catturerai il parametro del limite controllato dal chiamante, ricostruirai la richiesta chiedendo tutto e guarderai una risposta raschiare l'intero catalogo mentre blocchi il database. La correzione blocca le dimensioni della pagina sul lato server e la associa all'impaginazione del cursore. Una nuova sonda restituisce un valore limitato di 200 OK.

Cosa imparerai in Consumo illimitato di risorse

Consumo illimitato di risorse — Fasi della formazione

  1. Un feed di navigazione pubblico

    Vendlo è un'app di mercato dell'usato: i membri elencano gli oggetti da vendere e chiunque può sfogliare il catalogo. Oggi Bob prende di mira Vendlo. Vuole due cose da esso: l'intero catalogo live e i suoi prezzi, da rivendere a un concorrente, e un modo economico per eliminare l'API se decide di farlo. Si è iscritto come membro ordinario e apre il feed di navigazione pubblico per vedere come viene caricato.

  2. Guarda la richiesta

    La griglia che Bob sta guardando è stata ricavata dai dati recuperati dall'app tramite l'API. Mostra 24 elenchi e una nota che ce ne sono molti altri dietro di essi. Bob apre gli strumenti di rete del browser e ricarica la pagina una volta per acquisire la chiamata effettuata dall'app per creare il feed.

  3. La dimensione della pagina è quella del chiamante

    La ricarica è stata acquisita e la richiesta si trova nel pannello Rete. Bob legge come l'app ha richiesto la sua pagina di elenchi.

  4. Un quarto di milione dietro la pagina

    Bob apre la risposta restituita dall'endpoint e legge ciò che dice sulla dimensione del catalogo.

  5. Chiedi tutto

    Bob ricostruisce la stessa chiamata nel tester API e cambia una cosa: invece di una pagina di 24, chiede 250.000 elenchi in un'unica richiesta. Se il server lo onora, una chiamata gli consegnerà l'intero catalogo.

  6. Una sola richiesta, l'intero catalogo

    Il server ha fatto esattamente quello che gli era stato chiesto. La risposta racconta la storia di quanto è costato.

  7. La vetrina del negozio cede

    Quella richiesta è ancora in esecuzione, macinando un quarto di milione di righe e mantenendo una connessione al database per tutto il tempo. Il pool di connessioni di Vendlo è piccolo, quindi mentre quella query collega una connessione, il negozio pubblico non può ottenerne una propria. Bob ricarica la pagina di Vendlo per vedere cosa vedrebbe un vero acquirente in questo momento.

  8. Acquirenti veri, bloccati

    Lo stesso endpoint che ha appena consegnato a Bob l'intero catalogo ora non può servire un acquirente normale. Il tester API mostra ancora il suo 200 con il catalogo completo; la vetrina accanto mostra ciò che ottengono tutti gli altri.

  9. Verifica della conoscenza

    Hai appena visto una richiesta estrarre un quarto di milione di record e bloccare il database. Blocca il perché.

  10. Arriva l'allerta

    Possiedi l'API del catalogo di Vendlo. Durante la notte, il monitoraggio ha segnalato una singola richiesta che ha restituito l'intero catalogo e ha mantenuto aperta una connessione al database per nove secondi, con un picco di latenza dell'API su ogni endpoint durante l'esecuzione. Le operazioni di sicurezza ti hanno inviato un'e-mail.

Copertura dei framework di sicurezza

OWASP API Top 10

  • API4:2023 Unrestricted Resource Consumption

CWE

  • CWE-770 Allocation of Resources Without Limits or Throttling
  • CWE-400 Uncontrolled Resource Consumption

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