Advanced API Security Best Practices [Cheat Sheet]
Designed for developers and security professionals who already grasp foundational principles, this 11-page cheat sheet provides practical, step-by-step guidance for securing APIs.
La sicurezza delle API comprende le strategie, le procedure e le soluzioni impiegate per difendere le API da minacce, vulnerabilità e intrusioni non autorizzate.
Un'interfaccia di programmazione applicativa, o API, è un tipo di software che consente la comunicazione tra diversi software e servizi.
Esistono quattro architetture API principali:
REST è un'architettura uniforme e senza stato in cui il client e il server operano in modo indipendente e interagiscono tramite HTTP.
SOAP è più complesso e consuma più larghezza di banda rispetto a REST, poiché funziona esclusivamente con il formato dati XML.
Il protocollo RPC (Remote Procedure Call) consente l'esecuzione di procedure su un server remoto all'interno di un sistema distribuito.
GraphQL è un'infrastruttura fortemente tipizzata e basata su schemi, dotata di un linguaggio di query esclusivo, che consente ai clienti di ottenere dati specifici in un'unica richiesta.
Le API sono soggette a una vasta gamma di minacce. Alcune provengono dall'esterno, come intrusioni non autorizzate da parte di hacker, ma altre provengono dall'interno e possono interrompere i sistemi o lasciare l'API esposta ad attacchi. La sicurezza delle API si riferisce alle strategie, ai set di strumenti e alle procedure progettate per mantenere le API al sicuro.
La sicurezza delle API si concentra su tre importanti settori di sicurezza:
sicurezza delle applicazioni
sicurezza delle informazioni
sicurezza della rete
La sicurezza delle API può anche aiutare ad affrontare problemi quali controllo degli accessi, sicurezza basata sull'identità, convalida dei contenuti, limitazione della velocità, limitazione delle richieste, monitoraggio e analisi e protezione dei dati. Dato che le API fungono da punti di ingresso per applicazioni o reti, la sicurezza delle API è fondamentale per proteggere le organizzazioni da potenziali minacce.
Le API sono ormai fondamentali nello sviluppo software moderno. La maggior parte delle organizzazioni utilizza le API per scambiare dati e interfacciarsi con componenti software interni o esterni.
Tuttavia, le API sono suscettibili di attacchi informatici e spesso vengono prese di mira dagli hacker che mirano a sfruttare le vulnerabilità per scopi dannosi. Le API danneggiate o esposte sono tra le cause principali di violazioni di dati significative.
Garantire la sicurezza di un'API significa preservare la riservatezza dei suoi dati e garantire che solo gli utenti autorizzati possano accedervi. Ciò include la salvaguardia dell'integrità dei dati durante e dopo la trasmissione. Questa maggiore consapevolezza ha amplificato l'attenzione sulla sicurezza dell'API.
Rischi per la sicurezza delle API: i primi 10 OWASP
L'OWASP Top 10 è un elenco di rischi per la sicurezza curato per aiutare gli sviluppatori a progettare applicazioni tenendo presente la sicurezza. Diamo un'occhiata a come questi punti si relazionano alle API:
Autorizzazione a livello di oggetto interrotta: le API possono connettersi agli identificatori di oggetti di controllo e, senza un'adeguata sicurezza in atto, l'API potrebbe rivelare tali identificatori, lasciandoli esposti ad attacchi. Ad esempio, nel 2018, lo United States Postal Service (USPS) ha riscontrato una vulnerabilità dovuta a controlli di accesso e autorizzazione deboli, compromettendo i dati critici di oltre 60 milioni di utenti.
Autenticazione non funzionante: senza meccanismi di autenticazione robusti, gli aggressori potrebbero riuscire ad accedere alle API e utilizzarle per scopi malevoli. A giugno 2021, è stata sfruttata un'API esposta priva di autenticazione adeguata, compromettendo i dati personali di circa 1,3 milioni di individui. Una semplice autenticazione tramite token o chiave avrebbe potuto sventare questo attacco.
Autorizzazione a livello di proprietà-oggetto non funzionante: gli sviluppatori occasionalmente restituiscono dati superflui, supponendo che le API saranno accessibili solo da utenti autenticati. Tuttavia, gli aggressori possono sfruttare questi dati in eccesso. HealthEngine ha sofferto di questa vulnerabilità nella sua API di feedback, facendo trapelare le informazioni personali di oltre 59.000 pazienti.
Consumo illimitato di risorse: ogni volta che viene effettuata una richiesta API, viene utilizzata una certa quantità di risorse, tra cui larghezza di banda di rete, memoria e calcolo. Ciò presenta una vulnerabilità interna, poiché richieste illimitate possono sovraccaricare un'API, aumentando i costi operativi o persino causando il diniego del servizio per gli utenti legittimi.
Autorizzazione a livello di funzione interrotta: molti sistemi hanno policy di controllo degli accessi complesse. Se le autorizzazioni a livello di funzione non vengono implementate, gli aggressori possono accedere a funzioni non autorizzate. Un caso recente, a settembre 2022, ha visto un aggressore infiltrarsi nell'infrastruttura IT di Uber a causa di questa vulnerabilità.
Accesso illimitato a flussi aziendali sensibili: un accesso eccessivo a flussi aziendali critici può interrompere le operazioni. Nel 2011, CITI ha subito una violazione dei dati che ha interessato 350.000 titolari di carte nordamericane a causa di un attacco che ha manipolato i suoi flussi aziendali.
Server-side request forgery (SSRF): le vulnerabilità SSRF si verificano quando un'API recupera dati da un URL definito dall'utente non convalidato, consentendo potenzialmente agli aggressori di aggirare le misure di sicurezza. Gli stack tecnologici moderni, come Docker e Kubernetes, sono particolarmente vulnerabili.
Configurazione errata della sicurezza: configurazioni API non sicure possono portare a vari attacchi che espongono i dati e ottengono l'accesso non autorizzato. Queste vulnerabilità derivano da una miriade di fattori, come patch mancanti, sistemi obsoleti o dettagli di errore esposti.
Gestione impropria dell'inventario: poiché le API spesso espongono più endpoint rispetto alle applicazioni Web tradizionali, è essenziale mantenere una documentazione accurata. Una gestione impropria dell'inventario può derivare da un'archiviazione non sicura, una crittografia debole o controlli di accesso inadeguati.
Consumo non sicuro di API: il consumo di API spesso dipende dalla fiducia che gli sviluppatori ripongono nelle risposte di terze parti. Molti sviluppatori ritengono che le API di terze parti, in particolare quelle offerte da aziende note, siano intrinsecamente sicure. Questa fiducia mal riposta può portare a vulnerabilità. Invece di prendere di mira direttamente le tue API, gli aggressori potrebbero sfruttare queste integrazioni di terze parti. Incidenti, come gli attacchi SSRF, possono manifestarsi a causa di una convalida e sanificazione inadeguata delle risposte. Ad esempio, a gennaio 2021, Parler ha dovuto affrontare problemi di sicurezza consentendo alle API di terze parti di accedere ai dati senza autenticazione. Gli aggressori hanno indovinato gli URL contenenti informazioni sensibili e hanno avuto accesso ai dati senza autenticazione.
Suggerimento professionale
Consiglio da professionista
Comprendendo questi rischi e implementando misure di sicurezza appropriate, le organizzazioni possono mitigare in modo significativo le potenziali minacce associate alle API. Visita API Security Top 10 di OWASP per ottenere una ripartizione dettagliata di ciascun rischio.
Sicurezza API per SOAP, REST e GraphQL
Ognuna delle tre architetture API principali (SOAP, REST e GraphQL) ha le sue implicazioni di sicurezza uniche.
API Architecture
Security Implications
Sicurezza dell'API SOAP
SOAP è un protocollo di messaggistica semplificato basato su XML, progettato per lo scambio di dati strutturati in reti informatiche decentralizzate. È adattabile a vari protocolli, come HTTP e SMTP. I livelli di sicurezza di SOAP incorporano sia la sicurezza del livello di trasporto (come HTTPS) per crittografare i dati in transito, sia la sicurezza a livello di messaggio, incluse le firme digitali XML, per mantenere l'integrità del messaggio. Seguendo le specifiche dei Web Services (WS), che offrono linee guida standardizzate, SOAP fornisce solide funzionalità di sicurezza come WS-ReliableMessaging per una migliore gestione degli errori.
Sicurezza dell'API REST
Le API REST impiegano JSON per la rappresentazione dei dati e si affidano a HTTP/s per i trasferimenti di dati, semplificando il processo di sviluppo. Poiché REST non ha meccanismi di sicurezza intrinseci, la sua sicurezza dipende dalla progettazione dell'API. L'implementazione di misure di sicurezza nella trasmissione dei dati, nell'implementazione e nelle interazioni con i client è essenziale. In genere, le API REST si affidano a protocolli come HTTPS e impiegano l'autenticazione basata su token per migliorare la sicurezza.
Sicurezza dell'API GraphQL
GraphQL, un linguaggio API open source, funziona sia come linguaggio di query che come runtime per l'esecuzione di query. Il suo schema rigorosamente tipizzato garantisce la coerenza dei dati. Tuttavia, la sua flessibilità può essere un'arma a doppio taglio: query complesse e non filtrate potrebbero portare i server fuori strada, potenzialmente eseguendo richieste dannose. L'adozione di pratiche di sicurezza come la limitazione, l'impostazione di limiti di profondità delle query e l'implementazione di timeout delle query possono mitigare queste vulnerabilità.
Suggerimento professionale
Consiglio da professionista
La tua azienda sta sviluppando applicazioni con GenAI? Proprio come qualsiasi altro servizio multi-tenant, le applicazioni che incorporano GenAI possono soffrire di vulnerabilità API tradizionali. Scopri come distribuire modelli di IA generativa come parte delle tue app cloud multi-tenant in modo sicuro.
Standard di sicurezza API
La chiave per mantenere le tue API al sicuro è mantenere standard di sicurezza API migliori. Puoi iniziare rispettando i seguenti punti:
Scoperta e inventariazione delle API
Per salvaguardare un'API, devi prima essere consapevole della sua esistenza. La scoperta e l'inventario automatizzati continui tramite scanner sono essenziali per rilevare tutti gli endpoint API e comprenderne i parametri e i tipi di dati.
Identificare i rischi e le vulnerabilità delle API
Le API crittografate sono meno soggette a violazioni. Sfruttando le firme si garantisce che solo gli utenti autorizzati possano accedere e modificare i dati. Metodi come i protocolli di crittografia TLS salvaguardano efficacemente i dati API.
Implementare autenticazione e autorizzazione forti
L'autenticazione verifica l'utente, in genere tramite chiavi API o autenticazione di accesso di base, mentre l'autorizzazione garantisce che gli utenti accedano solo ai dati consentiti, spesso ottenuti tramite Role Based Access Control (RBAC). Entrambi sono essenziali per una solida sicurezza API.
Limiti di velocità e limitazione dell'uso
Gli attacchi DoS e DDoS rappresentano gravi minacce per le tue operazioni e le API sono un vettore comune. Applicando quote e limiti di velocità, puoi contrastare tali minacce e rischi aggiuntivi, come il credential stuffing.
Utilizzare un gateway API
Le API gestite riducono le vulnerabilità. Poiché i gateway API fungono da mediatori intermedi per client e servizi backend, possono autenticare il traffico e migliorare la sicurezza delle API.
Come abbiamo discusso, la sicurezza delle API inizia con la scoperta delle API e l'inventario. Le soluzioni esistenti per la sicurezza delle API si basano principalmente su agenti e scanner di rete. Tuttavia, questi non riescono a fornire una visibilità completa e sono anche complessi da implementare. Con Wiz Dynamic Scanner , Wiz ha introdotto un approccio nuovo e moderno alla sicurezza delle API.
Grazie alla scansione senza agente per tutti i principali provider cloud, Wiz Dynamic Scanner analizza tutti i livelli cloud della tua distribuzione, consentendo di rilevare eventuali componenti di rischio e percorsi di attacco che potrebbero essere presenti nel tuo ambiente cloud.
Questo approccio ti offre una visibilità completa per identificare tutte le tue API esposte a Internet, insieme al contesto associato, in modo da avere una comprensione completa di ciò che è esposto e quale potrebbe essere il raggio di esplosione se venissero sfruttate.
Per avere una comprensione più chiara e vedere come si comporta nel tuo ambiente, programma una demo con Wiz per vedere di persona come funziona e tutte le funzionalità che offre.
Un approccio contestuale e senza agenti alla sicurezza delle API
Scopri come con Wiz i clienti possono ora rispondere in modo semplice alla domanda su dove si trovano le API esposte nel loro ambiente, con tutto il contesto associato all'ambiente di esecuzione.