Cos'è la sicurezza delle API?

Per funzionare, gran parte dell'Internet moderno fa affidamento su API. La sicurezza delle API consiste nelle strategie e nelle misure adottate per proteggere le API da attacchi e violazioni dei dati.

Obiettivi di apprendimento

Dopo aver letto questo articolo sarai in grado di:

  • Comprendere le minacce più diffuse alla sicurezza delle API
  • Spiegare l'autenticazione e l'autorizzazione API
  • Descrivere le tecniche per mantenere in sicurezza le API

Argomenti correlati


Vuoi saperne di più?

Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.

Fai riferimento all'Informativa sulla privacy di Cloudflare per scoprire come raccogliamo ed elaboriamo i tuoi dati personali.

Copia link dell'articolo

Cos'è la sicurezza delle API?

Un'interfaccia di programmazione delle applicazioni (API) consente a due software di interagire tra di loro. Se un programma o un'applicazione dispone un'API, i client esterni possono richiedere servizi da essa.

La sicurezza delle API consiste nell'adozione di tecniche e procedure volte a proteggere le API da attacchi. Proprio come le applicazioni, le reti e i server possono essere soggetti ad attacchi, anche le API possono cadere vittima di alcuni tipi di minacce.

La sicurezza delle API è una componente fondamentale della postura complessiva di sicurezza delle applicazioni web. La maggior parte delle applicazioni moderne funziona grazie alle API, che a loro volta espongono le applicazioni a una serie di rischi aggiuntivi, dato che consentono a terzi di accedervi. Possiamo paragonare questa situazione a quella di un'azienda che apra i propri uffici al pubblico. Avere più persone nei locali aziendali, molte delle quali sconosciute ai dipendenti dell'azienda, comporta rischi maggiori. Analogamente, una API consente a soggetti esterni di utilizzare un programma, introducendo un rischio maggiore per l'infrastruttura del servizio API.

Quali sono alcuni rischi comuni per la sicurezza delle API?

  • Exploit di vulnerabilità: un exploit di vulnerabilità si verifica quando un utente malintenzionato invia dati appositamente predisposti a un bersaglio, sfruttando un difetto nella sua architettura. Questi difetti, noti come "vulnerabilità", possono fornire all'aggressore diverse forme di accesso non autorizzato a un'API o alla sua applicazione corrispondente. L'Open Web Application Security Project (OWASP) mantiene un elenco delle 10 principali vulnerabilità API, come SQL injection, configurazione errata della sicurezza e altre. Se un exploit prende di mira una vulnerabilità precedentemente sconosciuta, questa viene definita minaccia zero-day. Tali minacce sono estremamente difficili da contrastare.
  • Attacchi basati sull'autenticazione: prima di poter effettuare delle richieste, i client devono autenticarsi, in modo che il server API non accetti richieste da fonti sconosciute o illegittime. Ci sono diversi modi per farlo, ma ognuno di essi è soggetto a compromessi. Ad esempio, un utente malintenzionato potrebbe ottenere le credenziali di un client legittimo, rubare una chiave API o intercettare e utilizzare un token di autenticazione.
  • Errori di autorizzazione: l'autorizzazione determina il livello di accesso posseduto da ciascun utente. Se le autorizzazioni non vengono gestite con oculatezza, un client API potrebbe accedere a dati che dovrebbero rimanere riservati, e questo aumenta il rischio di una violazione.
  • Attacchi DoS e DDoS: un numero eccessivo di richieste dirette a un'API può rallentare o interrompere del tutto il servizio per altri client. Alcuni aggressori indirizzano intenzionalmente un elevato numero di richieste a un’API, effettuando così un attacco denial-of-service (DoS) o distributed denial-of-service (DDoS).

Le strategie di sicurezza delle API possono contribuire a mitigare questi e altri rischi.

