NIS2 & DORA gelten. EU AI Act folgt — Demo buchen

FastAPI Penetrationstest: Dependency-Injection-Sicherheit, JWT-Haertung und API-Schutz

FastAPI hat sich seit seiner Einfuehrung 2019 zum meistgenutzten Python-API-Framework entwickelt und ist die Grundlage vieler kritischer Microservices, KI-Backends und produktiver REST- sowie GraphQL-APIs. Seine Async-Architektur, tiefe Pydantic-Integration und das Dependency-Injection-System machen FastAPI sehr leistungsfahig -- eroeffnen aber auch spezifische Sicherheitsrisiken. CVE-2024-24762 (CVSS 7.5) betraf python-multipart und ermoeglichte Denial-of-Service durch praeparierte Multipart-Anfragen. Starlette CVE-2023-30798 demonstrierte Request-Smuggling-Risiken in der zugrundeliegenden ASGI-Schicht.

FastAPI Pentest starten
MW
Geschrieben von Malte Wagenbach
Gründer von Matproof Security. Spezialisiert auf KI-gestützte Penetrationstests und EU-Compliance (DORA, NIS2, BSI Grundschutz, ISO 27001).
Zuletzt überprüft: 17. Mai 2026

Warum FastAPI-Anwendungen spezialisierte Sicherheitspruefungen benoetigen

FastAPI-Entwickler konzentrieren sich oft auf die hervorragende Developer-Experience -- automatische OpenAPI-Dokumentation, Pydantic-Validierung, Async-Performance -- aber die Sicherheitsimplikationen der Architekturentscheidungen werden haeufig unterbewertet. Das Dependency-Injection-System, eines von FastAPIs Kernfeatures, ist maechtig aber komplex: Falsch konfigurierte Dependencies koennen Authentifizierungspruefungen fuer ganze Router-Gruppen deaktivieren. Pydantics Validierung ist stark, aber 'model_config = ConfigDict(extra=allow)' oder zu permissive Typen eroeffnen Mass-Assignment-aehnliche Angriffe. JWT-Implementierungen in FastAPI-Projekten folgen haeufig nicht den Security-Best-Practices (Algorithm-Confusion, unsichere Schluessel). Hinzu kommen die Transitivabhaengigkeiten von Starlette, Uvicorn und ASGI-Middleware, die eigene CVE-Historien haben.

  • CVE-2024-24762 (python-multipart 0.0.7 DoS): FastAPI-Anwendungen, die Datei-Uploads oder Form-Daten verarbeiten, nutzen python-multipart als Abhaengigkeit. Diese Schwachstelle (CVSS 7.5) erlaubt es, durch praeparierte Multipart-Anfragen den Server in eine Endlosschleife zu zwingen und so einen Denial-of-Service auszuloesen. Betrifft python-multipart vor Version 0.0.18.
  • CVE-2024-3651 (idna Bibliothek ReDoS): Die idna-Bibliothek, eine haeufige Transitivabhaengigkeit in FastAPI-Projekten ueber httpx oder andere HTTP-Clients, war anfaellig fuer Regular-Expression-Denial-of-Service bei bestimmten Domainnamen-Eingaben. Betrifft idna < 3.7.
  • Starlette CVE-2023-30798 (Denial-of-Service im MultiPartParser): Starlette, die ASGI-Bibliothek unter FastAPI, enthielt eine DoS-Schwachstelle durch unkontrollierte Ressourcennutzung beim Parsen von Multipart-Daten mit spezifischen Boundary-Mustern. Betrifft Starlette vor 0.27.0.
  • JWT-Algorithm-Confusion-Angriffe: Viele FastAPI-JWT-Implementierungen verwenden die 'python-jose'- oder 'PyJWT'-Bibliothek ohne explizite Algorithmus-Einschraenkung. Ein Angreifer kann einen RS256-signierten Token modifizieren und mit dem oeffentlichen Schluessel als HMAC-Geheimnis mit HS256 neu signieren ('Algorithm Confusion Attack'), was zu unauthorisiertem Zugriff fuehrt.
  • Dependency-Injection-Bypass und Auth-Deaktivierung: FastAPIs Depends()-System kann fuer ganze Router-Gruppen konfiguriert werden. Fehler in der Router-Hierarchie, falsch platzierte Abhangigkeiten oder vergessene Depends()-Dekoratoren fuer neue Endpunkte koennen dazu fuehren, dass ganze API-Bereiche ohne Authentifizierung zugaenglich sind.
  • Pydantic-Schema-Permissivitaet und Mass-Assignment: Pydantic-Modelle mit 'extra=allow' (oder dem veralteten 'class Config: extra = Extra.allow') akzeptieren beliebige Felder im Request-Body. Wenn ein Datenbankmodell direkt aus dem Pydantic-Schema erstellt wird (**model.dict()), koennen Angreifer interne Felder setzen -- aehnlich wie Mass-Assignment in ORM-Frameworks.
  • Exponierte OpenAPI-Dokumentation in Produktion: FastAPI generiert automatisch /docs (Swagger UI) und /redoc-Endpunkte. Diese exposieren vollstaendige API-Schema, Authentifizierungsmethoden, Endpunkt-Details und haufig auch Test-Credentials. In Produktionsumgebungen sollte die OpenAPI-Dokumentation deaktiviert oder durch Authentifizierung geschuetzt werden.

