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 limietparameter 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 de paginagrootte aan de serverzijde en koppelt deze aan cursorpaginering. 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

    Dat ene verzoek loopt nog steeds, doorzoekt een kwart miljoen rijen en houdt de hele tijd een databaseverbinding in stand. De verbindingspool van Vendlo is klein, dus hoewel die vraag een verbinding verbindt, kan de openbare winkel er geen eigen krijgen. Bob herlaadt Vendlo's pagina 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

    Je hebt zojuist gezien hoe één verzoek een kwart miljoen records ophaalde en de database stopte. Leg vast waarom.

  10. De waarschuwing komt binnen

    U bent eigenaar van de catalogus-API van Vendlo. Van de ene op de andere dag markeerde de monitoring één enkel verzoek dat de hele catalogus retourneerde en een databaseverbinding negen seconden open hield, waarbij de API-latentie op elk eindpunt toenam terwijl deze actief was. 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