NIS2 & DORA in force. EU AI Act next — book a demo

Testy penetracyjne FastAPI: DoS, SSRF i bezpieczeństwo nowoczesnego API w Pythonie

FastAPI to najpopularniejszy framework Pythona do nowoczesnych API, wykorzystywany przez fintechy, startupy AI/ML i backendy mikroserwisowe. Najnowsze podatności obejmują CVE-2024-24762 (python-multipart DoS), CVE-2024-3651 (idna), CVE-2023-30798 (Starlette). Matproof Sentinel wykonuje ukierunkowane pentesty FastAPI z proof-of-exploit oraz raportami gotowymi do audytów DORA / NIS2 / ISO 27001 już od 149 EUR.

Rozpocznij darmowy skan
MW
Written by Malte Wagenbach
Founder of Matproof Security. Specialized in AI-driven penetration testing and EU compliance (DORA, NIS2, ISO 27001, SOC 2).
Last reviewed: May 17, 2026

Dlaczego FastAPI wymaga specjalistycznej wiedzy pentestowej

FastAPI rośnie szybko jako backend mikroserwisowy, dla API fintech (open banking PSD2) oraz serwowania ML (modele AI eksponowane jako API). Jego async + Pydantic charakter wprowadza unikalne wzorce bezpieczeństwa: automatyczna walidacja typów jest potężna, ale niekompletna; FastAPI dependency injection umożliwia nadużycie Depends() do eksfiltracji danych; JWT w parametrach path to częsty antywzorzec wyciekający tokeny do logów. Najnowsze CVE ilustrują ryzyka: CVE-2024-24762 (python-multipart) umożliwia DoS przez nieskończony parsing multipart. CVE-2024-3651 (idna) umożliwia DoS przez parsing zniekształconego Unicode. CVE-2023-30798 (Starlette, baza FastAPI) umożliwia path traversal w określonych wzorcach middleware.

  • CVE-2024-24762 (python-multipart): DoS przez nieskończony parsing multipart, dotyczy praktycznie wszystkich aplikacji FastAPI akceptujących uploady plików.
  • CVE-2024-3651 (idna < 3.7): DoS przez parsing zniekształconego Unicode w nazwach domen, dotyczy API FastAPI używających httpx/requests wewnętrznie do pobierania URL użytkownika.
  • CVE-2023-30798 (Starlette < 0.37.2): path traversal w określonych wzorcach static files middleware, exploit umożliwia ruch lateralny w systemie plików.
  • Luki walidacji Pydantic: typy są silne w stylu TypeScript, ale niekompletne, czyli nie walidują rozmiaru zagnieżdżonego payloadu, allow_extra_fields może stworzyć analog prototype pollution.
  • JWT w parametrach path: częsty antywzorzec (np. /api/users/{user_id}/orders/{jwt_token}), wycieka token do logów dostępu nginx/Cloudflare, historii przeglądarki, nagłówków referrer.
  • Async + race conditions: FastAPI jest async-first; race conditions w logice biznesowej (przetwarzanie płatności, sprawdzanie sald) są częste, jeśli nie są zarządzane przez transakcje bazodanowe.
  • Dla fintechów objętych DORA art. 24 z API płatniczymi udokumentowany pentest FastAPI jest wymagany dla zgodności.

Co konkretnie testujemy w FastAPI

  • Detekcja CVE: python-multipart (CVE-2024-24762), idna (CVE-2024-3651), Starlette (CVE-2023-30798), czyli weryfikacja wersji z patchami.
  • Walidacja Pydantic: test przypadków brzegowych (overflow numeryczny, długość stringa, głębokość zagnieżdżenia), konfiguracja allow_extra_fields, własne walidatory.
  • FastAPI dependency injection: audyt łańcucha Depends() pod kątem eskalacji uprawnień, security dependencies (auth, rate limit) aktywne na wszystkich wrażliwych endpointach.
  • OAuth2 / JWT: walidacja podpisu PyJWT, whitelisting algorytmów (brak 'none'), sprawdzanie wygaśnięcia, rotacja refresh token, JWT w parametrach path (antywzorzec).
  • OWASP API Top 10 (2023): API1 BOLA, API2 Broken Auth, API3 Property Level Auth, API4 Resource Consumption, API5 BFLA, API6 Server Side Request Forgery.
  • Async race conditions: krytyczne sekcje logiki biznesowej (płatności, aktualizacja salda), czyli test z równoległymi żądaniami w celu identyfikacji TOCTOU.
  • Bezpieczeństwo file upload: walidacja typu MIME po stronie serwera, path traversal w nazwie pliku, skan antywirusowy, limity rozmiaru uploadu.
  • GraphQL (jeśli Strawberry/Ariadne): query depth limiting, introspection wyłączone na produkcji, ataki batch query, DoS oparty o aliasy.
  • Background tasks (FastAPI BackgroundTasks, Celery): code injection, jeśli task akceptuje input użytkownika, race condition między taskiem a odpowiedzią.
  • Endpointy dokumentacji: /docs i /redoc eksponowane na produkcji (antywzorzec, wycieka pełny schemat), eksponowany /openapi.json.

Sample finding

High

JWT przekazywany w parametrze path, czyli wyciek do logów dostępu i nagłówków referrer

