La mitigazione dei rischi per la sicurezza della catena di fornitura del software spesso comporta l’implementazione di più livelli di sicurezza e diverse strategie. Ma uno degli approcci più efficienti per proteggere il tuo software è affrontare le possibili vulnerabilità della sicurezza durante la fase di sviluppo dell'applicazione software. Ciò rappresenta spesso una sfida poiché solo pochi modelli del ciclo di vita dello sviluppo software affrontano esplicitamente i problemi della sicurezza del software. Per mantenere il tuo software sicuro, dovrai adottare pratiche di sviluppo software sicure per qualunque modello di ciclo di vita di sviluppo software tu scelga di utilizzare.
Il Secure Software Development Framework (SSDF) delinea alcune delle pratiche fondamentali da seguire per garantire la sicurezza del software che stai creando. L'SSDF si basa su pratiche di sicurezza standard per lo sviluppo di software stabilite dal National Institute of Standards and Technology (NIST) e affronta esplicitamente i problemi di sicurezza nello sviluppo di software. La versione SSDF 1.1 è definita in NISTSP800-218 pubblicazione. Il framework è stato inizialmente pubblicato nel settembre del 2021 come a bozza versione. Il 22 marzo 2021, il NIST ha rilasciato la versione finale dell'SSDF 1.1. Tutte le pratiche e i compiti di alto livello sono rimasti gli stessi, con molte differenze incentrate sui vari esempi forniti. Nel decidere quali pratiche implementare, il NIST raccomanda di bilanciare il rischio con i costi, la fattibilità e l’applicabilità. Automatizzare il maggior numero possibile di controlli e processi che promuovono la sicurezza del software è una caratteristica fondamentale da considerare.
In qualità di organizzazione che lavora con un modello del ciclo di vita dello sviluppo software, dovresti implementare le linee guida dell'SSDF come parte degli sforzi generali per proteggere il tuo software dalle vulnerabilità della catena di fornitura del software. Seguire questo quadro aiuterà a rilevare le vulnerabilità non risolte prima che il software venga rilasciato. Ciò riduce il rischio e gli impatti di possibili sfruttamenti della sicurezza dovuti a queste vulnerabilità non rilevate. Questo articolo è una guida completa che descrive nei dettagli cos'è il framework SSDF e come contribuisce alla sicurezza della catena di fornitura del software.
Le 4 pratiche del framework di sviluppo software sicuro
Le pratiche SSDF sono raggruppate in quattro categorie. Nel framework SSDF, ogni pratica è identificata da un identificatore univoco e da una breve spiegazione su cosa è, perché è vantaggiosa e quali attività devono essere eseguite per implementarla. Il framework include anche esempi di strumenti, processi e metodi per implementare le pratiche con riferimenti a documenti consolidati sulle pratiche di sviluppo sicuro. Di seguito sono elencate le quattro pratiche pilastro del Secure Software Development Framework (SSDF) versione 1.1:
Preparare l'Organizzazione (PO)
Lo sviluppo di software sicuro dipende fortemente dalle persone. Pertanto, il primo passo nell’implementazione dell’SSDF è garantire che tutti i membri dell’organizzazione siano sufficientemente preparati per i cambiamenti che il framework richiederà. Per iniziare, devi identificare i requisiti di sicurezza specifici del software che stai sviluppando in base agli strumenti che verranno utilizzati per lo sviluppo del software. In questo modo puoi iniziare a preparare le persone, i processi e la tecnologia che utilizzano, sia a livello organizzativo che individuale.
La preparazione dell’organizzazione di solito avviene sotto forma di acquisizione del consenso da parte del top management e di implementazione della formazione necessaria per i dipendenti. Parte dei tuoi sforzi di preparazione può includere anche l'implementazione di strumenti che aiutano ad automatizzare i processi e creare un ambiente sicuro per lo sviluppo.
Proteggi il software (PS)
Il Secure Software Development Framework delinea le pratiche per proteggere tutti i componenti del software da accessi non autorizzati e manomissioni. Questo è un passaggio importante per impedire modifiche non autorizzate al codice, sia involontarie che intenzionali, e per proteggere il codice sorgente e la configurazione del software. La protezione del software può comportare approcci diversi a seconda della situazione specifica. Quando il codice non è destinato a essere accessibile al pubblico, ciò può impedire il furto del software e rendere più difficile o dispendioso in termini di tempo per gli aggressori individuare le vulnerabilità.
Seguendo le pratiche delineate in questa sezione dell'SSDF, i consumatori di software garantiscono che il software che acquisiscono è legittimo e non è stato manomesso. Inoltre, aiuta a identificare, analizzare ed eliminare le vulnerabilità nel software dopo il rilascio preservando le versioni del software.
Produrre software ben protetto (PW)
Per produrre software ben protetto con vulnerabilità di sicurezza minime, esistono passaggi fondamentali da seguire durante tutto il ciclo di vita dello sviluppo del software. Questi includono:
- Scelta di configurazioni software sicure
- Valutazione di qualsiasi componente di terze parti del software per garantirne l'integrità
- Garantire che il codice sorgente del software sia conforme alle pratiche di codifica sicura
- Revisione, analisi e test del codice per individuare eventuali vulnerabilità e risolvere eventuali problemi identificati prima che il codice venga rilasciato
- Prevenire le vulnerabilità utilizzando le funzionalità degli strumenti di creazione come compilatori e interpreti
Rispondere alle vulnerabilità (RV)
Anche dopo il rilascio del software, c'è ancora la possibilità che tu ne scopra delle vulnerabilità. I tester all'interno della tua organizzazione, i ricercatori esterni sulla sicurezza o persino i clienti potrebbero scoprire queste vulnerabilità. Una parte importante della protezione del software è rispondere rapidamente a queste vulnerabilità non appena vengono scoperte. Più a lungo si nasconde una falla nella sicurezza, maggiore è il danno che può causare. Ogni organizzazione ha bisogno di un programma di divulgazione delle vulnerabilità, così come di altre politiche, per analizzare le nuove vulnerabilità e decidere come affrontarle.
Quali sono i punti principali da considerare?
Lo scopo principale dell'SSDF è aiutare le organizzazioni ad allineare e dare priorità alla sicurezza nelle loro attività di sviluppo software. L'SSDF prende in considerazione i requisiti aziendali, la tolleranza al rischio e le risorse quando si implementa la sicurezza nel ciclo di vita dello sviluppo del software. Alcune delle considerazioni chiave di questo quadro includono:
-
Integrare la sicurezza nell'SDLC
Il primo passo nella creazione di software sicuro è integrare la sicurezza nei diversi passaggi e fasi del ciclo di vita dello sviluppo del software. In sostanza, il tuo team di sviluppo deve avere una cultura incentrata sulla sicurezza e questa deve iniziare anche nella prima fase del processo di sviluppo.
Nella maggior parte dei casi, molte delle pratiche di codifica standard introducono numerose vulnerabilità che possono essere sfruttate da soggetti malintenzionati successivamente, quando il software viene rilasciato. Questo è il motivo per cui gli sviluppatori devono pensare alla sicurezza fin dall’inizio e devono essere ben istruiti sulle strategie che aiutano a ridurre queste potenziali vie di attacco.
Oltre a pensare agli aspetti umani della protezione del software, dovresti anche considerare di automatizzare il processo di test e monitoraggio del software per potenziali vulnerabilità fin dall'inizio.
-
Politica di sviluppo software sicura
Una politica di sviluppo software sicuro è un insieme formale di linee guida che descrivono in dettaglio le pratiche e le procedure seguite dall'organizzazione per lo sviluppo software sicuro. Questo documento di policy contiene istruzioni dettagliate per le persone, la tecnologia e i processi che segui per ogni fase del ciclo di vita dello sviluppo.
Una politica di sviluppo software sicuro è più di una semplice raccomandazione per aumentare l'integrità del software. In alcuni casi è addirittura obbligatorio. Ad esempio, se il tuo software deve soddisfare standard di sicurezza come ISO 27001 o SOC Tipo 2, allora avrai bisogno di documentazione sulla politica di sviluppo sicura. Fortunatamente, ci sono guide sui modelli che puoi adottare per questo scopo. Il tuo team di sicurezza software può anche creare da zero la documentazione della policy e adattarla alle tue esigenze specifiche.
-
Fornitori di terze parti
Non è sufficiente scrivere codice sicuro e seguire i requisiti di sicurezza internamente. La maggior parte del software utilizza ancora componenti di fornitori di terze parti che potrebbero non seguire i tuoi stessi standard di sicurezza. Questi componenti di codice di terze parti sono percorsi comuni attraverso i quali attacchi alla catena di fornitura del software vengono effettuati.
Nell'ambito degli sforzi volti a garantire la conformità della sicurezza durante l'intero ciclo di vita dello sviluppo del software, dovresti monitorare tutti i componenti di terze parti che utilizzi e assicurarti che i fornitori siano pienamente consapevoli dei tuoi requisiti di sicurezza e siano pienamente conformi ai tuoi stessi standard di sicurezza.
-
Protezione dell'integrità del codice
Il codice del tuo software e tutti i suoi componenti sono potenziali punti di attacco che gli autori malintenzionati possono sfruttare per inserire vulnerabilità nel tuo software. Per evitare ciò, tutti i codici dovrebbero essere conservati in archivi protetti quando sono al sicuro da qualsiasi forma di manomissione.
Parte degli sforzi per mantenere l'integrità del codice includono la garanzia che solo gli sviluppatori autorizzati abbiano accesso al codice sorgente. Il repository di codice che hai scelto dovrebbe avere funzionalità per garantire ciò, nonché funzionalità aggiuntive per proteggere il processo di accesso e monitorare eventuali modifiche che potrebbero essere apportate al tuo codice. Puoi migliorare ulteriormente l'integrità del codice utilizzando l'automazione per monitorare i dati di accesso ed eseguire analisi periodiche del codice.
-
Malware preinstallato
Un percorso comune per gli attacchi alla catena di fornitura del software è nascondere le vulnerabilità della sicurezza nel malware preinstallato. Potrebbe trattarsi di un virus, un ransomware, un cavallo di Troia o uno spyware in grado di provocare danni al tuo software. Il malware potrebbe essere preinstallato sui dispositivi o sul software attendibile utilizzato nel processo di creazione del software o anche sul sistema di un fornitore di terze parti. Questo malware potrebbe rimanere nascosto per molto tempo finché un processo legittimo e firmato digitalmente non gli consentirà di diffondersi nel tuo sistema. Proteggere lo sviluppo del software implica prestare attenzione a questo malware preinstallato e adottare misure per identificarlo e rimuoverlo.
-
Test del codice, revisione e liste di controllo
L'approccio tradizionale allo sviluppo del software solitamente lascia il test del codice alla fine del ciclo di vita dello sviluppo del software. Tuttavia, questo approccio reattivo per individuare le vulnerabilità del software non è molto efficace. Un approccio più efficiente consiste nell'impostare test automatizzati per individuare continuamente i difetti nel codice durante la creazione. Gli sviluppatori dovrebbero anche rivedere e controllare manualmente il proprio codice per evitare frustrazioni quando vengono scoperti difetti in seguito.
Poiché ci sono numerose parti e componenti da tenere traccia, è opportuno creare elenchi di controllo durante la costruzione. Ciò aiuta il team di sviluppo e monitoraggio del software a garantire che tutte le azioni stabilite nelle politiche SSDF siano debitamente rispettate.
-
Mitigazione delle vulnerabilità
Nonostante il rispetto della SSDF e di altri standard di sicurezza, le vulnerabilità sono praticamente inevitabili nello sviluppo del software. La cosa più importante è essere pronti a mitigare queste vulnerabilità quando si verificano. Ciò significherebbe disporre di un team con piani e strategie chiaramente definiti per affrontare gli incidenti di sicurezza non appena si verificano.
La rapidità con cui la tua organizzazione può rispondere alle vulnerabilità della sicurezza farà un'enorme differenza nel ridurre gli impatti negativi di tali attacchi. Quando i difetti del software vengono individuati e risolti rapidamente, gli autori malintenzionati avranno una finestra più breve per sfruttarli. Pertanto, la mitigazione delle vulnerabilità è un aspetto importante dello sviluppo di software sicuro a cui ogni organizzazione deve prestare attenzione.
-
Impostazioni predefinite sicure
Il tuo nuovo software dovrebbe avere impostazioni di sicurezza predefinite che aiutano a proteggere gli utenti dalle vulnerabilità del software anche senza conoscenze avanzate. Puoi anche implementare misure che istruiscano gli utenti su queste impostazioni predefinite per mantenerli protetti anche nelle prime fasi di adozione del software.
Conclusione
Il Secure Software Development Framework (SSDF) è un insieme di pratiche avanzate che dovrebbero essere integrate nel ciclo di vita dello sviluppo software di ogni organizzazione. Seguendo le pratiche stabilite in questo framework nelle prime fasi del processo di sviluppo, è possibile ridurre i difetti di sicurezza nella versione del software che verrà eventualmente rilasciata. L'SSDF ti aiuta inoltre a rilevare i rischi per la sicurezza e riduce il potenziale impatto delle vulnerabilità non rilevate che arrivano alla versione finale. Questo quadro è fondamentale per evitare che tali problemi di sicurezza si ripetano in futuro.