Le API sono la spina dorsale delle applicazioni moderne e la superficie più attaccata.Oltre l'80% del traffico web ora scorre attraverso le API e gli attacchi API sono aumentati del 700% negli ultimi anni. I test di sicurezza API non sono più facoltativi: sono essenziali per qualsiasi organizzazione che espone le API a partner, applicazioni mobili o Internet.
Punti chiave
- Le API presentano vulnerabilità uniche:La Top 10 della sicurezza OWASP API copre le minacce specifiche per le API che i tradizionali test web non riescono a cogliere.
- L'autorizzazione a livello di oggetto non funzionante (BOLA) è il rischio n. 1 API:Gli aggressori manipolano gli ID oggetto nelle richieste API per accedere ai dati di altri utenti.
- Le lacune nell'autenticazione e nella limitazione della velocità sono pervasive:Molte API non dispongono di un'adeguata convalida dei token, limitazione della velocità e prevenzione degli abusi.
- Sono richiesti test automatizzati e manuali:Gli scanner automatizzati rilevano i difetti API comuni. I test manuali rilevano le vulnerabilità della logica aziendale e i complessi bypass delle autorizzazioni.
OWASP API Top 10 della sicurezza (2023)
| # | Vulnerabilità | Descrizione | Approccio al test |
|---|---|---|---|
| API1 | Autorizzazione a livello di oggetto interrotta | Accesso agli oggetti di altri utenti modificando gli ID | Testare ogni endpoint con token utente diversi, enumerare gli ID oggetto |
| API2 | Autenticazione interrotta | Generazione di token debole, convalida mancante, flussi non sicuri | Analisi dei token, forza bruta, manipolazione dei flussi |
| API3 | Autorizzazione del livello di proprietà dell'oggetto danneggiato | Assegnazione di massa, esposizione eccessiva dei dati nelle risposte | Aggiungi campi imprevisti nelle richieste, analizza i dati di risposta |
| API4 | Consumo illimitato di risorse | Limiti di velocità, impaginazione o dimensioni mancanti | Test di inondazione, test di carico utile di grandi dimensioni, bypass dell'impaginazione |
| API5 | Autorizzazione del livello di funzione interrotta | Accesso agli endpoint di amministrazione come utente normale | Testare gli endpoint di amministrazione con token non di amministrazione |
| API6 | Accesso illimitato ai flussi aziendali sensibili | Abuso automatizzato delle funzionalità aziendali | Simulazione bot, test automatizzati del flusso |
| API7 | Falsificazione delle richieste lato server (SSRF) | API recupera gli URL controllati dagli aggressori | Manipolazione dei parametri URL, sondaggio della rete interna |
| API8 | Configurazione errata della sicurezza | Errori dettagliati, configurazione errata CORS, metodi non necessari | Scansione della configurazione, analisi dell'intestazione |
| API9 | Gestione impropria dell'inventario | Endpoint API deprecati, non documentati o shadow | API scoperta, confronto documentazione |
| API10 | Consumo non sicuro delle API | Affidarsi alle risposte API di terze parti senza convalida | Manipolazione della risposta, spoofing API a monte |
API Metodologia di test di sicurezza
Scoperta e revisione della documentazione
Inizia mappando tutti gli endpoint API. Confronta la documentazione API (specifiche OpenAPI/Swagger) con il comportamento reale. Utilizza strumenti come Burp Suite, Postman e script personalizzati per scoprire endpoint non documentati. Le API shadow, ovvero endpoint esistenti ma non documentati, sono comuni e spesso mancano di controlli di sicurezza perché sono state dimenticate.
Test di autenticazione
Testare i meccanismi di autenticazione API: convalida del token JWT (i token possono essere manipolati, contraffatti o riprodotti?), flussi OAuth (i parametri di stato vengono applicati? Gli URI di reindirizzamento possono essere manipolati?), gestione delle chiavi API (le chiavi hanno un ambito corretto? Possono essere estratte dal codice lato client?) e gestione della sessione (i token scadono? Possono essere revocati?).
Test di autorizzazione
Testa ogni endpoint con diversi livelli di privilegio. Sostituisci gli ID utente, gli ID tenant e gli ID oggetto nelle richieste per verificare i controlli di accesso. Testare l'autorizzazione orizzontale (l'utente A che accede ai dati dell'utente B) e l'autorizzazione verticale (l'utente normale che accede agli endpoint di amministrazione). Utilizza l'automazione per testare sistematicamente tutti gli endpoint: il solo test manuale non riesce a raggiungere gli endpoint nelle API di grandi dimensioni.
Convalida dell'input e test di iniezione
Testare tutti i parametri di input per le vulnerabilità di injection: SQL injection nei parametri di query, NoSQL injection nei corpi JSON, command injection negli endpoint di elaborazione e GraphQL injection specifica (query nidificate, abuso di introspezione). Testa sia con input non validi (fuzzing) che con payload accuratamente realizzati mirati a tipi di iniezione specifici.
API Strumenti di test di sicurezza
- Suite Burp:Test di sicurezza completi API con funzionalità proxy, scanner e automazione.
- Postino:Piattaforma di sviluppo API con raccolte di test di sicurezza e script di test automatizzati.
- OWASP ZAP:Scanner di sicurezza API gratuito con importazione OpenAPI e scansione automatizzata.
- Nuclei:Scanner basato su modelli con modelli specifici di API per vulnerabilità comuni.
- Arjun:Strumento di rilevamento dei parametri HTTP per trovare parametri API nascosti.
- GraphQL Viaggiatore:GraphQL API strumento di visualizzazione e introspezione.
Come Opsio testa la sicurezza API
- OWASP API Top 10 di copertura:Ogni test API copre tutte le 10 categorie con tecniche di test specifiche della piattaforma.
- Approccio automatizzato + manuale:Scansione automatizzata per vulnerabilità note, test manuali per logica aziendale e difetti di autorizzazione complessi.
- GraphQL competenza:Test specializzati per le API GraphQL tra cui introspezione, attacchi con query nidificate e abuso di query batch.
- CI/CD integrazione:Aiutiamo a integrare i test di sicurezza API automatizzati nella pipeline di distribuzione per una garanzia continua.
Domande frequenti
In che modo i test di sicurezza API differiscono dai test delle applicazioni web?
Il test delle applicazioni Web si concentra sull'interfaccia utente e sulle interazioni basate sul browser. Il test API prende di mira direttamente il livello API: testare endpoint, parametri, token di autenticazione e serializzazione dei dati che l'interfaccia utente potrebbe non esporre. Molte vulnerabilità esistono solo al livello API e non possono essere scoperte solo attraverso i test dell'interfaccia utente.
Dovrei testare le API interne o solo quelle rivolte al pubblico?
Entrambi. Le API pubbliche sono direttamente esposte agli aggressori e devono essere testate prima. Le API interne sono spesso meno sicure perché gli sviluppatori presuppongono la protezione a livello di rete. Se un utente malintenzionato ottiene l'accesso interno (tramite phishing, compromissione VPN o errata configurazione del cloud), le API interne diventano la superficie di attacco per lo spostamento laterale e il furto di dati.
Come posso proteggere specificatamente le API GraphQL?
GraphQL introduce rischi unici: profondità di query illimitata (negazione di servizio), divulgazione di introspezione (perdita di schemi) e abuso di query batch (aggiramento dei limiti di velocità). Proteggi GraphQL disabilitando l'introspezione nella produzione, implementando limiti di profondità e complessità delle query, applicando l'autorizzazione per campo e limitando la velocità in base al costo delle query anziché al conteggio delle richieste.
