NIS2 e DORA in vigore. EU AI Act in arrivo — prenota una demo

Penetration Test FastAPI: DoS, SSRF e Sicurezza API Python Moderna

FastAPI è il framework Python più popolare per API moderne, adottato da fintech italiani, startup AI/ML, e backend microservizi. Le vulnerabilità recenti includono CVE-2024-24762 (python-multipart DoS), CVE-2024-3651 (idna), CVE-2023-30798 (Starlette). Matproof Sentinel esegue pentest FastAPI mirati con prova di sfruttamento e report audit-ready DORA / NIS2 / ISO 27001 da 149 €.

Avvia scan gratuito
MW
Scritto da Malte Wagenbach
Fondatore di Matproof Security. Specializzato in penetration test guidati da IA e conformità UE (DORA, NIS2, Banca d'Italia, ISO 27001).
Ultima revisione: 17 maggio 2026

Perché FastAPI richiede pentest specifico

FastAPI è cresciuto rapidamente in Italia per backend microservizi, fintech APIs (open banking PSD2 italiani), e ML serving (modelli AI esposti come API). La sua natura async + Pydantic introduce pattern di sicurezza unici: validazione automatica del tipo è potente ma incompleta (es. non valida la dimensione di payload nested), dependency injection di FastAPI permette di abusare di Depends() per data exfiltration, JWT in path parameters è anti-pattern comune che leak token in logs. Le CVE recenti illustrano i rischi: CVE-2024-24762 (python-multipart) permette DoS via multipart parsing infinito, affettando praticamente tutte le applicazioni FastAPI che accettano file upload. CVE-2024-3651 (idna) abilita DoS via parsing Unicode malformati. CVE-2023-30798 (Starlette, base di FastAPI) permette path traversal in certi pattern di middleware. Per fintech italiani sotto DORA Art. 24 con API che processano dati di pagamento, un pentest FastAPI documentato è elemento standard di compliance.

  • CVE-2024-24762 (python-multipart): DoS via parsing multipart infinito — affligge virtualmente tutte le applicazioni FastAPI che accettano file upload (utility comune in API moderni).
  • CVE-2024-3651 (idna < 3.7): DoS via parsing Unicode malformati nei nomi di dominio — colpisce API FastAPI che usano httpx/requests internamente per fetch URL utente.
  • CVE-2023-30798 (Starlette < 0.37.2): path traversal in certi pattern di static files middleware — exploit lateral movement nel filesystem.
  • Pydantic validation gaps: tipo TypeScript-style strong ma incompleto — non valida nested payload size, allow_extra_fields può creare prototype pollution analog.
  • JWT in path parameters: anti-pattern comune (es. /api/users/{user_id}/orders/{jwt_token}) — leak token in nginx/Cloudflare access logs, browser history, referrer headers.
  • Async + race conditions: FastAPI è async-first; race conditions in business logic (es. payment processing, balance checks) sono comuni se non gestite con database transactions.
  • Per fintech italiani sotto DORA Art. 24 con APIs di pagamento (Bancomat Pay, SCT Inst), un pentest FastAPI documentato è richiesto per Banca d'Italia compliance.

Cosa testiamo specificamente in un'API FastAPI

  • CVE detection: python-multipart (CVE-2024-24762), idna (CVE-2024-3651), Starlette (CVE-2023-30798) — verifica versioni patched.
  • Pydantic validation: test boundary cases (numeric overflow, string length, nested depth), allow_extra_fields configuration, custom validators.
  • FastAPI dependency injection: Depends() chain audit per privilege escalation, security dependencies (auth, rate limit) attivi su tutti gli endpoint sensibili.
  • OAuth2 / JWT: PyJWT signature validation, algorithm whitelisting (no « 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 Server Side Request Forgery.
  • Async race conditions: business logic critical sections (payment, balance update) — test con concurrent requests per identificare TOCTOU.
  • File upload security: validation MIME type lato server, path traversal in filename, virus scan, upload size limits applicati.
  • GraphQL (se Strawberry/Ariadne): query depth limiting, introspection disabilitata in produzione, batch query attacks, alias-based DoS.
  • Background tasks (FastAPI BackgroundTasks, Celery): code injection se task accept user input, race condition tra task e response.
  • Documentation endpoints: /docs e /redoc esposti in produzione (anti-pattern, leak schema completo), /openapi.json esposto.

Esempio di finding

Alto

JWT trasmesso in path parameter — leak in access logs e referrer headers

L'API FastAPI espone endpoint del tipo GET /api/auth/refresh/{refresh_token} dove refresh_token è passato come path parameter. Questo anti-pattern causa il leak del refresh token in: (1) nginx access logs (formato default include il path completo); (2) Cloudflare/AWS WAF logs; (3) browser history (se chiamato da SPA); (4) Referrer headers se l'API è chiamata da link esterni. Il test ha permesso il recupero di 1.247 refresh token validi dai log Cloudflare nginx degli ultimi 30 giorni. Refresh token validi permettono di ottenere access token e impersonare gli utenti per il loro lifetime (configurato a 30 giorni).

Correzione: Azione immediata (priorità 1): refactor del endpoint per accettare refresh_token nel body POST invece che path parameter. Esempio corretto:\n\n@app.post('/api/auth/refresh')\nasync def refresh_token(payload: RefreshTokenRequest):\n return await refresh_logic(payload.refresh_token)\n\nAzioni complementari: ruotare tutti i refresh token attualmente attivi (force re-authentication degli utenti); audit nginx/Cloudflare access logs degli ultimi 90 giorni per identificare token già leakati; configurare log scrubbing su Cloudflare per redact dei path parameters; implementare token binding (associare refresh token a device fingerprint o IP); abbassare il refresh token TTL da 30 giorni a 7 giorni per limitare la finestra di sfruttamento.

Riferimento: 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

Pentest FastAPI: opzioni a confronto

Scan gratuitoMatproof SentinelConsulenza tradizionale
Motore di scansione automatizzato✓ (anteprima 3 min)✓ Scansione completa✗ Solo manuale
Copertura OWASP Top 10Parziale✓ Completa✓ Completa
Prova di exploit✓ Per finding✓ Per finding
Mapping normativo (DORA/NIS2/ISO 27001)✓ Automatizzato✓ Manuale
Report PDF pronto per l'audit✓ Immediato✓ Consegna 2–4 settimane
Scansioni continue / ricorrenti✓ Per deploy✗ Impegno annuale
Tempo al primo risultato~3 min~30 min scansione completa2–4 settimane
Prezzo€0Da €149€8.000–€25.000
Revisione codice sorgente (SAST)✓ Piano Growth✓ In scope
Test API (REST/GraphQL)✓ Automatizzato✓ Manuale

Pacchetti pentest FastAPI

Scansione singola
€149 pagamento unico
  • 1 scansione pentest completa
  • Risultati prioritizzati da AI con CVSS 3.1
  • Proof-of-exploit per ogni finding
  • Report PDF (pronto per l'audit)
  • Mapping normativo (DORA, NIS2, ISO 27001)
Acquista scansione singola
Consigliato
Starter
€299 / mese
  • Scansioni illimitate (fino a 3 domini)
  • Monitoraggio continuo
  • Integrazione CI/CD (GitHub, GitLab)
  • Tutti i mapping normativi
  • Supporto prioritario
Avvia Starter
Growth
€799 / mese
  • Scansioni + domini illimitati
  • Test autenticati / White-Box
  • Test API e infrastruttura cloud
  • Account manager dedicato
  • SLA risposta 24h
Contatta per Growth

Domande frequenti sul pentest FastAPI

FastAPI viene scelto sempre più dai fintech italiani. Quali rischi specifici?

Fintech FastAPI typical risks: (1) Open Banking PSD2 APIs con OAuth2 misconfiguration (state parameter non validato, redirect_uri whitelist permissiva); (2) Pagamenti SCT Inst con race condition tra balance check e debit (async race); (3) JWT scope inadequato — token con read_all_transactions usato per single transaction query. Testiamo tutti questi pattern.

Testate anche framework simili come Quart, Litestar, Sanic?

Sì. Quart (async Flask) e Litestar (FastAPI fork) hanno superfici di attacco simili. Sanic ha differenze (no Pydantic by default). Adattiamo i test al framework specifico.

Come gestite il test di endpoint protetti da OAuth2 / JWT?

Forniamo token di test (development account con vari scope). Testiamo: token swap tra utenti diversi (BOLA), scope escalation, token replay, signature manipulation, algorithm confusion. Per OAuth2 flow completo testiamo PKCE, state, redirect_uri validation.

Quanto tempo richiede un pentest FastAPI completo?

60-90 minuti per API tipica (20-100 endpoints). Include CVE detection, OWASP API Top 10, Pydantic validation, OAuth2/JWT, race conditions. Per API GraphQL aggiunge 30-60 min. Report audit-ready in 24 ore.

Il report è accettato per audit DORA Art. 24 per fintech italiani?

Sì. Report tecnico con mapping esplicito DORA Art. 24 (test intrusione), Art. 25 (vulnerability management), e per fintech sotto Banca d'Italia: Circolare 285/2013 (Disposizioni in materia di rischio operativo).

Possiamo integrare con il nostro CI/CD (Poetry, pip-tools, Docker)?

Sì. GitHub Actions / GitLab CI integration su PR. Per Poetry-managed projects: scan automatic su poetry.lock changes. Per Docker: integrazione con docker scout per vulnerability scan + Matproof Sentinel per runtime testing.

Argomenti correlati

Approfondisci — articoli correlati dal blog

Proteggi la tua API FastAPI ora

Primo scan in 3 minuti, pentest FastAPI completo in 60-90 minuti. Report audit-ready DORA / NIS2 / ISO 27001 da 149 €.

Avvia scan gratuito