Una sicurezza end-to-end per le API: dallo sviluppo alla fine del ciclo di vita
Akamai ha acquisito Noname Security a giugno 2024. Questo blog di archivio è stato pubblicato originariamente il 5 ottobre 2022.
Proteggere adeguatamente le API (Application Programming Interface) è un processo che va ben oltre la sicurezza perché riguarda i problemi legati all'architettura e alle operazioni IT che favoriscono la sicurezza. Per risultare efficace, la sicurezza delle API deve essere considerata come un processo end-to-end che copre tutto il ciclo di vita di un software. Questo processo inizia con lo sviluppo, ma continua con il runtime e termina con il ciclo di vita delle API.
Vecchi miti da sfatare
La sicurezza delle API ci forza a sfatare alcuni vecchi miti. Ad esempio, si crede che lo sviluppo del software termini con l'implementazione del codice in fase di produzione. Ora non è più così. Lo sviluppo del software ora continua nel processo basilare della scrittura del codice.
Lo sviluppo è un processo continuo incorporato nel concetto di integrazione/implementazione continua (CI/CD). Insieme, il software viene creato tramite il DevOps, che unisce le precedenti sequenze dello sviluppo di software (Dev) e implementa il software nei prodotti tramite le operazioni IT (Ops).
Oggi, non appena una parte di codice viene implementata in fase di produzione, il team DevOps è già pronto ad implementare un'altra iterazione dell'applicazione, che può avvenire anche un'ora più tardi. Con il DevOps, lo sviluppo diventa operativo (pare). Il lato operativo del processo non si distingue più dal lato dello sviluppo. La sicurezza delle applicazioni deve, pertanto, abbracciare le fasi correlate dello sviluppo e delle operazioni.
Inoltre, il software moderno non è solo codice: è anche una serie di connessioni tra vari componenti come microservizi, API, librerie di codice e così via. Tenere le API sicure significa comprendere come funzionano queste connessioni, dove si trovano e come possono risultare vulnerabili ai criminali. Questo requisito trascende anche le pratiche di sicurezza per includere operazioni come la creazione di inventari delle API e il monitoraggio del traffico delle API.
La sicurezza delle API deve abbracciare l'intero SDLC e oltre
La sicurezza delle API deve iniziare dalla fase di sviluppo della vita di un'applicazione, continuare nel runtime e abbracciare l'intero ciclo di vita dello sviluppo del software (SDLC). A partire dallo sviluppo, gli sviluppatori possono istruire le applicazioni per richiamare la funzionalità delle API tramite le chiamate API o creare API che rendono visibile la funzionalità e i dati dell'app ad altre applicazioni software. Entrambe le modalità di funzionamento delle API creano potenziali rischi.
I rischi per la sicurezza delle API si verificano per vari motivi, ma molti hanno a che fare con problemi di configurazione delle API che influiscono sull'autenticazione e sull'autorizzazione degli utenti. Un'errata configurazione delle API potrebbe consentire ad un utente sconosciuto di accedere ai dati sensibili. In alternativa, un errore di configurazione potrebbe consentire ad un utente di accedere a dati per cui non è autorizzato. Altri problemi di configurazione possono consentire ad un criminale di sovraccaricare le API con un numero eccessivo di chiamate e sferrare un attacco DoS (Denial-of-Service).
In fase di sviluppo
I test di sicurezza delle API possono mitigare questi rischi per le API in fase di sviluppo. I test devono essere specifici per le API perché i test generici delle applicazioni non riescono ad individuare problemi come un'errata configurazione delle API. Al contrario, una serie di test di sicurezza delle API dedicata deve riuscire ad identificare le vulnerabilità delle API e a facilitare la loro mitigazione prima dell'implementazione del software.
Per la massima efficacia, i test di sicurezza delle API devono essere eseguiti tempestivamente nel processo di sviluppo secondo un approccio noto come "Shift-Left". La serie di test deve integrarsi anche nella pipeline CI/CD. In caso contrario, il processo di mitigazione della sicurezza diventa eccessivamente complicato da gestire per i team DevOps.
In fase di runtime
In fase di runtime, la sicurezza delle API significa bloccare le minacce in tempo reale, e, pertanto, è necessario monitorare la sicurezza delle API. Una soluzione per la sicurezza delle API deve stare al passo con il traffico delle API e informare gli amministratori in caso di comportamenti anomali o firme di attacchi. In alternativa, la soluzione può eseguire un altro passaggio per bloccare automaticamente le API se rileva una minaccia.
La necessità di inventariare le API
La sicurezza del runtime delle API è relativamente semplice da realizzare, tuttavia, è efficace solo se la soluzione per la sicurezza delle API sa dove si trovano tutte le API. Per proteggere le API, è necessario implementare un sistema di gestione del livello delle API, che include il processo di individuazione delle API. È impossibile difendere un'API che la soluzione per la sicurezza non riesce a vedere: ecco perché è necessario inventariare le API. L'individuazione delle API è necessaria anche perché i gateway API e le soluzioni WAF (Web Application Firewall) non eseguono automaticamente l'inventario di tutte le API presenti in un ambiente, nonostante ciò che si possa pensare.
Le API non autorizzate, zombie e ombra ci invadono
Il processo di individuazione delle API conduce inevitabilmente ad amministratori IT sorpresi di scoprire che il loro ambiente contiene molte API non autorizzate, zombie e ombra.
- Un' API non autorizzata è un'API che si è persa nel corso del tempo, magari la versione precedente di un'API che non è mai stata disattivata o un'API visibile sulla confezione di un software commerciale sconosciuta.
- Un' API zombie è un'API funzionante che non viene rilevata dai sistemi.
- Un' API ombra viene creata da chi si prende la responsabilità di creare le API, ma senza informare il reparto IT.
Questi tre tipi di API non rilevate creano tutte potenziali rischi. Non è possibile applicare policy di sicurezza a queste API perché sono invisibili. Se non sono configurate correttamente per la sicurezza (e quasi sempre sono configurate in modo errato o sono prive di patch), queste API consentono ai criminali di accedere in modo improprio.
Sapere cosa fare con API in precedenza sconosciute può risultare difficile. Se queste API continuano a funzionare, devono essere rese conformi tramite l'applicazione di policy relative alla configurazione, all'autenticazione e così via. Bloccare un'API appena individuata può sembrare la soluzione migliore, ma questa scelta può creare vari problemi.
Ad esempio, se la versione precedente di un'API è ancora in uso nonostante sia stata superata dalla sua versione sostitutiva, bloccarla potrebbe causare l'interruzione delle applicazioni. Il responsabile della decisione di bloccare un'API potrebbe trovarsi nei guai. Ciò che serve è un set di strumenti in grado di fornire agli amministratori le informazioni necessarie per prendere le giuste decisioni.
Mettere in campo gli strumenti giusti
La sicurezza delle API end-to-end richiede l'utilizzo degli strumenti giusti. Un'efficace soluzione per la sicurezza delle API end-to-end riesce a gestire i test sulla sicurezza, il monitoraggio del runtime e la creazione dell'inventario/gestione del sistema di sicurezza delle API. È necessario esaminare attentamente gli strumenti esistenti poiché la maggio parte delle soluzioni WAF e dei gateway API non coprono le fasi di sviluppo, esecuzione dei test, monitoraggio del runtime e creazione dell'inventario.
La soluzione per la sicurezza delle API deve anche idealmente operare in modo da non influire sulle performance della rete o delle API. Ad esempio, le soluzioni per la sicurezza delle API di Akamai funzionano monitorando una copia del traffico di rete, riuscendo ad individuare le chiamate API in questo traffico copiato e ad identificare le API sconosciute e le minacce alla sicurezza nel processo.
La sicurezza delle API deve coprire tutte le fasi del ciclo di vita di un'API, dallo sviluppo e dal runtime alla fine del ciclo di vita delle API. La sicurezza entra in processi non tecnicamente vicini al suo ambito, come gli inventari delle API. Poiché le API sconosciute creano potenziali rischi, la loro identificazione rende le applicazioni più sicure. È un processo end-to-end: più è completa la sicurezza delle API, più sarà sicuro l'intero ambiente circostante.