Was beim FastAPI Penetrationstest geprueft wird

  • Dependency-Injection-Analyse: Vollstaendige Kartierung aller Depends()-Abhaengigkeiten und ihrer Sicherheitsimplikationen; Test ob Authentifizierungspruefungen konsistent fuer alle Router und Endpunkte konfiguriert sind; Identifikation oeffentlich erreichbarer Endpunkte ohne Autorisierung.
  • JWT-Implementierungspruefung: Test auf Algorithm-Confusion (RS256-zu-HS256-Switch); Pruefung der Schluessel-Staerke und -Rotation; 'none'-Algorithmus-Test; Token-Expiration-Handling; Refresh-Token-Sicherheit und Revocation.
  • Pydantic-Schema-Sicherheit: Analyse aller Request-Modelle auf 'extra=allow'-Konfiguration; Test auf Mass-Assignment durch privilegierte Felder im Request-Body; Pruefung ob Response-Modelle keine sensiblen internen Felder exponieren.
  • Dependency-Audit (python-multipart, Starlette, Pydantic, PyJWT): Scan aller requirements.txt / pyproject.toml-Abhaengigkeiten gegen NVD und PyPA Advisory Database; Identifikation von CVEs in der verwendeten Version (CVE-2024-24762, CVE-2024-3651, CVE-2023-30798).
  • OWASP API Top 10 (2023) Vollabdeckung: API1 Broken Object Level Authorization (BOLA/IDOR), API2 Broken Authentication, API3 Broken Property Level Authorization, API4 Unrestricted Resource Consumption (DoS), API5 Broken Function Level Authorization.
  • Input-Validierung und Injection-Tests: Test ob Pydantic-Validierung alle Eingaben korrekt einschraenkt; SQL-Injection in SQLAlchemy-Raw-Queries; Command-Injection in Subprocess-Aufrufen; Path-Traversal bei Datei-Operationen.
  • Rate-Limiting und DoS-Resistance: Pruefung ob alle Endpunkte gegen unbegrenzte Anfragen geschuetzt sind; Multipart-Upload-Groessen-Limits; Speichererschoepfung durch grosse Request-Bodies; Slowloris-Angriffe gegen ASGI-Server.
  • CORS-Konfiguration und Sicherheits-Header: Pruefung der CORSMiddleware-Konfiguration auf uebermaessig permissive Origins ('allow_origins=[*]'); Sicherheits-Header-Analyse (HSTS, X-Content-Type-Options, CSP).
  • Background-Tasks und Async-Sicherheit: Sicherheitsimplikationen von BackgroundTasks; Race-Conditions in Async-Endpunkten; Deadlock-Risiken durch Async-Context-Manager-Missbrauch.
  • API-Key-Management und Secret-Handling: Pruefung ob API-Schluessel korrekt als Bearer-Tokens oder X-API-Key-Header implementiert sind; Secret-Exposition via Logs, Fehlerseiten oder OpenAPI-Dokumentation.

Beispiel-Befund

Hoch

JWT Algorithm Confusion -- RS256-Token mit HS256 und oeffentlichem Schluessel gefaelscht

