La pervasività delle applicazioni rende critica l’adozione di un processo di sviluppo sicuro del software per proteggere i dati e limitare le vulnerabilità come vettori d’attacco all’integrità dell’infrastruttura digitale
Garantire la fruizione di applicazioni software scritte in modo sicuro, ovvero limitando al massimo la presenza di vulnerabilità indotte dal codice sorgente utilizzato per la loro creazione è un tema relativamente poco conosciuto. Generalmente, le buone pratiche non vengono insegnate nei percorsi di formazione professionale seguiti dagli sviluppatori software. Inoltre, nelle diverse fasi di design e realizzazione delle applicazioni non vengono sufficientemente approfonditi i requisiti di sicurezza, spesso per mancanze dovute ai committenti. A questo si può aggiungere anche la diffusa necessità di anticipare i rilasci del software, rinunciando ad alcune fasi di testing, per mantenere il vantaggio competitivo rispetto alla concorrenza.
Tali circostanze spianano la strada allo sfruttamento delle vulnerabilità del software che nel corso degli ultimi anni ha costituito un importante vettore d’attacco. Le problematiche evidenziate possono essere indirizzate efficacemente adottando un programma che indirizzi la sicurezza sin dalle prime fasi di progettazione dell’applicazione software. Il Secure Software Development Life Cycle (SSDLC) è un processo che guida lo sviluppo di software in modo sicuro, integrando pratiche di sicurezza in ogni fase del ciclo di vita dell’applicazione. In questo processo gli attori coinvolti sono essenzialmente tre: il cliente, ovvero il soggetto che utilizza il software; il fornitore, che può ricadere nell’area organizzativa del cliente nel caso di servizio interno; il l team operativo di sviluppo, che può essere interno o esterno. A fronte della presentazione delle specifiche, il fornitore provvede a progettare le fasi di sviluppo tenendo conto in via preliminare dei modelli di minaccia e di tutto quello che potrebbe pregiudicare la sicurezza del prodotto.
Il team di sviluppo appronta la SBOM – Software Bill Of Materials – per comprendere fin da subito se e quali componenti esterni, che potrebbero introdurre delle vulnerabilità, verranno impiegati nel progetto, poi ha inizio la fase di scrittura del codice software. Una volta completata questa fase è opportuno che un team separato, al quale vengono attribuite le responsabilità delle attività di testing, provveda ad effettuare, tramite specifici tool automatici, l’analisi statica del codice SAST (Static Application Security Testing).
Nel caso di presenza di vulnerabilità sarà necessario correggerle rapidamente per poi passare alla fase build del software, verificarne l’esecuzione nell’ambiente di test mediante dei tool DAST (Dynamic Application Security Testing), prima della validazione finale del livello di sicurezza, generalmente effettuata da un gruppo di ethical hacker, attraverso un approfondito penetration test. Il prodotto verrà poi firmato digitalmente, a garanzia della sua provenienza e integrità, per poi essere trasferito in modo sicuro e rilasciato nell’ambiente di test del cliente. A questo punto, sarà responsabilità del cliente seguire le indicazioni di installazione e configurazione sicura suggerite dal fornitore, validandone a sua volta la sicurezza prima di metterlo in esercizio.
Nelle attività di manutenzione operativa il cliente dovrà occuparsi di installare le patch di sicurezza rilasciate dal fornitore e verificare periodicamente che il livello di sicurezza raggiunto venga sempre garantito. Nel caso in cui venissero rilevate delle problematiche, il cliente informerà tempestivamente il fornitore in modo da ottenerne il supporto finalizzato alla risoluzione della vulnerabilità riscontrata. I vantaggi della applicazione del principio Security by Design sono riconducibili all’adozione di buone prassi da parte delle organizzazioni, migliorando il profilo qualitativo rappresentando un importante valore aggiunto oltre ad arricchire le competenze dei team di sviluppo.
Roberto Obialero Consiglio Direttivo CLUSIT