La dipendenza del business dai sistemi digitali e il rischio crescente di subire attacchi di cyber security rendono oggi urgente preoccuparsi congiuntamente della solidità delle applicazioni, degli ambienti di produzione e delle supply chain software.
“Parliamo di vulnerabilità che l’intera supply chain IT eredita dalle componenti in uso, sia frutto di sviluppo in proprio sia di terze parti, a causa delle dipendenze con altre applicazioni, servizi esterni, componenti open source e librerie.” precisa Paolo Mainardi, CTO di SparkFabrik, che aggiunge: “Basti pensare che solo il 20% del software applicativo è oggi sviluppato da zero, mentre il resto è costituito da componenti e librerie acquisite”.
Si tratta di software che devono rispettare le esigenze del time-to-market e che dovrebbero essere progettati per resistere agli attacchi, sia quando girano sui server interni al perimetro aziendale sia su servizi in cloud accessibili via Internet. Un compito che richiede specifiche competenze da parte dei team di sviluppo e operation IT unitamente a metodi di lavoro e strumenti in grado di migliorare la gestione del ciclo di vita del software oltre ai processi di aggiornamento e deploy.
Vediamo insieme che cosa è importante per poter contare su una supply chain software più efficiente e sicura nei confronti delle minacce di cybersecurity.
Indice degli argomenti
DevSecOps per migliorare la qualità e la sicurezza intrinseca del software
Lo sviluppo di codice applicativo più sicuro richiede metodo, “approcci come DevSecOps, che consentono di disegnare e rilasciare software in modo rapido ed efficiente, eliminando le rigidità delle filiere dello sviluppo e della gestione IT.” spiega Mainardi. “Una supply chain software veloce ed efficiente comprime i tempi necessari per i test e accorcia i tempi degli aggiornamenti alla scoperta di nuove vulnerabilità”.
In particolare, l’approccio DevSecOps (Development, Security e Operation) integra la sicurezza all’interno del ciclo di sviluppo e di gestione operativa. Questa metodologia mette a fattor comune le competenze dei differenti team tecnici e collega i diversi processi su un’unica catena di montaggio il più possibile automatizzata, attraverso integrazioni tra i tool utilizzati per scrivere codice, testarlo, fare provisioning dei servizi IT e rilasciare il software in produzione.
Con l’integrazione di strumenti SAST (Static Application Security Testing) e DAST (Dynamic Application Security Testing) nella toolchain, i programmatori ottengono feedback immediato sui problemi del codice: “Aspetto che permette ai team di far proprie le best practice e le competenze per il rilascio di codice più sicuro by design”, evidenzia Mainardi. La scoperta tempestiva dei problemi evita che il codice difettoso o vulnerabile vada avanti nella catena di produzione, condizione che renderebbe più difficile e costoso porvi rimedio.
L’eliminazione dei passaggi di consegne tra i team evita il generarsi di errori umani nel trasferimento delle specifiche e dei requisiti, ma soprattutto velocizza la produzione del software garantendo il time-to-market dei rilasci e gli aggiornamenti richiesti dalle esigenze di cyber security.
L’automazione nel delivery per velocizzare rilasci e aggiornamenti
Un aspetto centrale per la sicurezza è dunque la tempestività dei delivery e delle capacità d’intervento a livello delle operation IT, ambito oggi rivoluzionato dalle tecnologie software defined (SD) per il provisioning di risorse infrastrutturali sia nel data center sia tra i servizi IaaS (Infrastructure as-a-Service) erogati dai fornitori di cloud. Con l’automazione diventa più facile mandare in produzione gli aggiornamenti software per chiudere falle di sicurezza, intervenire sui runtime per impedire gli exploit, ridurre gli errori di configurazione che aprono falle pericolose.
Un importante strumento d’automazione dei deploy è la containerizzazione del software, ossia l’incapsulamento del codice applicativo all’interno di strutture logiche standard che, in modo simile ai container nei trasporti, consentono di spostare applicazioni e dati tra sistemi diversi, per esempio, tra data center e servizi in cloud per ottenere maggiori prestazioni o differenti livelli di sicurezza.
Con Docker e con la diffusione di, rispettivamente struttura container standard e orchestratore open source, lo spostamento dei carichi IT e la gestione dei servizi applicativi avvengono con più alto livello d’astrazione e in modalità che non differiscono a seconda dell’applicazione o dell’hardware ospitante.
La standardizzazione delle operation IT e la traduzione come codice delle più complesse configurazioni rendono semplice per i team IT garantire le prestazioni e la continuità operativa in caso d’attacco, sia operando direttamente su console sia sfruttando l’automazione. Con tool specifici per Kubernetes, il team IT dispone della massima trasparenza sullo stato d’uso delle risorse e la capacità di spostare i workload applicativi per disaster recovery e risolvere le emergenze di security.
Capire e affrontare rischi di una supply chain software più complessa
“La traduzione dell’infrastruttura sotto forma di codice consente livelli senza precedenti di efficienza e governance sull’IT. Permette di riprodurre infrastrutture in modo ripetibile, aggiornarne le versioni come si fa per il software, creare ambienti di test molto più facilmente”, spiega Mainardi precisando però anche le nuove situazioni di rischio che vanno a delinearsi.
“Il provisioning di risorse tramite pacchetti ed estensioni riusabili per tool come Terrafom ripropone anche nell’ambito infrastrutturale la questione delle vulnerabilità acquisite attraverso dipendenze; problema che si estende in modo simile alla gestione del software in container attraverso moduli reperiti in rete come open source”.
Tra gli strumenti per garantire sicurezza nelle distribuzioni software open-source segnaliamo sigstore che mette insieme le tecnologie Fulcio, Cosign and Rekor per la gestione della firma digitale, riducendo le complessità e i rischi d’errore. Si aggiunge a Deps.dev, un servizio via (Application Programming Interface) ospitato da Google che consente agli sviluppatori l’accesso alle informazioni relative a dipendenze, licenze, bollettini e sicurezza su oltre 50 milioni di package open source.
In sintesi: metodi e soluzioni per affrontare i nuovi rischi
Per realizzare software più sicuro è importante sfruttare metodologie aggiornate e predisporre una supply chain del software più efficiente e veloce nello scambio delle informazioni, in grado di aiutare la condivisione delle competenze tra i team che si occupano di sicurezza, sviluppo e operation.
L’automazione della filiera con metodologia DevSecOps permette di tenere alta l’attenzione sulla qualità dello sviluppo e sulla security, favorendo migrazioni senza rischi verso le architetture software di nuova generazione basate sul cloud.
Containerizzazione del software e Kubernetes consentono semplicità di gestione IT e automazione dei deploy applicativi a vantaggio della velocità d’aggiornamento e delle attività di test e staging, in cui possono essere evidenziate ed eliminate vulnerabilità pericolose, prima della messa in produzione. “Va tuttavia considerato che anche le infrastrutture definite come codice (IaC), al pari del software applicativo, necessitano d’attenzione sotto il profilo della sicurezza. Anch’esse devono essere difese dagli attacchi, con i mezzi di rilevazione e le tecniche più appropriate”, spiega Mainardi.
Un compito che va affidato a pratiche di trasparenza dei codici usati da parte dei team IT e tool efficaci per l’analisi della software composition (SCA), l’analisi delle immagini dei container, del controllo di versione (VCS) sul codice sorgente negli ambiti d’infrastructure as-a-code. Completa il quadro l’uso di specifici tool progettati per le applicazioni cloud native (Cloud Native Application Protection Platforms – CNAPP) pensate per fare analisi del codice e bloccare le minacce degli ambienti applicativi che girano in cloud.
Contributo editoriale sviluppato in collaborazione con SparkFabrik