Tutto quel che è importante sapere sulla sicurezza delle Application Programming Interface (API)

Al momento stai visualizzando Tutto quel che è importante sapere sulla sicurezza delle Application Programming Interface (API)

Un Application Programming Interface (API) è un insieme di procedure che consente alle applicazioni di comunicare con altre. Fornisce agli sviluppatori la possibilità di costruire applicazioni software che garantiscano l’estrazione e la condivisione dei dati in maniera accessibile.

Le Application Programming Interface possono essere usate anche per facilitare attacchi informatici, dato che sono ampiamente utilizzate per elaborare informazioni di ogni tipo, molto spesso sensibili. Vulnerabilità come credenziali deboli per l’autenticazione, mancanza di criptazione, bug, endpoint non sicuri rendono le API vulnerabili agli attacchi.

Tra gli attacchi che vengono comunemente portati sfruttando falle di sicurezza mentre si implementano le Application Programming Interface troviamo:

Attacchi MITM (Man in The Middle)

in questa tipologia di attacco un intruso intercetta il traffico tra due parti in comunicazione al fine di ottenere informazioni sensibili. Tra le comunicazioni intercettate molto spesso ci sono anche gli scambi API.

API Injection (XSS e SQLi)

In un attacco di code injection, il codice dannoso viene inserito in un software vulnerabile per portare attacchi del tipo cross-site scripting (XSS) e SQL injection (SQLi). Ad esempio un attaccante potrebbe inserire codice dannoso in un messaggio API, come il comando per la cancellazione di oggetti o in un record di un database.

Distributed Denial of Service (DDoS)

In un attacco DDoS, più sistemi concentrano la propria larghezza di banda su un sistema bersaglio, molto spesso un web server. Un attacco DDoS contro un API tenta di sovraccaricarne la memoria inondandola di connessioni simultanee o inviando / richiedendo grandi quantità di informazioni per ogni richiesta.

DNS Hijacking

L’hijackiing (potremmo tradurre con dirottamento) del domain name server (DNS), conosciuto anche come “DNS redirection”, è un tipo di attacco nel quale le richieste DNS sono inaspettatamente reindirizzate verso un sito dannoso. Ad esempio è un caso di DNS hijacking quello in cui, mentre l’utente tenta l’accesso ad un sito, avvengono continui redirect verso un altro sito web contenente pop up e ads indesiderati Questi attacchi sono finalizzati principalmente alla generazione di profitto tramite visualizzazioni.

In alcuni casi questo attacco è portato a fini di phishing: l’utente viene reindirizzato, senza che ne sia consapevole, ad una copia fake di un sito web o di un form di login / pagamento. Senza rendersene conto quindi, la vittima inserisce i propri dati una pagina simile a quella legittima ma falsa, che reinvia tutti i dati inseriti all’attaccante.

Noi di Seqrite ci stiamo impegnando per mettere in sicurezza le nostre API!

HTTPS al posto di HTTP

Il Transport Layer Security (TLS) è uno standard che mantiene private le connessioni Internet e verifica che i dati scambiati tra due sistemi siano criptati e non vengano manomessi. Un sito Web è protetto con il TLS quando il suo URL inizia con HTTPS (HyperText Transfer Protocol Secure).

Lo standard TLS è essenziale per le interazioni basate su API: se il TLS non è presente, il rischio di attacchi Man In The Middle è molto molto alto. Qui a Seqrite usiamo lo standard TLS nelle nostre API e preferiamo rigorosamente l’HTTPS all’HTTP.

Autenticazione Sicura

Per determinare l’identità di un utente finale in una API, è possibile implementare l’autenticazione usando il protocollo TLS. Tuttavia, OAuth2 e OpenID Connect sono alternative più sicure.

Non esponiamo informazioni sugli URL
Abbiamo deciso di non esporre mai alcuna informazione vulnerabile o sensibile negli URL.

Criptazione solida

L’uso di un solido algoritmo di criptazione per proteggere le informazioni mentre sono processate dalle API è altamente raccomandato. Noi usiamo un algoritmo estremamente solido, ma leggero: AES256. AES sta per Advanced Encryption Standard ed è il primo algoritmo di criptazione pubblicamente disponibile approvato dall’Agenzia di Sicurezza Nazionale (NSA) degli Stati Uniti per la protezione di informazioni top secret.

Ad oggi sono stati pochissimi gli attacchi segnalati contro l’implementazione di AES256. La maggior parte di questi erano attacchi side-channel, portati cioè sull’implementazione dell’algoritmo sul sistema e non sull’algoritmo in sé. Siamo convinti che il design e la solidità della chiave di criptazione proteggano l’algoritmo AES e che una chiave lunga 256-bit sia perfetta per informazioni top secret. Quando si parla di sicurezza dei dati non accettiamo compromessi e l’AES256 è per adesso il metodo più sicuro disponibile sul mercato per criptare i dati.

Algoritmi per lo scambio delle chiavi

Usiamo solidi algoritmi di Key Exchange, per scambiare le chiavi di Autenticazione e Criptazione. Per lo scambio delle chiavi private usiamo il metodo più solido di Public Key Exchange, chiamato Diffie Hellman Secured key-exchange.

Il Diffie Hellman Secured key-exchange è molto complesso, ma ha il grande vantaggio di rendere molto facile i calcoli per la chiave e molto complessi, se non impossibili, quelli necessari per calcolarla in maniera inversa. Ha anche altri vantaggi, primo tra tutti quello per cui le due parti possono anche non conoscersi prima di scambiarsi informazioni, ma anche quello per cui una volta che le chiavi sono scambiate, la comunicazione resta sicura anche se condotta tramite canali non sicuri. Infine la condivisione della chiave privata è molto sicura.

Autenticazione con Token

L’autenticazione con token ha un grande vantaggio, poichè annulla il rischio di violazione di credenziali deboli. Un token è un insieme di dati altamente sicuro usato per trasmettere informazioni sensibili tra due parti ed è ormai sempre più diffuso come metodo sicuro per i processi di autenticazione.

Qui a Seqrite usiamo il JWT Token che si compone di:

  • un header che definisce il tipo di token e l’algoritmo usato;
  • un payload che contiene informazioni sull’utente e altri metadati;
  • una firma che certifica l’identità del mittente e l’autenticità del messaggio.

Sicurezza VS Performance

Ad oggi, le performance sono una funzione la sicurezza è una necessità: vanno, semplicemente, implementate di pari passo senza che l’una possa compromettere l’altra. Per soddisfare i requisiti di sicurezza senza compromettere le prestazioni, stiamo cercando di implementare misure di sicurezza elevate che però risultino quanto più leggere possibile sui sistemi.