White paper

Gestione dei 10 rischi principali di OWASP

Nell'ambito del nostro programma di sicurezza, la gestione dei rischi è di estrema importanza.

L'elenco OWASP Top 10 riassume i rischi più comuni che interessano le applicazioni, e come tale è un ottimo punto di partenza per dimostrare i nostri sforzi in termini di sicurezza delle nostre soluzioni.

Prevenzione delle vulnerabilità e riduzione dell'impatto

  • Alcuni elementi del nostro Secure SDLC non sono specifici per i rischi indicati di seguito, ma riguardano questioni di sicurezza in generale.
  • Gli sviluppatori hanno accesso e possono partecipare a corsi di formazione sulla codifica sicura. Questi corsi sono molto pragmatici e mirano a fornire esperienza pratica nell'individuare e risolvere i problemi di sicurezza nel codice.
  • I nostri Coding Security Standards interni e i Secure Design Principles servono come elenco di requisiti di sicurezza e forniscono un elenco di regole che tutto il codice deve seguire. La scansione statica aiuta a identificare i punti deboli e le vulnerabilità.
  • Vengono eseguiti regolarmente test di penetrazione interni sulle nostre applicazioni per individuare potenziali problemi prima che il codice raggiunga i server di produzione.
  • L'impatto di una vulnerabilità sfruttata viene ridotto implementando il principio del minimo privilegio su ogni livello possibile del nostro stack tecnologico.

I 10 rischi principali di OWASP

A01:2021

Controllo degli accessi non funzionante

Tutti gli accessi sono autorizzati dal nostro sistema di backend sulla base dei dati necessari, tra cui l'identità del chiamante, l'endpoint chiamato e i parametri della richiesta, per evitare l'escalation verticale e orizzontale dei privilegi. Le soluzioni di controllo degli accessi vengono riutilizzate ove possibile. Le chiamate API relative all'autenticazione sono limitate per ridurre il rischio di DoS e di raccolta automatica dei dati.

A02:2021

Fallimenti crittografici

Qualsiasi connessione tra i client web o i dispositivi recenti e i nostri server supporta sempre TLS. Questo include le connessioni dai browser dei client ai nostri server web, ma anche le connessioni dai dispositivi ai nostri servizi. I protocolli in chiaro non vengono utilizzati per la comunicazione tra dispositivi che trasmettono dati sensibili, a meno che non si tratti di un requisito specifico del cliente per la comunicazione tra dispositivi.

Gli algoritmi crittografici e la forza delle chiavi vengono rivisti regolarmente e aggiornati se necessario.

I dati a riposo nei nostri database SQL sono archiviati su volumi criptati.

A03:2021

Iniezione

Come prima linea di difesa contro le vulnerabilità di tipo injection, le nostre applicazioni web implementano la convalida dell'input. L'input dell'utente viene convalidato per tipo e formato, ove possibile.

I framework moderni forniscono anche una codifica appropriata per prevenire le iniezioni durante la creazione di alcuni oggetti, compresi i documenti XML, riducendo così il rischio di tali vulnerabilità.

Il rischio di SQL injection è ulteriormente ridotto in modo significativo dall'uso corretto di un ORM.

Anche il rischio di Iniezione di comandi del sistema operativo è notevolmente ridotto dallo stack tecnologico sottostante basato su Java, in cui i comandi del sistema operativo non vengono mai eseguiti dal codice.

Per quanto riguarda gli XSS, esaminiamo manualmente il nostro codice e gli ambienti di test per verificare la presenza di cross-site scripting. Alcune tecnologie e framework che utilizziamo aiutano a prevenire gli XSS applicando una codifica appropriata per impostazione predefinita.

A04:2021

Design insicuro

I nostri Coding Security Standards interni e i nostri Secure Design Principles servono come elenco di requisiti di sicurezza e forniscono un elenco di regole che tutto il codice e l'architettura devono seguire. Quando prendiamo decisioni su potenziali miglioramenti, consideriamo fonti quali BSIMM e SAMM. Il nostro Consiglio per la sicurezza fornisce la governance e la supervisione della progettazione della sicurezza.

A5:2021

Errata configurazione della sicurezza

Miriamo a implementare il principio del minimo privilegio su tutti i livelli del nostro stack tecnologico. Anche la superficie di attacco viene ridotta installando solo i componenti necessari. La configurazione del server è gestita da soluzioni automatizzate per garantire la conformità alle politiche interne. Anche le configurazioni a livello di applicazione sono gestite automaticamente e controllate tramite la revisione del codice di sicurezza e l'analisi statica.

Per l'elaborazione di XML, l'elaborazione DTD in linea viene disabilitata ove possibile, oppure vengono applicate le opportune mitigazioni ove necessario.

A06:2021

Componenti vulnerabili e obsoleti

Esaminiamo i componenti di terze parti e le loro vulnerabilità. I componenti con vulnerabilità vengono valutati e, se la vulnerabilità riguarda i nostri servizi, viene programmato un aggiornamento o una correzione in base al rischio. Nel caso di componenti open source, ciò è supportato anche dalle notifiche di GitHub relative ai componenti vulnerabili. Inoltre, eseguiamo regolarmente una scansione della rete per individuare i servizi vulnerabili nei nostri ambienti.

A07:2021

Errori di identificazione e autenticazione

Le nostre applicazioni web richiedono password forti secondo le raccomandazioni del NIST (NIST 800-63-3).

Gli account vengono bloccati per periodi di tempo esponenzialmente crescenti dopo un certo numero di tentativi di accesso non riusciti. Sia i tentativi di accesso riusciti che quelli falliti vengono registrati. Il recupero della password avviene tramite e-mail, dove vengono inviati solo i token. Le password non vengono mai inviate per e-mail. Le password nel database sono sottoposte a hash con una funzione di derivazione della chiave appropriata (non un semplice hash crittografico), utilizzando implementazioni standard e note. Ciò impedisce gli attacchi di forza bruta anche su un elenco noto di hash di password.

A08:2021

Guasti al software e all'integrità dei dati

I nostri servizi web vengono aggiornati tramite una pipeline CI affidabile e revisionata. Le vulnerabilità dei moduli di terze parti vengono controllate tramite l'automazione parzialmente fornita da GitHub. I dispositivi utilizzano aggiornamenti firmware firmati e non caricano immagini non firmate o non attendibili. Il firmware può essere firmato solo attraverso un processo rigoroso e attentamente progettato che protegge adeguatamente le chiavi di firma.

A09:2021

Registrazione e monitoraggio insufficienti

Gli eventi verificabili vengono registrati e i log vengono raccolti in un repository centrale in tempo reale. Sono disponibili tracce di audit. Abbiamo un monitoraggio delle applicazioni per rilevare le anomalie. La registrazione non include mai i segreti ed è conforme al GDPR.

A10:2021

Falsificazione della richiesta lato server

Gli sviluppatori sono consapevoli di SSRF, le revisioni del codice e la scansione statica aiutano a prevenire tali problemi. L'input dell'utente viene sanificato dove necessario per mitigare l'SSRF. Fa parte dei nostri test di penetrazione anche la verifica specifica di problemi simili.