Das Wichtigste in Kürze
- WAFs bieten trügerische Sicherheit: Eine Firewall filtert bekannte SQL-Injections, erkennt aber nicht, wenn Benutzer A durch Ändern einer ID plötzlich die Rechnungen von Benutzer B abrufen kann.
- BOLA (Broken Object Level Authorization): Die Nummer 1 der OWASP API Security Top 10 ist für über 40 % aller massiven Datenabflüsse verantwortlich.
- Token-Leaks im Frontend: Viele moderne Single Page Applications (React, Angular, Vue) enthalten fest verdrahtete API-Schlüssel oder Berechtigungs-Tokens im JavaScript-Code.
- Prüfansatz: Suisse Guard testet APIs mit realen Payload-Sequenzen auf Berechtigungsfehler, Mass Assignment und Ratenbegrenzungen.
1. Das Dilemma moderner API-Architekturen
Früher erzeugte der Webserver HTML und schickte fertige Seiten an den Browser. Heute liefert der Webserver nur noch eine statische JavaScript-Applikation aus. Alle geschäftsrelevanten Daten – Rechnungen, Personaldaten, Patientendossiers – werden im Hintergrund über JSON-APIs ausgetauscht.
Entwickler konzentrieren sich oft auf Funktionalität und verlassen sich darauf, dass der Endpunkt «im Code versteckt» sei. Für Angreifer ist eine API jedoch ein offenes Buch: Entwicklertools im Browser oder Proxy-Tools wie Burp Suite machen jeden einzelnen Aufruf transparent sichtbar.
2. Die gefährlichsten Schwachstellen nach OWASP API Top 10
1. API1:2023 – Broken Object Level Authorization (BOLA)
BOLA (früher IDOR) tritt auf, wenn ein Endpunkt eine Objekt-ID entgegennimmt, aber nicht prüft, ob der angemeldete Benutzer tatsächlich Eigentümer dieses Objekts ist.
# Abruf der eigenen Rechnung (erlaubt)
GET /api/v1/invoices/10042
Host: portal.schweiz-firma.ch
Authorization: Bearer [Token von User A]
# Manipulation der ID auf fremde Rechnung (BOLA-Schwachstelle!)
GET /api/v1/invoices/10043
Host: portal.schweiz-firma.ch
Authorization: Bearer [Token von User A]
Wenn der Server die Rechnung 10043 ohne Berechtigungsprüfung ausliefert, kann ein Angreifer mit einem einfachen Python-Skript alle Rechnungen des gesamten Unternehmens in wenigen Minuten herunterladen.
2. API2:2023 – Broken Authentication
Fehlerhafte JWT-Validierung (z. B. Akzeptanz von alg: "none" oder schwache Signaturschlüssel), fehlendes Token-Ablaufdatum oder ungeschützte Passwort-Reset-Endpunkte, die Brute-Force-Angriffe ohne Ratenbegrenzung zulassen.
3. API3:2023 – Broken Object Property Level Authorization (Mass Assignment)
Ein Benutzer aktualisiert sein Profil über PUT /api/v1/user/profile. Wenn der Endpunkt JSON-Attribute blind in die Datenbank übernimmt, kann der Angreifer zusätzliche Parameter unterschieben:
{
"name": "Max Muster",
"email": "max@muster.ch",
"is_admin": true,
"role": "SuperAdministrator"
}
4. API4:2023 – Unrestricted Resource Consumption (Fehlende Ratenbegrenzung)
Fehlt ein Rate-Limiting, können Angreifer Hunderttausende Anfragen pro Minute senden, um Daten abzusaugen, Schnittstellenkosten in die Höhe zu treiben oder das Backend lahmzulegen. Auf Nginx-Ebene lässt sich dies effizient konfigurieren:
# Nginx Rate Limiting für sensible API-Routen
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
location /api/ {
limit_req zone=api_limit burst=20 nodelay;
proxy_pass http://backend_cluster;
}
3. So prüft Suisse Guard Ihre Schnittstellen
Im Prüfbereich 7 der Bedrohungsanalyse nehmen wir Ihre REST-, SOAP- und GraphQL-Schnittstellen systematisch unter die Lupe: Wir testen Rollenkonzepte, Token-Gültigkeiten, CORS-Policies und Ratenbegrenzungen – damit Ihre geschäftskritischen Schnittstellen wasserdicht abgesichert sind.
Sind Ihre APIs und Schnittstellen wirklich sicher?
Lassen Sie Ihre Webservices nach OWASP API Security Top 10 auf Autorisierungslücken und Schwachstellen prüfen.