FastAPI eksponuje endpointy typu GET /api/auth/refresh/{refresh_token}, gdzie refresh_token jest przekazywany jako parametr path. Ten antywzorzec powoduje wyciek refresh token w: (1) logach dostępu nginx (domyślny format zawiera pełną ścieżkę); (2) logach WAF Cloudflare/AWS; (3) historii przeglądarki (jeśli wywoływany z SPA); (4) nagłówkach Referrer, jeśli API jest wywoływane z zewnętrznych linków. Test pobrał 1247 ważnych refresh tokenów z logów nginx Cloudflare z ostatnich 30 dni.

Fix: Działanie natychmiastowe (priorytet 1): refaktoryzacja endpointu, aby przyjmować refresh_token w body POST zamiast w parametrze path. Przykład poprawny:\n\n@app.post('/api/auth/refresh')\nasync def refresh_token(payload: RefreshTokenRequest):\n return await refresh_logic(payload.refresh_token)\n\nDziałania uzupełniające: rotacja wszystkich aktualnie aktywnych refresh tokenów (wymuszone ponowne uwierzytelnienie); audyt logów dostępu nginx/Cloudflare z ostatnich 90 dni w celu identyfikacji już wyciekniętych tokenów; konfiguracja log scrubbing na Cloudflare w celu redagowania parametrów path; implementacja token binding (powiązanie refresh token z odciskiem urządzenia lub IP); obniżenie TTL refresh token z 30 dni do 7 dni.

Reference: OWASP API4:2023 Unrestricted Resource Consumption · CWE-598 Use of GET Request Method With Sensitive Query Strings · GDPR Art. 32(1)(b) · RFC 6749 (OAuth 2.0) Section 10.3

Porównanie opcji pentestu FastAPI

Free scanMatproof SentinelTraditional consultancy
Automated scan engine✓ (3-min preview)✓ Full scan✗ Manual only
OWASP Top 10 coveragePartial✓ Complete✓ Complete
Proof-of-exploit evidence✓ Per finding✓ Per finding
Regulatory mapping (DORA/NIS2/ISO 27001)✓ Automated✓ Manual
Audit-ready PDF report✓ Instant✓ 2–4 weeks delivery
Continuous / recurring scans✓ Per deploy✗ Annual engagement
Time to first result~3 min~30 min full scan2–4 weeks
Price€0From €149€8,000–€25,000
Source code review (SAST)✓ On Growth plan✓ Scoped engagement
API testing (REST/GraphQL)✓ Automated✓ Manual

Pakiety pentestów FastAPI

Single Run
€149 one-time
  • 1 full pentest scan
  • AI-prioritized findings with CVSS 3.1
  • Proof-of-exploit per finding
  • Audit-ready PDF report
  • Regulatory mapping (DORA, NIS2, ISO 27001)
Buy single run
Recommended
Starter
€299 / month
  • Unlimited scans (up to 3 domains)
  • Continuous monitoring
  • CI/CD integration (GitHub, GitLab)
  • All regulatory mappings
  • Priority support
Start Starter
Growth
€799 / month
  • Unlimited scans + domains
  • Authenticated / White-Box testing
  • API & cloud infrastructure tests
  • Dedicated security account manager
  • 24h SLA response time
Contact for Growth

Najczęściej zadawane pytania o pentest FastAPI

Jakie specyficzne ryzyka dla fintechów adoptujących FastAPI?

Typowe ryzyka FastAPI dla fintechów: (1) API Open Banking PSD2 z błędną konfiguracją OAuth2 (parametr state niewalidowany, zbyt permisywna whitelist redirect_uri); (2) płatności SCT Inst z race condition między sprawdzeniem salda a obciążeniem (async race); (3) niewystarczający scope JWT, czyli token z read_all_transactions używany do zapytania o pojedynczą transakcję. Testujemy wszystkie te wzorce.

Czy testujecie również podobne frameworki jak Quart, Litestar, Sanic?

Tak. Quart (async Flask) i Litestar (fork FastAPI) mają podobne powierzchnie ataku. Sanic ma różnice (brak Pydantic domyślnie).

Jak obsługujecie testowanie endpointów chronionych OAuth2 / JWT?

Dostarczamy tokeny testowe (konto deweloperskie z różnymi scope). Testujemy: zamianę tokenów między różnymi użytkownikami (BOLA), eskalację scope, token replay, manipulację podpisem, algorithm confusion.

Jak długo trwa kompletny pentest FastAPI?

60-90 minut dla typowego API (20-100 endpointów). Dla API GraphQL dochodzi 30-60 min. Raport gotowy do audytu w ciągu 24 godzin.

Czy raport jest akceptowany dla audytów DORA art. 24 dla fintechów?

Tak. Raport techniczny z jawnym mapowaniem do DORA art. 24 (test intruzji), art. 25 (zarządzanie podatnościami).

Czy możemy zintegrować z naszym CI/CD (Poetry, pip-tools, Docker)?

Tak. Integracja GitHub Actions / GitLab CI na PR. Dla projektów zarządzanych przez Poetry: automatyczny skan przy zmianach poetry.lock. Dla Docker: integracja z docker scout do skanu podatności + Matproof Sentinel do testowania runtime.

Related

Go deeper — related blog articles

Zabezpiecz swoje FastAPI już teraz

Pierwszy skan w 3 minuty, kompletny pentest FastAPI w 60-90 minut. Raport gotowy do audytów DORA / NIS2 / ISO 27001 już od 149 EUR.

Rozpocznij darmowy skan