Onbeperkt hulpbronnenverbruik

Onbeperkt hulpbronnenverbruik

Eén verzoek, een kwart miljoen records, geen limiet in zicht.

Wat is Onbeperkt hulpbronnenverbruik?

Sommige eindpunten stellen geen grenzen aan de hoeveelheid werk die een verzoek kan vergen. Een lijsteindpunt haalt zijn paginagrootte rechtstreeks uit het verzoek en geeft deze door aan de database zonder maximum aan de serverzijde, zodat een beller om de hele tabel kan vragen. Je legt de door de beller bestuurde limit-parameter vast, bouwt het verzoek opnieuw op waarin om alles wordt gevraagd, en ziet hoe één antwoord de hele catalogus doorzoekt terwijl je de database vastzet. De oplossing beperkt het paginaformaat tot een maximum aan de serverzijde. Een nieuwe probe retourneert een begrensde 200 OK.

Wat je leert in Onbeperkt hulpbronnenverbruik

Onbeperkt hulpbronnenverbruik — Trainingsstappen

  1. Een openbare browsefeed

    Vendlo is een tweedehandsmarktplaats-app: leden geven een lijst van dingen die ze willen verkopen en iedereen kan door de catalogus bladeren. Vandaag richt Bob zich op Vendlo. Hij wil er twee dingen van: de volledige livecatalogus en de prijzen ervan, om door te verkopen aan een concurrent, en een goedkope manier om de API omver te werpen als hij besluit dat te doen. Hij heeft zich aangemeld als gewoon lid en opent de openbare browsefeed om te zien hoe deze wordt geladen.

  2. Bekijk het verzoek

    Het raster waar Bob naar kijkt, is afgeleid van gegevens die de app via de API heeft opgehaald. Het toont 24 vermeldingen en een opmerking dat er nog veel meer achter zitten. Bob opent de netwerktools van de browser en laadt de pagina één keer opnieuw om de oproep vast te leggen die de app maakt om de feed te bouwen.

  3. Het paginaformaat is dat van de beller

    Het herladen is vastgelegd en het verzoek staat in het netwerkpaneel. Bob leest hoe de app om de pagina met vermeldingen vroeg.

  4. Een kwart miljoen achter de pagina

    Bob opent het antwoord dat het eindpunt heeft geretourneerd en leest wat het zegt over de grootte van de catalogus.

  5. Vraag alles

    Bob bouwt dezelfde aanroep opnieuw op in de API-tester en verandert één ding: in plaats van een pagina van 24 vraagt hij om 250.000 vermeldingen in één verzoek. Als de server het respecteert, krijgt hij met één telefoontje de hele catalogus.

  6. Eén aanvraag, de hele catalogus

    De server deed precies wat hem werd gevraagd. Het antwoord vertelt het verhaal van wat dat heeft gekost.

  7. De winkelpui sluit

    Negen seconden is lang om een databaseverbinding tot stand te brengen. Bob vuurt hetzelfde verzoek opnieuw af, een paar exemplaren tegelijk, en elk exemplaar doorloopt een kwart miljoen rijen terwijl de verbinding de hele tijd behouden blijft. De verbindingspool van Vendlo is klein, dus hoewel deze vragen de verbindingen verbinden, kan de openbare winkel er geen eigen krijgen. Terwijl ze rennen, laadt Bob de pagina van Vendlo opnieuw om te zien wat een echte shopper nu zou zien.

  8. Echte shoppers, buitengesloten

    Hetzelfde eindpunt dat Bob zojuist de hele catalogus heeft overhandigd, kan een gewone klant niet bedienen. De API-tester toont nog steeds zijn 200 met de volledige catalogus; de winkelpui ernaast laat zien wat alle anderen krijgen.

  9. Kennis check

  10. De waarschuwing komt binnen

    U bent eigenaar van de catalogus-API van Vendlo. Van de ene op de andere dag werd door de monitoring één lidaccount gemarkeerd waarvan de verzoeken elk de volledige catalogus retourneerden en een databaseverbinding negen seconden openhielden, waarbij de API-latentie op elk eindpunt toenam terwijl ze actief waren. Beveiligingsoperaties hebben u een e-mail gestuurd.

Dekking van beveiligingsframeworks

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