Unbegrenzter Ressourcenverbrauch

Unbegrenzter Ressourcenverbrauch

Eine Anfrage, eine Viertelmillion Datensätze, keine Obergrenze in Sicht.

Was ist Unbegrenzter Ressourcenverbrauch?

Manche Endpunkte begrenzen nicht, wie viel Arbeit eine einzelne Anfrage auslösen kann. Ein Listenendpunkt übernimmt die Seitengröße direkt aus der Anfrage und reicht sie ohne serverseitige Obergrenze an die Datenbank weiter. So kann ein Aufrufer die ganze Tabelle auf einmal anfordern. Sie untersuchen den vom Aufrufer gesetzten limit-Parameter, wiederholen die Anfrage mit einem übergroßen Wert und sehen, wie eine einzige Antwort den gesamten Katalog preisgibt und dabei die Datenbank blockiert. Die Lösung begrenzt die Seitengröße auf ein serverseitiges Maximum. Eine erneute Anfrage liefert weiterhin 200 OK, aber nur eine begrenzte Zahl von Datensätzen.

Was Sie lernen in Unbegrenzter Ressourcenverbrauch

Unbegrenzter Ressourcenverbrauch — Trainingsschritte

  1. Ein öffentlicher Inserate-Feed

    Vendlo ist eine App für einen Gebrauchtwaren-Marktplatz: Mitglieder stellen ein, was sie verkaufen wollen, und im Katalog stöbern darf jeder. Heute hat Bob es auf Vendlo abgesehen. Zwei Dinge will er: den kompletten Live-Katalog samt Preisen, um ihn an einen Wettbewerber weiterzuverkaufen, und einen billigen Weg, die API umzukippen, falls er sich dafür entscheidet. Er hat sich als ganz normales Mitglied registriert und öffnet den öffentlichen Inserate-Feed, um zu sehen, wie er lädt.

  2. Die Anfrage beobachten

    Das Raster, das Bob vor sich hat, ist aus Daten aufgebaut, die die App über die API geholt hat. Es zeigt 24 Inserate und den Hinweis, dass dahinter noch weit mehr stecken. Bob öffnet die Netzwerk-Tools des Browsers und lädt die Seite einmal neu, um den Aufruf mitzuschneiden, mit dem die App den Feed zusammenbaut.

  3. Die Seitengröße bestimmt der Aufrufer

    Das Neuladen ist mitgeschnitten, und die Anfrage liegt im Netzwerk-Panel. Bob liest nach, wie die App ihre Seite mit Inseraten angefordert hat.

  4. Eine Viertelmillion hinter der Seite

    Bob öffnet die Antwort des Endpunkts und liest nach, was sie über die Größe des Katalogs verrät.

  5. Alles auf einmal anfordern

    Bob baut denselben Aufruf im API Tester nach und ändert genau eine Sache: Statt einer Seite mit 24 fordert er 250.000 Inserate in einer einzigen Anfrage an. Wenn der Server das bedient, liefert ihm ein einziger Aufruf den kompletten Katalog.

  6. Eine Anfrage, der ganze Katalog

    Der Server hat genau das getan, worum er gebeten wurde. Was das gekostet hat, erzählt die Antwort.

  7. Der Shop geht in die Knie

    Neun Sekunden sind lang, um eine Datenbankverbindung zu halten. Bob setzt dieselbe Anfrage erneut ab, mehrere Kopien gleichzeitig, und jede arbeitet sich durch eine Viertelmillion Zeilen und belegt dabei ununterbrochen eine Verbindung. Vendlos Connection Pool ist klein: Solange diese Abfragen die Verbindungen binden, bekommt der öffentliche Shop keine eigene ab. Während sie laufen, lädt Bob Vendlos Seite neu, um zu sehen, was ein echter Käufer in diesem Moment zu sehen bekäme.

  8. Echte Käufer, ausgesperrt

    Derselbe Endpunkt, der Bob gerade den kompletten Katalog ausgehändigt hat, schafft es jetzt nicht mehr, einen gewöhnlichen Käufer zu bedienen. Im API Tester steht weiterhin sein 200 mit dem vollständigen Katalog; die Shop-Seite daneben zeigt, was alle anderen bekommen.

  9. Wissenscheck

  10. Der Alarm trifft ein

    Sie verantworten Vendlos Katalog-API. Über Nacht ist dem Monitoring ein einzelnes Mitgliedskonto aufgefallen, dessen Anfragen jeweils den kompletten Katalog zurückgegeben und neun Sekunden lang eine Datenbankverbindung offen gehalten haben — währenddessen schoss die Latenz über sämtliche Endpunkte der API hinweg nach oben. Security Operations hat Ihnen eine E-Mail geschickt.

Abdeckung der Sicherheits-Frameworks

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