L'impiego di misure di autenticazione e autorizzazione efficaci contribuisce a garantire che i dati non vengano divulgati, e che solo i client autorizzati effettuino chiamate API. La protezione DDoS e la limitazione della frequenza possono bloccare gli attacchi DDoS. La convalida dello schema e l'uso di un Web Application Firewall (WAF) possono bloccare gli exploit di vulnerabilità.

In che modo la limitazione della frequenza e la mitigazione DDoS contribuiscono a proteggere le API?

La limitazione della frequenza stabilisce un limite alla frequenza con cui un utente può ripetere un'azione entro un certo intervallo di tempo. Se un client API supera il numero di richieste consentite, la limitazione della frequenza scarterà o bloccherà ulteriori richieste da parte sua per un determinato periodo di tempo.

La mitigazione DDoS aiuta a bloccare gli attacchi DoS e DDoS. In un attacco DDoS, un attaccante cerca di sopraffare un'API con un elevato numero di richieste in un breve lasso di tempo. Spesso, queste richieste provengono da diverse fonti.

La limitazione della frequenza e la mitigazione degli attacchi DDoS sono cruciali per le API per alcuni motivi:

  1. Arrestare gli attacchi DoS e DDoS. Bloccando o eliminando le richieste aggiuntive, queste due tecniche impediscono che le API siano sopraffatte. La sola limitazione della frequenza potrebbe non arrestare gli attacchi DDoS "low and slow", mentre la mitigazione degli attacchi DDoS è in grado di assorbire il traffico extra in qualunque caso.
  2. Al di fuori degli attacchi intenzionali, alcuni client possono semplicemente utilizzare un'API in modo eccessivo. Questo incide sul servizio dell'API in termini di potenza di calcolo, e potrebbe rallentare il servizio per altri client. La limitazione della frequenza contribuisce a prevenire il sovraccarico del server API.

Come vengono bloccati gli sfruttamenti delle vulnerabilità?

Affinché un exploit di vulnerabilità funzioni correttamente, le richieste API dannose devono essere strutturate in modo tale da indurre l'API a rispondere in un modo non previsto da chi l'ha progettata. Gli sviluppatori di API possono bloccare tali richieste dannose in diversi modi. I due metodi principali da conoscere sono:

  1. Convalida schema
  2. Regole WAF

Convalida schema

Lo schema descrive il comportamento previsto di un'API: il tipo di richieste che dovrebbe ricevere, e il tipo di risposte che dovrebbe fornire. Le richieste non valide che non si conformano a questo schema possono causare comportamenti imprevisti delle API, e questo può sfociare in una divulgazione involontaria di dati. La convalida dello schema identifica le richieste e le risposte non valide. Bloccando le risposte non valide, gli sviluppatori possono evitare alcune tipologie di attacchi e contribuire a prevenire fuoriuscite di dati.

Le regole di un Web Application Firewall (WAF)

Un WAF funziona come un firewall tradizionale, bloccando alcune richieste e risposte di rete e permettendo ad altre di passare. Lo fa in base a una serie di regole: se una richiesta o una risposta viola una regola, oppure si conforma ad essa, viene bloccata. Un WAF viene distribuito davanti a un'API o a un'applicazione web e monitora il traffico HTTP.

È possibile impostare regole WAF che bloccano modelli di richiesta e risposta che mirano a sfruttare a una vulnerabilità. Le regole WAF possono anche bloccare le richieste provenienti da determinati indirizzi IP, contribuendo a fermare gli attacchi bot e altri aggressori.

Perché l'autenticazione e l'autorizzazione sono così importanti per la sicurezza delle API?

L'autenticazione garantisce che le richieste API provengano da una fonte legittima, mentre l'autorizzazione indica al server API se il client richiedente è autorizzato a ottenere i dati richiesti.

Supponiamo che Alice crei un'API e Francesco sviluppi un'applicazione web che utilizza l'API di Alice. Quando l'applicazione di Francesco invia una chiamata API all'API di Alice, Francesco allega un'etichetta che dice: "questa chiamata proviene da Francesco" alla richiesta. Questo messaggio autentica la richiesta di Francesco, consentendo al server API di Alice di considerarla legittima.

