Penetratietest FastAPI: DoS, SSRF en Moderne Python API Beveiliging
FastAPI is het meest populaire Python framework voor moderne APIs, geadopteerd door Nederlandse fintechs, AI/ML startups en microservices backends. Recente kwetsbaarheden zijn CVE-2024-24762 (python-multipart DoS), CVE-2024-3651 (idna), CVE-2023-30798 (Starlette). Matproof Sentinel voert gerichte FastAPI pentests uit met proof-of-exploit en audit-klaar rapport DORA / NIS2 / ISO 27001 vanaf €149.
Waarom FastAPI specifieke pentest vereist
FastAPI is snel gegroeid in Nederland voor microservices backends, fintech APIs (open banking PSD2), en ML serving (AI modellen blootgesteld als API). Zijn async + Pydantic natuur introduceert unieke beveiligingspatronen: automatische type validatie is krachtig maar onvolledig, FastAPI dependency injection staat misbruik van Depends() voor data exfiltration toe, JWT in path parameters is veel voorkomende anti-pattern die token in logs lekt. Recente CVE's illustreren risico's: CVE-2024-24762 maakt DoS mogelijk via oneindige multipart parsing. CVE-2024-3651 maakt DoS via verkeerd geformatteerde Unicode mogelijk. CVE-2023-30798 staat path traversal toe in bepaalde middleware patronen. Voor Nederlandse fintechs onder DORA Art. 24 is gedocumenteerde FastAPI pentest standaard compliance element.
- CVE-2024-24762 (python-multipart): DoS via oneindige multipart parsing — treft virtually alle FastAPI applicaties die file upload accepteren.
- CVE-2024-3651 (idna < 3.7): DoS via verkeerd geformatteerde Unicode in domeinnamen — treft FastAPI APIs die httpx/requests intern gebruiken.
- CVE-2023-30798 (Starlette < 0.37.2): path traversal in bepaalde static files middleware patronen.
- Pydantic validation gaps: TypeScript-style sterk maar onvolledig — valideert niet nested payload size, allow_extra_fields kan prototype pollution analog creëren.
- JWT in path parameters: anti-pattern (bijv. /api/users/{user_id}/orders/{jwt_token}) — token leak in nginx/Cloudflare access logs, browser history, referrer headers.
- Async + race conditions: FastAPI is async-first; race conditions in business logic (payment processing, balance checks) zijn vaak voorkomend als niet beheerd met database transactions.
- Voor Nederlandse fintechs onder DORA Art. 24 met betalings-APIs is gedocumenteerde FastAPI pentest vereist voor DNB compliance.
Wat we specifiek testen in een FastAPI
- CVE detection: python-multipart (CVE-2024-24762), idna (CVE-2024-3651), Starlette (CVE-2023-30798) — verificatie van gepatchte versies.
- Pydantic validation: test boundary cases (numeric overflow, string length, nested depth), allow_extra_fields configuratie, custom validators.
- FastAPI dependency injection: Depends() chain audit voor privilege escalation, security dependencies (auth, rate limit) actief op alle gevoelige endpoints.
- OAuth2 / JWT: PyJWT signature validatie, algorithm whitelisting (geen « none »), expiration check, refresh token rotation, JWT in path parameters (anti-pattern).
- OWASP API Top 10 (2023): API1 BOLA, API2 Broken Auth, API3 Property Level Auth, API4 Resource Consumption, API5 BFLA, API6 SSRF.
- Async race conditions: critical sections in business logic (payment, balance update) — test met concurrent requests om TOCTOU te identificeren.
- File upload security: server-side MIME type validatie, path traversal in filename, virus scan, upload size limits.
- GraphQL (indien Strawberry/Ariadne): query depth limiting, introspection in productie uitgeschakeld, batch query attacks.
- Background tasks (FastAPI BackgroundTasks, Celery): code injection als task user input accepteert, race condition tussen task en response.
- Documentation endpoints: /docs en /redoc in productie blootgesteld (anti-pattern, lekt volledig schema), /openapi.json blootgesteld.
Voorbeeldbevinding
JWT verzonden in path parameter — leak in access logs en referrer headers
De FastAPI API exposeert endpoint van het type GET /api/auth/refresh/{refresh_token} waar refresh_token als path parameter wordt doorgegeven. Deze anti-pattern veroorzaakt token leak in: (1) nginx access logs (default format bevat volledig path); (2) Cloudflare/AWS WAF logs; (3) browser history (indien aangeroepen vanuit SPA); (4) Referrer headers als API wordt aangeroepen vanuit externe links. De test retrieveerde 1.247 geldige refresh tokens uit Cloudflare nginx logs van laatste 30 dagen. Geldige refresh tokens staan toe access token te verkrijgen en gebruikers te impersoneren voor hun lifetime (30 dagen).
Oplossing: Onmiddellijke actie (prioriteit 1): refactor endpoint om refresh_token in POST body te accepteren in plaats van path parameter:\n\n@app.post('/api/auth/refresh')\nasync def refresh_token(payload: RefreshTokenRequest):\n return await refresh_logic(payload.refresh_token)\n\nAanvullende acties: roteer alle huidige active refresh tokens (force re-authenticatie van users); audit nginx/Cloudflare access logs van laatste 90 dagen om reeds gelekte tokens te identificeren; configureer log scrubbing op Cloudflare om path parameters te redacteren; verlaag refresh token TTL van 30 dagen naar 7 dagen.
Referentie: OWASP API4:2023 · CWE-598 · AVG Art. 32(1)(b) · RFC 6749 Section 10.3
Pentest FastAPI: opties vergeleken
| — | Gratis scan | Matproof Sentinel | Traditionele consultancy |
|---|---|---|---|
| Geautomatiseerde scan-engine | ✓ (3-min preview) | ✓ Volledige scan | ✗ Alleen handmatig |
| OWASP Top 10 dekking | Gedeeltelijk | ✓ Volledig | ✓ Volledig |
| Proof-of-exploit bewijs | ✗ | ✓ Per bevinding | ✓ Per bevinding |
| Regulatorische mapping (DORA/NIS2/ISO 27001) | ✗ | ✓ Geautomatiseerd | ✓ Handmatig |
| Audit-geschikt PDF-rapport | ✗ | ✓ Direct | ✓ 2–4 weken levertijd |
| Continue / terugkerende scans | ✗ | ✓ Per deploy | ✗ Jaarlijkse opdracht |
| Tijd tot eerste resultaat | ~3 min | ~30 min volledige scan | 2–4 weken |
| Prijs | €0 | Vanaf €149 | €8.000–€25.000 |
| Broncode-review (SAST) | ✗ | ✓ Growth-plan | ✓ In scope |
| API-tests (REST/GraphQL) | ✗ | ✓ Geautomatiseerd | ✓ Handmatig |
Pentest FastAPI pakketten
- 1 volledige penetratietest-scan
- AI-geprioriteerde bevindingen met CVSS 3.1
- Proof-of-exploit per bevinding
- PDF-rapport (geschikt voor audit)
- Regulatorische mapping (DORA, NIS2, ISO 27001)
- Onbeperkt scannen (tot 3 domeinen)
- Continue monitoring
- CI/CD-integratie (GitHub, GitLab)
- Alle regulatorische mappings
- Prioriteitsondersteuning
- Onbeperkt scannen + domeinen
- Geauthenticeerde / White-Box tests
- API- en cloud-infrastructuurtests
- Dedicated security account manager
- SLA responstijd 24u
Veelgestelde vragen over FastAPI pentest
FastAPI wordt steeds meer gekozen door Nederlandse fintechs. Welke specifieke risico's?
Fintech FastAPI typische risico's: (1) Open Banking PSD2 APIs met OAuth2 misconfiguration; (2) iDEAL/SEPA payments met race condition tussen balance check en debit (async race); (3) JWT scope onvoldoende — token met read_all_transactions gebruikt voor single transaction query. Testen al deze patronen.
Testen jullie ook frameworks zoals Quart, Litestar, Sanic?
Ja. Quart (async Flask) en Litestar hebben gelijkaardige aanvalsoppervlakken als FastAPI.
Hoe beheert u testing van endpoints beschermd door OAuth2/JWT?
U levert test tokens. Wij testen: token swap tussen gebruikers (BOLA), scope escalation, token replay, signature manipulation, algorithm confusion.
Hoe lang duurt een volledige FastAPI pentest?
60-90 minuten voor typische API. Audit-klaar rapport binnen 24 uur.
Is het rapport geaccepteerd voor DORA Art. 24 audits van Nederlandse fintechs?
Ja. Technisch rapport met expliciete mapping DORA Art. 24/25 en voor fintechs onder DNB toezicht: DNB Goede Praktijk Informatiebeveiliging 2024.
Kunnen we integreren met onze Poetry/Docker CI/CD?
Ja. GitHub Actions/GitLab CI integratie. Voor Poetry projects: automatische scan op poetry.lock changes. Voor Docker: integratie met docker scout voor vulnerability scan + Matproof Sentinel voor runtime testing.
Gerelateerde onderwerpen
Meer lezen — gerelateerde blogartikelen
Bescherm uw FastAPI nu
Eerste scan in 3 minuten, volledige FastAPI pentest in 60-90 minuten. Audit-klaar rapport DORA / NIS2 / ISO 27001 vanaf €149.
Start gratis scan