Cos’è la carena di fornitura de software e quanto è importante in termini di sicurezza e di prevenzione di eventuali attacchi informatici.
La sicurezza nella catena di fornitura del software riguarda tutte le componenti, i processi e le pratiche che influenzano la sicurezza di un prodotto software o di un’applicazione lungo il suo ciclo di vita di sviluppo (SDLC).
Cos’è la sicurezza nella catena di fornitura del software
La crescente incidenza e sofisticatezza degli attacchi alla catena di fornitura software negli ultimi anni ha messo in allerta il settore. Secondo un report di Gartner del 2022, è previsto un incremento della superficie di attacco nelle aziende, che dovrebbe spingere verso un aumento degli investimenti in strumenti e processi per identificare e mitigare le minacce alla sicurezza dell’identità e all’integrità della catena di fornitura digitale.
Oggi più che mai, è fondamentale assicurare la protezione di tutti i componenti, le procedure e le attività SDLC implicate nello sviluppo e nella distribuzione del software. Gli sviluppatori e i fornitori di software devono impegnarsi ad utilizzare componenti codice esenti da vulnerabilità note e adottare strategie efficaci per garantire l’integrità delle loro build, prevenendo così manomissioni non autorizzate.
Una panoramica del processo
La sicurezza della catena di fornitura del software abbraccia l’insieme di attività, processi e componenti coinvolti nell’iter di sviluppo e distribuzione di un’applicazione, attraverso tutte le fasi del suo ciclo di vita (SDLC).
Questo ambito richiede una rigorosa tutela di diversi elementi critici, quali il codice su misura, le dipendenze e le librerie di terze parti, gli strumenti e le infrastrutture DevOps che facilitano il processo di integrazione e distribuzione continua (CI/CD), oltre alle equipe di sviluppatori e specialisti DevOps.
Le organizzazioni hanno il compito di attuare strategie di sicurezza efficaci e di dimostrare agli utenti la solidità delle loro pratiche di sicurezza, sottolineando l’importanza di un approccio proattivo e trasparente nella protezione della catena di fornitura del software.
Perché gli attacchi alle catene di fornitura del software sono così diffusi?
Le pipeline di sviluppo software moderne sono complesse e automatizzate, integrate da un’ampia gamma di strumenti per l’integrazione continua (CI) e la distribuzione continua (CD), facendo spesso affidamento su migliaia di componenti open source. Questa complessità e apertura possono diventare punti di ingresso per gli attacchi.
I malintenzionati hanno la capacità di mascherare librerie nocive come legittime, sfruttando vulnerabilità nei gestori di pacchetti open source attraverso “difetti logici“. Un esempio di ciò è l’attribuzione di pacchetti malevoli a manutentori di fiducia senza il loro consenso, introducendo così vulnerabilità occulte che possono esporre dati sensibili o facilitare l’installazione di malware lungo l’intera catena di fornitura.
Inoltre, l’ambiente di sviluppo software attuale è intrinsecamente vulnerabile, e numerosi attacchi mirano alle pipeline CI/CD per immettere codice malevolo in varie fasi del processo di sviluppo. Adottare un approccio di zero trust, che implica la verifica e la convalida rigorose di ogni passaggio dello sviluppo, diventa cruciale per mantenere l’integrità del prodotto software.
Le attuali pipeline CI/CD soffrono di una mancanza di visibilità e controllo adeguate per salvaguardare il processo di sviluppo del software in modo efficace. La difficoltà nel rilevare alterazioni del codice rende gli attacchi alla catena di fornitura ancora più pericolosi e attraenti per i cybercriminali.
Il Framework per lo Sviluppo Sicuro del Software (SSDF, NIST 800-218) è attivo, stabilendo standard per i fornitori di software al fine di adottare pratiche di sicurezza lungo l’intero ciclo di vita dello sviluppo del software (SDLC). Questo quadro promuove la trasparenza e adotta misure contro la manomissione per minimizzare le vulnerabilità di sicurezza e prevenire attacchi dannosi, ponendo l’accento su un approccio basato sull’evidenza per la salvaguardia del software.
Come è suddiviso l’SSDF
Preparare l’organizzazione (PO): questa sezione si concentra sulla preparazione del personale e sull’implementazione di processi e tecnologie necessarie per supportare lo sviluppo sicuro del software a livello organizzativo e, dove necessario, a livello di singoli progetti o team.
Proteggere il software (PS): riguarda la protezione dei componenti software da accessi e manomissioni non autorizzati.
Produrre software ben protetto (PW): questo principio guida alla produzione di software con il minor numero possibile di vulnerabilità di sicurezza nelle sue release.
Rispondere alle vulnerabilità (RV): enfatizza l’importanza di identificare le vulnerabilità software esistenti, intervenire adeguatamente per mitigarle e prevenire la ripetizione di vulnerabilità simili in futuro.
Piuttosto che vedere l’SSDF come un semplice elenco di controllo, è essenziale trattarlo come un riferimento per progettare e realizzare un processo di sviluppo del software che sia sia sicuro che basato sul rischio e sull’evidenza. Le organizzazioni sono incoraggiate a integrare queste pratiche per rafforzare la loro sicurezza software, adattandosi così meglio ai continui cambiamenti normativi e alle esigenze di sicurezza.
Il framework SLSA (Supply-chain Levels for Software Artifacts), creato da Google, stabilisce un modello di sicurezza per la catena di fornitura del software articolato su quattro livelli di integrità, mirando a salvaguardare gli artefatti software dalla manomissione e a garantirne la protezione. Questo sistema propone una serie progressiva di standard di sicurezza e pratiche di verifica, aumentando in rigore con ogni livello raggiunto.
Nel dettaglio, SLSA guida l’implementazione di misure di sicurezza specifiche all’interno della pipeline di sviluppo software, estendendosi ad diversi ambiti quali la gestione del codice sorgente, i processi di build e la gestione delle dipendenze. L’obiettivo è raggiungere il quarto livello, il più elevato, che si traduce nel grado massimo di sicurezza ma comporta anche l’adozione di un insieme più ampio di requisiti.
Strategie per la protezione della catena di fornitura del software
Nell’ambito della sicurezza della catena di fornitura del software, diversi framework delineano principi fondamentali che meritano attenzione. Emerge l’importanza di tre categorie principali di controlli di sicurezza:
Sicurezza nella configurazione del ciclo di vita dello sviluppo software (SDLC): Le credenziali a rischio, la gestione inadeguata delle autorizzazioni e le vulnerabilità dei sistemi di build espongono i produttori di software a attacchi esterni. I malintenzionati possono sfruttare queste debolezze per sottrarre dati sensibili o alterare artefatti software. Una varietà di soluzioni, sia commerciali che open source, può aiutare a identificare e mitigare le vulnerabilità esistenti nel panorama di sicurezza attuale.
Prevenzione dell’utilizzo di dipendenze vulnerabili o nocive: è inevitabile che vengano scoperte nuove vulnerabilità nei componenti software, sia open source che commerciali. Per contrastare questa minaccia, i produttori di software devono attuare misure preventive come l’aggiornamento dei componenti vulnerabili e l’analisi delle vulnerabilità nel proprio codice proprietario. È essenziale anche informare gli utenti finali tramite la distribuzione di una distinta base del software (SBOM) che evidenzi queste dipendenze e le relative implicazioni di sicurezza. Questa pratica permette ai consumatori di adottare le dovute precauzioni.
Convalida dell’integrità e sicurezza degli artefatti software: un approccio difensivo multilivello è fondamentale in cybersecurity. I tradizionali metodi basati su prevenzione, rilevazione e reputazione possono non rivelarsi sufficienti, lasciando i consumatori di software a valle con limitate opzioni di verifica. Tuttavia, sta emergendo una nuova categoria di controlli che fornisce attestazioni continue dell’integrità di ogni artefatto e del processo di sviluppo sicuro. Queste attestazioni, sicure e condivisibili tra produttori e consumatori, rafforzano la fiducia nell’integrità degli artefatti, ricorrendo a metodi crittografici per garantire l’inalterabilità e complicare l’ingresso di attori malevoli nella catena di fornitura.