Anche il server API di Alice controlla di quali privilegi dispone Francesco. Se la richiesta di Francesco riguarda dati che l'API di Alice ha etichettato come "Francesco può vedere questo dato", il server soddisfa la richiesta. Tuttavia, l'API di Alice potrebbe contenere una sezione di dati etichettata come "accesso interdetto a Francesco", e il server non deve soddisfare una richiesta per tali dati quando proviene da Francesco. Ecco perché l'autorizzazione riveste un ruolo fondamentale.

(Nella realtà, Francesco allegherebbe una chiave o un'altra forma di autenticazione alle chiamate API, non solo un'etichetta recante la dicitura "questa chiamata proviene da Francesco".)

Esistono diversi metodi di autenticazione per le API. I più comuni sono i seguenti:

1. Chiave API

Al client viene assegnata una chiave, ovvero una stringa univoca di caratteri che solo lui e il servizio API conoscono. La chiave viene allegata a ogni chiamata API. Il server API controlla la chiave quando riceve una chiamata API per assicurarsi che provenga da un client autenticato.

Lo svantaggio di questo metodo di autenticazione è che se la chiave viene rubata, un utente malintenzionato può utilizzarla per impersonare un client legittimo e sferrare una serie di attacchi. È importante crittografare le richieste e le risposte da e verso un'API utilizzando un protocollo di crittografia come Transport Layer Security (TLS); in questo modo, la chiave non viene esposta in chiaro mentre attraversa l'Internet.

2. Nome utente e password

Le chiamate API possono utilizzare le tipiche credenziali di nome utente e password per l'autenticazione tramite un metodo denominato "autenticazione HTTP". Nell'autenticazione HTTP, un nome utente e una password vengono codificati e aggiunti all'intestazione HTTP per tutte le chiamate API. Il server verifica queste credenziali confrontandole con quelle dei client autorizzati, e procede all'autenticazione delle richieste.

Questo approccio comporta tutte le problematiche tipicamente associate alle password, che possono essere smarrite, divulgate, rubate, indovinate o condivise con terzi non affidabili. Le password sono anche soggette ad attacchi di tipo sottrazione e uso illecito delle credenziali e a tentativi di violazione con forza bruta, tra gli altri.

3. Token OAuth

Invece di richiedere l'autenticazione direttamente dal client, un server API può ottenere un token da un server di autenticazione affidabile tramite il protocollo OAuth. Per utilizzare l'API, un utente effettua l'accesso a un servizio esterno anziché accedere direttamente all'interfaccia. Come l'approccio basato su nome utente e password, questo metodo di autenticazione è vulnerabile al credential stuffing e ad altri tipi di attacchi.

4. Mutual TLS (mTLS)

TLS è il protocollo di crittografia che crea una connessione crittografata e autenticata tra il client e il server durante il caricamento delle pagine web. TLS può anche verificare e autenticare entrambe le estremità di una connessione API.

Nel mutual TLS (mTLS), sia il client che il server dispongono di un certificato TLS. Le parti si autenticano a vicenda utilizzando questi certificati, fornendo reciprocamente la garanzia che entrambi siano chi dicono di essere, senza dover fare affidamento su password o altri metodi di autenticazione.

Tuttavia, mTLS può rivelarsi complicato da implementare: tutti gli endpoint API e i client necessitano di certificati TLS legittimi, che possono essere difficili da applicare e mantenere.

Che cos'è API Shield?

Cloudflare API Shield abilita diverse funzionalità di sicurezza delle API da un'unica dashboard, per proteggere le API dai rischi alla sicurezza più diffusi. API Shield comprende:

  • mTLS per l'autenticazione degli endpoint API
  • La convalida dello schema, che utilizza un modello di sicurezza positivo per acconsentire solo alle richieste conformi allo schema dell'API.
  • Prevenzione della perdita di dati (DLP, Data loss prevention), che analizza il traffico in uscita da un'API per verificare la presenza di dati sensibili
  • Limitazione della frequenza e mitigazione degli attacchi DDoS, per garantire che le APIs non vengano sovraccaricate.

