Whitelist IP per chiavi API
·
19 ago 2015

Punti Chiave
Le chiavi API sono credenziali potenti: se compromesse, gli aggressori possono inviare email, rubare dati o impersonare il tuo marchio.
Forzare una chiave esadecimale di 40 caratteri è praticamente impossibile; le minacce reali derivano dall'esposizione (attacchi MITM, repository di codice non sicuri, credenziali trapelate).
Usa sempre HTTPS e convalida i certificati SSL per prevenire l'intercettazione delle tue chiavi API.
La whitelist degli IP aggiunge uno strato critico di protezione limitando l'uso di una chiave a IP specifici o a intervalli di IP.
Anche se un aggressore ruba la tua chiave API, non può usarla a meno che non si connetta da un IP approvato.
Il supporto CIDR semplifica l'autorizzazione di intere reti senza elencare ogni server.
Evita di incorporare le chiavi API nel codice: utilizza variabili ambientali o soluzioni sicure di gestione dei segreti.
Crea più chiavi API a scopo ristretto piuttosto che una singola chiave “fai-tutto” — ciascuna con permessi limitati e la propria whitelist.
Per integrazioni di terze parti, crea chiavi dedicate con concessioni ristrette e IP limitati.
Abilita il 2FA sul tuo account poiché le chiavi API possono essere create solo tramite l'interfaccia utente.
Rivedi, ruota e termina regolarmente le chiavi per mantenere una forte sicurezza operativa.
Punti salienti del Q&A
Che cos'è il whitelisting degli IP?
È una funzione di sicurezza che limita l'uso della chiave API a indirizzi IP specifici o a intervalli di indirizzi IP.
Perché SparkPost/Bird utilizza le chiavi API per l'autenticazione?
Le chiavi API sono semplici, ampiamente adottate e funzionano in modo pulito con le API REST e SMTP.
Cosa succede se qualcuno ruba la mia chiave API?
Potrebbero inviare email a nome tuo, scaricare elenchi di destinatari, modificare modelli o inviare phishing/spam che danneggia il tuo marchio.
Le chiavi API possono essere forzate a mano?
Praticamente impossibile. Una stringa esadecimale di 40 caratteri ha ~1.46e48 combinazioni: forzare ogni combinazione richiederebbe più tempo dell'età dell'universo.
Quindi, come ottengono normalmente le chiavi API gli attaccanti?
Attacchi man-in-the-middle (se SSL non è verificato), chiavi esposte in repository pubblici di GitHub o log che perdono accidentalmente chiavi.
Come aiuta la whitelist di IP?
Anche se un attaccante ruba la tua chiave, non funzionerà a meno che non si colleghi da un IP approvato.
Posso autorizzare intere reti?
Sì, tramite notazione CIDR — ideale per server bilanciati, VPN o range statici per uffici.
L'esclusione si applica sia a REST che a SMTP?
Sì, l'IP della richiesta in arrivo deve corrispondere alla tua lista bianca.
Quanti IP o intervalli posso autorizzare?
Quanti ne hai bisogno - più indirizzi IP individuali o blocchi.
Dovrei usare una sola chiave API per tutto?
No. Creare chiavi separate per sistemi, team o fornitori diversi. Questo migliora la sicurezza e rende più facile ruotare o revocare le chiavi.
Dove dovrei conservare le chiavi API?
Utilizza le variabili d'ambiente: non inserire mai le chiavi direttamente nei file sorgente o nei repository pubblici.
Quali ulteriori pratiche di sicurezza consigliate?
Abilita sempre la 2FA sul tuo account SparkPost/Bird e crea chiavi dedicate per parti terze con permessi minimi e le loro proprie whitelist.
Ci sono molti modi per costruire l'autenticazione in un prodotto con API first come SparkPost, e quello che abbiamo scelto fin dall'inizio è l'uso delle chiavi API. Iniettare la tua chiave API come header di Authorization raw o tramite l'autenticazione HTTP Basic standard rende molto facile utilizzare le nostre API. Le chiavi API come queste sono uno standard comune per i webservice, ma quanto è sicuro questo sistema?
I rischi
Quando si utilizza un qualsiasi webservice, se un attaccante ottiene la tua chiave API può agire per tuo conto e fare cose come (nel nostro caso):
inviare la propria email gratuitamente tramite il tuo account
scaricare la lista dei tuoi destinatari e passarla a spammer (se non sono già spammer)
modificare i tuoi modelli per iniettare link di phishing
inviare spam o phishing per tuo conto
Qualcuna di queste conseguenze potrebbe essere molto dannosa per la tua reputazione e per la tua attività, e nel caso di phishing potrebbe danneggiare direttamente i tuoi utenti finali. Ecco perché è estremamente importante assicurarsi che nessuno possa scoprire la tua chiave API.
Le probabilità
Ho sentito bruteforce? Le nostre chiavi API sono stringhe esadecimali lunghe 40 generate casualmente. Questo porta a un totale di 1,4615e+48 chiavi API. Se tutti e 3 miliardi di computer e smartphone nel mondo provassero 100 chiavi API al secondo, assumendo che i nostri server lo consentano, passare attraverso tutte le possibili chiavi API richiederebbe più di 150.000.000.000.000.000.000.000.000.000 anni. Quindi forzare la chiave API non ha semplicemente senso.
Quindi come può qualcuno trovare la tua chiave API? Poiché la chiave viene passata come intestazione, può essere letta tramite attacchi man-in-the-middle, quindi dovresti sempre assicurarti che il tuo client verifichi i certificati SSL quando si connette alle nostre API (questo è un motivo principale per cui richiediamo https per le connessioni API). Inoltre, se sei distratto nell'uso di repository di codice pubblici come github, la tua chiave API potrebbe facilmente finire esposta nel mondo. Questo non è un problema accademico: ci sono bot noti che attraversano github per trovare chiavi API, e ci sono stati attacchi di successo attraverso quel vettore.
Whitelist IP per il salvataggio
Ultime parole
Alcuni consigli personali sulla sicurezza:
Non tenere le tue chiavi API nel codice. Ci sono molti vantaggi nel tenerle come variabili d'ambiente, come fa Heroku
Puoi creare un numero illimitato di chiavi API ed è meglio per la sicurezza suddividere le responsabilità tra più chiavi API, anziché avere solo una chiave "swiss-knife". Questo ti permetterebbe anche di avere whitelist IP diverse per ogni chiave, per una migliore separazione delle preoccupazioni
Se lavori con terze parti, non condividere la tua chiave API ma crea una nuova chiave per loro, con solo le autorizzazioni necessarie, e collegata ai loro IP
Dato che le chiavi API possono essere create solo tramite l'interfaccia utente, abilitare l'autenticazione a 2 fattori sul tuo account SparkPost è un must e richiede solo 2 minuti



