I cybercriminali sfruttano le vulnerabilità del software per sferrare attacchi sempre più pericolosi verso le aziende: è importante fare della sicurezza informatica il pilastro della propria strategia di sviluppo
Autore: Luca Nilo Livrieri
In un contesto nel quale i cybercriminali sfruttano le vulnerabilità del software per sferrare attacchi sempre più pericolosi verso le aziende e in cui aumenta la domanda di servizi e infrastrutture cloud, che velocizzano la capacità di messa in produzione delle applicazioni, è importante fare della sicurezza informatica il pilastro della propria strategia di sviluppo software. Le pipeline di integrazione e distribuzione continua (CI/CD) possono infatti rappresentare un potenziale punto di attacco per i criminali informatici.
In molti ritengono che la risposta a questo scenario sia l’approccio denominato shit-left alla sicurezza del codice. Un approccio che inizia nella fase in cui i team DevOps iniziano a sviluppare l'applicazione e a fare il provisioning dell'infrastruttura, per consentire di identificare e correggere i difetti del software sin dal primo momento. Questo è ciò su cui si basa la logica DevSecOps.
In un contesto di sicurezza shift-left, le organizzazioni possono identificare le configurazioni errate e altri potenziali rischi che minacciano la sicurezza aziendale ancor prima che abbiano un impatto sugli utenti. Considerato il ruolo che il cloud computing svolge nell’abilitare il DevOps, la protezione degli ambienti e dei workload in cloud assume un ruolo sempre più importante nella difesa della pipeline CI/CD, delle applicazioni e, in ultima analisi, dei clienti.
CrowdStrike delinea cinque elementi chiave che i team DevOps dovrebbero prendere in considerazione in un approccio alla sicurezza di tipo shift-left perché il codice sia rispondente ai requisiti, performante, robusto e sicuro.
La shift-left security è un cambiamento culturale. Oltre a mettere in atto processi e strumenti adeguati, le organizzazioni devono ripensare il modo in cui operano per portare i processi, gli strumenti e le competenze di testing del software all'inizio della pipeline di integrazione continua e distribuzione continua delle applicazioni (CI/CD).
La logica DevSecOps non consiste semplicemente nel far ricadere le responsabilità della sicurezza sugli sviluppatori, ma nel cambiare i ruoli e le aspettative, in combinazione con i giusti strumenti, per raggiungere un equilibrio nello sviluppo. La sicurezza deve essere una priorità fin dall'inizio, non un ripensamento alla fine del ciclo di vita dello sviluppo del software.
È necessario effettuare test fin dall’inizio e di frequente. Con il code testing automatico, gli sviluppatori vengono immediatamente avvisati dei problemi di sicurezza riscontrati, così da poterli correggere molto prima che il software vada in produzione. Gli strumenti automatizzati per la scansione delle vulnerabilità riducono le possibilità di errore umano che i test manuali possono causare e ampliano la copertura per consentire di controllare una porzione maggiore del software. Il codice viene analizzato in modo incrementale, affinchè alla fine del ciclo di vita dello sviluppo il software rimasto da esaminare sia ridotto.
Una strategia shift-left comporta l'inserimento di uno o più strumenti nella pipeline CI/CD per cercare le vulnerabilità note e identificare altri problemi. Esistono molti strumenti tra cui scegliere: quelli comunemente utilizzati sono Static Application System Testing (SAST), Dynamic Application Security Testing (DAST), Interactive Application Security Testing (IAST), Secret Detection e Software Composition Analysis (SCA). Prima di decidere quali nuovi strumenti introdurre nei processi, è importante valutare gli strumenti di cui si dispone.
Sebbene i test automatizzati siano un must della metodologia DevSecOps, l'automazione da sola può non essere sufficiente a individuare potenziali problemi. Una valutazione manuale della sicurezza, come un penetration test, verifica la sicurezza di un'applicazione simulando attacchi informatici. Questo test aggiuntivo riduce al minimo il rischio e può rilevare problemi che un test automatico non riuscirebbe ad individuare.
È importante ricorrere quindi all’aiuto di esperti in sicurezza informatica che esaminino il software ed eseguano un penetration test per assicurarsi che tutti i potenziali problemi siano mitigati. È consigliabile svolgere qualche test supplementare piuttosto che scoprire una vulnerabilità dopo che un aggressore l'ha sfruttata.
Lavorare con software aggiornati è un principio fondamentale della sicurezza informatica. Gli sviluppatori devono prestare attenzione a mantenere tutto il loro software - sistemi operativi, framework applicativo, librerie di terze parti - aggiornato alle ultime versioni per garantire che anche tutte le patch di sicurezza siano aggiornate. Scaricare regolarmente gli aggiornamenti del software - forniti da un provider o dalla comunità open source - è una delle prassi più importanti da compiere per rafforzare la sicurezza delle applicazioni.
Gli sviluppatori non sono esperti in sicurezza, ma hanno un ruolo fondamentale nella produzione di applicazioni sicure e dovrebbero conoscere le basi della programmazione e dei test sicuri. Con l'aumento della domanda di software, è importante effettuare una formazione costante e continua sulla sicurezza, adattata al ruolo e alle esigenze specifiche. Una formazione e un'assistenza adeguate possono fornire le informazioni di base necessarie per sviluppare un codice funzionale e sicuro.
Quando si parla di sicurezza del software non esiste una soluzione in grado di garantire che il codice sia sicuro e rimanga tale, ma implementare solide pratiche e un approccio shift-left alla sicurezza consente di aumentare la probabilità che i difetti del software vengano individuati e corretti prima del deployment delle applicazioni.
Luca Nilo Livrieri è Senior Manager, Sales Engineering for Southern Europe, CrowdStrike