Scopri di più su API Shield o sulle soluzioni di sicurezza per le API.

DOMANDE FREQUENTI

Cos'è la sicurezza delle API?

La sicurezza delle API è l'insieme di tecniche, strategie e strumenti usati per proteggere le API da attacchi e violazioni dei dati. Essa garantisce che solo gli utenti autorizzati possano accedere a servizi e dati specifici tramite, API e le mantiene le operative anche in caso di attacchi progettati per sovraccaricarle o metterle fuori uso. La limitazione della frequenza, la mitigazione degli attacchi DDoS, le regole WAF, la convalida dello schema e solide pratiche di autenticazione sono tutti tasselli importanti delle sicurezza delle API.

Perché l'autenticazione e l'autorizzazione sono importanti per la sicurezza delle API?

L'autenticazione verifica l'identità degli utenti delle API, mentre l'autorizzazione determina a quali dati o servizi tali utenti possono accedere. Insieme, contribuiscono a prevenire un accesso non autorizzato ai dati.

Quali sono alcuni rischi comuni per la sicurezza delle API?

Tra i rischi più diffusi alla sicurezza delle API troviamo gli exploit di vulnerabilità, gli attacchi basati sull'autenticazione, gli errori di autorizzazione e gli attacchi di tipo denial-of-service (Dos/DDoS), che possono interrompere la fruibilità delle API per gli utenti legittimi.

In che modo la limitazione della frequenza e la mitigazione degli attacchi DDoS proteggono le API?

La limitazione della frequenza pone un limite al numero di volte in cui un utente può utilizzare un'API in un determinato intervallo di tempo, mentre la mitigazione degli attacchi DDoS aiuta ad assorbire o bloccare grandi volumi di richieste dannose. Queste contromisure contribuiscono a mantenere le API disponibili per gli utenti autorizzati.

In che modo la convalida dello schema e un WAF possono migliorare la sicurezza delle API?

La convalida dello schema blocca le richieste che non corrispondono al formato previsto dall'API. In questo modo è meno probabile che una API si comporti in modo imprevisto in risposta alle richieste degli utenti. Un WAF utilizza regole per bloccare chiamate API dannose o sospette prima che raggiungano l'API.

Quali sono i metodi di autenticazione più comuni per le API?

Le API utilizzano chiavi API, combinazioni nome utente/password, token OAuth o mutual TLS (mTLS) per verificare i propri utenti.

Che cosa è API OWASP Security e perché è importante?

OWASP API Security Top 10 fornisce delle linee guida per la sicurezza e un elenco di vulnerabilità comuni delle API, e aiuta gli sviluppatori di API a comprendere e affrontare i rischi alla sicurezza più rilevanti.

Perché i protocolli di crittografia come TLS sono importanti per la sicurezza delle API?

I protocolli di crittografia come Transport Layer Security (TLS) proteggono i dati delle API in transito, impedendo a eventuali malintenzionati di rubare credenziali o informazioni sensibili. Questo aspetto è particolarmente cruciale se l'API rilascia chiavi API per l'autenticazione: se una chiave non è crittografata durante il transito, gli aggressori possono copiarla e utilizzarla per accedere a dati riservati. Inoltre, il mutual TLS (mTLS) viene talvolta utilizzato per l'autenticazione, al fine di impedire a eventuali aggressori di impersonare degli utenti legittimi.

Cosa sono le minacce zero-day nel contesto della sicurezza delle API?

Le minacce zero-day sono attacchi che sfruttano vulnerabilità delle API precedentemente sconosciute. Le minacce zero-day sono particolarmente difficili da rilevare e da fermare.