Die FastAPI-Anwendung verwendet PyJWT zur Token-Validierung ohne Einschraenkung des erlaubten Algorithmus: 'jwt.decode(token, PUBLIC_KEY)'. Der oeffentliche RSA-Schluessel ist im /auth/public-key-Endpunkt abrufbar. Durch Konvertierung des oeffentlichen Schluessels in einen HMAC-Schluessel und Erstellung eines HS256-signierten JWT mit 'role: admin' war es moeglich, einen gueltigen Admin-Token zu faelschen. Alle Admin-Endpunkte (/api/v1/admin/*) waren zugaenglich.

Behebung: Explizite Algorithmus-Einschraenkung bei JWT-Validierung: jwt.decode(token, PUBLIC_KEY, algorithms=['RS256']). Niemals eine Liste mit mehreren Algorithmen erlauben, ausser dies ist absolut notwendig und sorgfaeltig konfiguriert. Public-Key-Endpunkt aus Produktion entfernen oder durch Authentifizierung schuetzen. JWT-Bibliothek auf aktuelle Version aktualisieren (python-jose 3.3.0+ oder PyJWT 2.8.0+).

Referenz: CVE-2024-24762 (python-multipart DoS) · CVE-2024-3651 (idna ReDoS) · OWASP API2:2023 Broken Authentication · CWE-327 Use of a Broken or Risky Cryptographic Algorithm · RFC 8725 JWT Best Practices

FastAPI Pentest: Optionen im Vergleich

Kostenloser ScanMatproof SentinelKlassische Beratung
Automatisierte Scan-Engine✓ (3-min Vorschau)✓ Vollständiger Scan✗ Nur manuell
OWASP Top 10 AbdeckungPartiell✓ Vollständig✓ Vollständig
Proof-of-Exploit-Evidenz✓ Pro Befund✓ Pro Befund
Regulatorisches Mapping (DORA/NIS2/ISO 27001)✓ Automatisiert✓ Manuell
Audit-tauglicher PDF-Bericht✓ Sofort✓ 2–4 Wochen Lieferzeit
Kontinuierliche / wiederkehrende Scans✓ Pro Deploy✗ Jährliches Engagement
Zeit bis zum ersten Ergebnis~3 Min.~30 Min. Vollscan2–4 Wochen
Preis€0Ab €149€8.000–€25.000
Quellcode-Review (SAST)✓ Im Growth-Plan✓ Im Scope
API-Testing (REST/GraphQL)✓ Automatisiert✓ Manuell

FastAPI Pentest Pakete

Einzel-Scan
€149 einmalig
  • 1 vollständiger Pentest-Scan
  • KI-priorisierte Befunde mit CVSS 3.1
  • Proof-of-Exploit für jedes Finding
  • PDF-Bericht (audit-tauglich)
  • Regulatorisches Mapping (DORA, NIS2, BSI)
Einzel-Scan kaufen
Empfohlen
Starter
€299 / Monat
  • Unbegrenzte Scans (bis 3 Domains)
  • Kontinuierliches Monitoring
  • CI/CD-Integration (GitHub, GitLab)
  • Alle Regulierungs-Mappings
  • Prioritäts-Support
Starter starten
Growth
€799 / Monat
  • Unbegrenzte Scans + Domains
  • White-Box / Authenticated Testing
  • API- & Cloud-Infrastruktur-Tests
  • Dedizierter Security-Account-Manager
  • SLA 24h Reaktionszeit
Growth anfragen

Haeufige Fragen zum FastAPI Penetrationstest

Wie schutze ich FastAPI-Endpunkte korrekt mit JWT ohne Algorithm-Confusion-Risiko?

Die wichtigste Massnahme ist die explizite Algorithmus-Einschraenkung: Bei PyJWT 'jwt.decode(token, key, algorithms=["RS256"])' verwenden -- immer eine konkrete Liste, niemals 'algorithms=None'. Asymmetrische Algorithmen (RS256, ES256) fuer produktive APIs bevorzugen. Nie den oeffentlichen Schluessel oeffentlich exponieren. JWT-Secrets min. 256 Bit bei symmetrischen Algorithmen (HS256). Token-Expiration kurz halten (15-60 Minuten fuer Access-Tokens, Refresh-Token-Rotation implementieren).

Welche FastAPI-Dependency-Injection-Muster sind sicherheitskritisch?

Kritische Muster: (1) Depends()-auf-Router-Ebene ohne Pruefung ob neue Endpunkte vom Router erben; (2) Optional-Dependencies ('user: User | None = Depends(get_current_user)') die keine Autorisierung erzwingen; (3) Conditional-Auth ('if settings.auth_enabled') in Dependencies -- diese Bedingung ist haefig in Tests deaktiviert und versehentlich auch in Produktion; (4) Gemeinsame Dependencies fuer verschiedene Benutzerrollen ohne explizite Rollenpruefung.

Wie verhindere ich DoS-Angriffe via Multipart-Upload in FastAPI?

Nach CVE-2024-24762: Sofortiges Update auf python-multipart >= 0.0.18. Zusaetzliche Absicherung: (1) Upload-Groesse explizit begrenzen (Starlette-Middleware fuer Max-Body-Size); (2) Content-Type-Validierung vor dem Parsen; (3) Rate-Limiting fuer Upload-Endpunkte; (4) Asynchrones Verarbeiten grosser Uploads mit Streaming statt vollstaendiger In-Memory-Verarbeitung; (5) Uvicorn- oder Gunicorn-Timeouts konfigurieren.

Sollte die automatische OpenAPI-Dokumentation (/docs) in FastAPI-Produktionsumgebungen deaktiviert werden?

Fuer die meisten Produktionsumgebungen: Ja. Die OpenAPI-Dokumentation exponiert vollstaendige API-Schema, Authentifizierungsmethoden und kann ein Reconnaissance-Tool fuer Angreifer sein. Deaktivierung: FastAPI(docs_url=None, redoc_url=None, openapi_url=None). Alternative: Dokumentation hinter Authentifizierung schutzen oder auf internen Pfaden zuganglich machen. Wenn die Dokumentation fuer Partner-Integration benoetigt wird: IP-Whitelist oder API-Key-Schutz.

Was ist der Unterschied zwischen Pydantic v1 und v2 in Bezug auf Sicherheit?

Pydantic v2 (ab 2.0) hat deutliche Sicherheitsverbesserungen: (1) 'extra=allow' ist nun 'model_config = ConfigDict(extra="allow")' -- expliziter und leichter zu finden; (2) Strikte Mode ('strict=True') erzwingt keine Typkonvertierungen; (3) Verbesserte Validierung fuer URLs, E-Mail-Adressen und andere spezielle Typen. Empfehlung: Migration auf Pydantic v2; alle Modelle auf 'extra="forbid"' als Standard setzen und nur explizit 'extra="allow"' verwenden wo notwendig.

Wie sichert man FastAPI-Anwendungen in Kubernetes ab?

Kubernetes-spezifische Massnahmen: (1) Secrets als Kubernetes Secrets verwalten, nicht als Environment-Variablen in ConfigMaps; (2) Network Policies fuer Mikrosegmentierung zwischen FastAPI-Services; (3) ReadOnly-Root-Filesystem und Non-Root-User in Pod-Specs; (4) Resource-Limits (CPU, Memory) pro Pod um DoS-Auswirkungen zu begrenzen; (5) mTLS zwischen Services (Istio oder Linkerd); (6) Regular-Image-CVE-Scans der Python-Base-Images.

Welche OWASP API Top 10 (2023) Schwachstellen sind bei FastAPI am haeufigsten?

Die haeufigsten OWASP API Schwachstellen in FastAPI-Projekten: (1) API1 BOLA (Broken Object Level Authorization) -- fehlende Pruefung ob der aktuelle Nutzer auf das angeforderte Objekt zugreifen darf; (2) API2 Broken Authentication -- JWT-Konfigurationsfehler, schwache Secrets; (3) API3 Broken Property Level Authorization -- Pydantic-Mass-Assignment durch extra=allow; (4) API4 Unrestricted Resource Consumption -- fehlende Rate-Limits und Upload-Size-Grenzen; (5) API8 Security Misconfiguration -- exponierte Docs, CORS-Wildcard.

Wie oft sollte eine produktive FastAPI-API einem Penetrationstest unterzogen werden?

Empfehlung: Vollstaendiger Pentest bei jedem Major-Release oder substantiellen API-Aenderungen, mindestens jaehrlich. Kontinuierliches Monitoring via Matproof Sentinel fuer sofortige CVE-Alerts bei Python-Abhaengigkeiten (python-multipart, Starlette, Pydantic, uvicorn). Besonders wichtig: Tests nach Aenderungen am Authentifizierungssystem oder bei der Integration neuer Drittanbieter-Dienste.

Verwandte Themen

Vertiefen — verwandte Artikel aus unserem Blog

FastAPI Penetrationstest jetzt starten

Identifizieren Sie Dependency-Injection-Luecken, JWT-Konfigurationsfehler und Python-CVEs in Ihrer FastAPI-Anwendung. Audit-bereiter Bericht auf Deutsch, keine Installation erforderlich.

FastAPI Pentest starten