Nel mondo della cybersecurity, “Secure by Design” si è affermato come una filosofia essenziale per garantire che una sicurezza solida sia un obiettivo centrale in ogni fase dello sviluppo software. I prodotti implementano la sicurezza come elemento fondante, non come un ripensamento, con strategie di sicurezza e best practice integrate e testate in ogni fase per garantire che i sistemi riducano al minimo le vulnerabilità e resistano agli attacchi.
Il gergo IT spiegato
Che cos’è Secure by Design?
Cosa significa essere Secure by Design
Secure by Design va ben oltre gli standard di settore proposti in precedenza, con un intento chiaro: proteggere clienti e pubblico riducendo al minimo le falle sfruttabili prima che i prodotti arrivino sul mercato. Le aziende che adottano questi principi si concentrano su test, misure di protezione per l’autenticazione e conformità alle migliori pratiche di programmazione, creando soluzioni software e hardware robuste e resilienti.
I leader di settore, guidati dalle organizzazioni che hanno sottoscritto il pledge Secure by Design della U.S. Cybersecurity and Infrastructure Security Agency (CISA), stanno dando priorità ai principi Secure by Design per rendere la cybersecurity più proattiva ed efficace, ottenendo infrastrutture e applicazioni più sicure. Questo non solo soddisfa i requisiti normativi, ma rafforza anche la fiducia degli utenti, favorendo un ambiente digitale più sicuro per tutti.
Correlato: Il pledge Secure by Design: un impegno per creare un futuro digitale più sicuro
Diversi organismi di settore e agenzie governative hanno pubblicato linee guida e best practice che promuovono metodologie di sviluppo software sicuro. Spesso mettono in evidenza principi in linea con i concetti di Secure by Design.
L’esempio recente più rilevante è la pubblicazione, nell’aprile 2023, da parte del National Institute of Standards and Technology (NIST) e di altre agenzie statunitensi di un documento guida congiunto intitolato “Shifting the Balance of Cybersecurity Risk: Principles and Approaches for Secure by Design Software”, che ha posto l’accento sulla crescente importanza dei principi Secure by Design nello sviluppo software.
Sebbene Secure by Design sia volontario per la maggior parte delle imprese statunitensi, i contractor federali o le aziende di altri Paesi sono spesso tenuti a rispettare linee guida di cybersecurity, garantendo che i prodotti supportino la sicurezza delle infrastrutture critiche. Tali normative e linee guida facilitano inoltre iniziative coordinate tra partner internazionali per creare un ambiente cyber globale più sicuro.
Il pledge Secure by Design
Il pledge è un impegno volontario lanciato dalla CISA, volto a incoraggiare i produttori di software a porre l’accento sulla sicurezza durante l’intero ciclo di vita dello sviluppo dei loro prodotti e servizi software. I suoi aspetti principali includono:
Pubblico di riferimento
Il pledge si rivolge alle aziende che creano software enterprise, incluse soluzioni on-premise, servizi cloud e offerte SaaS. Sebbene non siano menzionate direttamente, anche le aziende che realizzano prodotti fisici, come dispositivi IoT, sono incoraggiate a dimostrare il proprio impegno verso i principi di progettazione sicura.
Focus su azioni misurabili
Il pledge incoraggia i firmatari a impegnarsi in azioni specifiche e misurabili, allineate ai principi Secure by Design, da implementare entro un anno dalla firma.
Obiettivi principali
Il pledge delinea sette aree principali in cui i produttori di software possono dimostrare il proprio impegno verso Secure by Design:
- Aumentare l’uso dell’autenticazione a più fattori (MFA) nei propri prodotti.
- Ridurre la dipendenza dalle password predefinite e promuovere pratiche efficaci di gestione delle password.
- Implementare strategie per ridurre al minimo intere classi di vulnerabilità all’interno del software.
- Incoraggiare l’installazione tempestiva delle patch di sicurezza da parte dei clienti.
- Definire una policy chiara e completa per la divulgazione delle vulnerabilità.
- Fornire informazioni dettagliate sulle vulnerabilità identificate (CVE) per agevolarne la correzione.
- Implementare meccanismi per rilevare e rispondere a potenziali incidenti di sicurezza all’interno del software.
Trasparenza e rendicontazione dei progressi
Ci si aspetta che i firmatari condividano pubblicamente i progressi compiuti rispetto agli obiettivi, aumentando trasparenza e responsabilità nel settore.
Principi di Secure by Design
I principi Secure by Design hanno lo scopo di fornire indicazioni chiare ai fornitori di software che desiderano rafforzare la sicurezza.
Privilegio minimo
Questo principio garantisce che utenti e sistemi dispongano solo dell’accesso necessario per i rispettivi ruoli, limitando i danni derivanti da minacce o errori grazie alla riduzione della superficie di attacco e dei rischi di accesso non autorizzato ai dati. La sua implementazione prevede un controllo degli accessi rigoroso e aggiornamenti periodici basati sui ruoli, rafforzando la sicurezza contro le minacce informatiche.
Separazione delle responsabilità
Le responsabilità vengono distribuite tra più soggetti o sistemi, riducendo la probabilità di frodi, errori e abuso dei privilegi, impedendo che una singola entità controlli un processo cruciale.
In un ciclo di vita dello sviluppo sicuro, ruoli come sviluppo, testing e deployment sono suddivisi tra team diversi, assicurando che nessun singolo individuo possa modificare il sistema senza essere rilevato. Inoltre, vengono inclusi controlli automatizzati per mantenere questo principio.
Difesa in profondità
Questo approccio utilizza più livelli di sicurezza per proteggere gli asset, riconoscendo che nessuna difesa singola è completamente infallibile. Integra misure di protezione diverse, come firewall, sistemi di rilevamento delle intrusioni e audit di sicurezza periodici su hardware, software e procedure.
Affrontando diverse tipologie di minacce e aggiungendo più ostacoli per gli intrusi, questo metodo riduce in modo significativo le vulnerabilità e rafforza il framework di sicurezza delle organizzazioni.
Vantaggi della partecipazione a Secure by Design
Per i fornitori di software che decidono di aderire al pledge Secure by Design sono previsti diversi vantaggi:
- Dimostra l’impegno per la sicurezza: Sottoscrivere pubblicamente il pledge segnala la dedizione di un’azienda alle pratiche di sviluppo software sicuro. Questo può migliorare la reputazione del brand e rafforzare la fiducia dei potenziali clienti.
- Focus su una sicurezza misurabile: Il pledge incoraggia un approccio alla sicurezza orientato ai risultati, promuovendo azioni concrete che migliorano in modo dimostrabile la postura di sicurezza dei prodotti software.
- Collaborazione e condivisione delle conoscenze: Il pledge può favorire la collaborazione e la condivisione delle conoscenze tra gli operatori del settore, portando a un miglioramento collettivo delle pratiche di sviluppo software sicuro.
Anche clienti e utenti ne traggono vantaggio. Quando un fornitore di software offre soluzioni e piattaforme che seguono i principi Secure by Design, i vantaggi più importanti sono quelli vissuti dal cliente:
- Protezione migliorata: Integrare funzionalità di sicurezza nel software fin dall’inizio lo rende più robusto e meno vulnerabile, garantendo anche la sicurezza della rete su cui viene eseguito e contribuendo a rafforzarla.
- DEX migliorata: Una maggiore attenzione a sicurezza e test durante lo sviluppo può portare a un prodotto più ottimizzato, stabile e resistente alle interruzioni, migliorando la digital employee experience.
- ROI migliore: Un prodotto più sicuro può ridurre i tempi di inattività e la necessità di applicare patch, consentendo agli utenti di rimanere produttivi.
- Compliance semplificata: Rispettare normative rigorose in materia di privacy dei dati e sicurezza è più semplice con software Secure by Design, riducendo il tempo e le risorse necessari per i controlli di conformità ed evitando sanzioni.
- Reputazione rafforzata: Le aziende che danno priorità alla sicurezza sono considerate più affidabili, rafforzando la fiducia e la fidelizzazione dei clienti.
Implementare Secure by Design nei prodotti software
Sviluppare software con la sicurezza integrata fin dall’inizio rappresenta un cambiamento fondamentale nel modo in cui il software viene creato. Storicamente, il software è stato progettato con una “sicurezza aggiunta”, inserita dopo lo sviluppo dei prodotti.
Ma questo significa che la sicurezza non è parte integrante della soluzione. Ogni punto di connessione tra il prodotto principale e un componente aggiuntivo può diventare un potenziale punto di vulnerabilità per gli attaccanti.
Secure by Design sottolinea che le misure di sicurezza devono essere al centro dell’attenzione durante l’intero Software Development Lifecycle (SDLC).
Integrare i principi Secure by Design lungo tutto il processo, invece di rimandarli a dopo la scrittura del codice, garantisce che la sicurezza sia una priorità fin dalle fasi di pianificazione e progettazione. Questo approccio comporta l’identificazione tempestiva delle potenziali minacce e l’integrazione delle difese direttamente nell’architettura del software.
Le pratiche di secure coding sono essenziali per sviluppare software che affronti preventivamente le vulnerabilità di sicurezza. Aderire a linee guida come quelle dell’Open Worldwide Application Security Project ed eseguire code review e analisi statica aiuta a individuare tempestivamente i problemi di sicurezza. Tra le pratiche chiave rientrano la validazione degli input, l’evitare segreti hard-coded e la scelta di librerie sicure. L’utilizzo di strumenti per la scansione continua delle vulnerabilità e il threat modeling contribuisce ulteriormente a garantire la sicurezza del software contro le minacce informatiche.
Test di sicurezza approfonditi in ogni fase dello sviluppo garantiscono che le vulnerabilità vengano scoperte e risolte tempestivamente, prima che diventino problemi per l’utente finale. Questo evita i costi e le complessità associati alla gestione di tali problemi più avanti nell’SDLC o, cosa ancora più critica, dopo il rilascio del prodotto.
Un fornitore dovrebbe eseguire SAS (Static Application Security Testing) e DAS (Dynamic Application Security Testing) sul proprio codice, oltre a effettuare unit testing e integration testing lungo tutto l’SDLC, invece di rimandare il threat modeling o i test alla fine del processo.
Le funzionalità chiave che dovrebbero essere integrate nel software affinché segua i principi Secure by Design includono:
- Autenticazione e combinazione di qualcosa di noto (password), posseduto (smartphone) o intrinseco (biometria). L’autorizzazione, tramite controllo degli accessi basato sui ruoli (RBAC) e controllo degli accessi basato su policy (PBAC), garantisce che gli utenti ottengano solo l’accesso necessario, riducendo i rischi.
- Crittografia e protezione dei dati. La crittografia protegge i dati sensibili a riposo e in transito utilizzando algoritmi come AES (Advanced Encryption Standard) e RSA (dal nome degli scienziati del MIT Rivest, Shamir e Adleman). Una crittografia corretta richiede una gestione sicura delle chiavi, con chiavi archiviate separatamente dai dati e l’uso di moduli di sicurezza hardware (HSM). Aggiornamenti periodici dei protocolli e audit rafforzano la sicurezza.
Le sfide di Secure by Design
Rendere Secure by Design una realtà comporta alcune sfide che un’organizzazione dovrebbe pianificare di affrontare:
- Cambiare la cultura dello sviluppo: Passare da un processo di sviluppo focalizzato su caratteristiche e funzionalità a uno che integra la sicurezza fin dall’inizio richiede un cambiamento culturale significativo all’interno dei team di sviluppo. La sicurezza dovrebbe essere considerata un aspetto cruciale del prodotto, non un semplice elemento aggiuntivo.
- Bilanciare sicurezza e usabilità: Misure di sicurezza robuste non devono compromettere un’esperienza utente intuitiva. Trovare il giusto equilibrio tra sicurezza e usabilità è fondamentale per garantire l’adozione da parte degli utenti e un’esperienza complessiva positiva con il software.
- Infrastruttura e codice legacy: Molte organizzazioni dispongono di prodotti software esistenti basati su codebase più datate che potrebbero non essere state progettate tenendo conto della sicurezza. Integrare retroattivamente i principi di progettazione sicura in questi sistemi legacy può essere complesso e richiedere molto tempo.
- Panorama delle minacce in continua evoluzione: Il panorama della cybersecurity è in costante evoluzione, con nuove minacce che emergono continuamente. Secure by Design non è una soluzione una tantum: richiede un impegno costante per rimanere aggiornati sulle minacce più recenti e adattare di conseguenza le pratiche di sicurezza.
- Carenza di personale qualificato: Implementare efficacemente Secure by Design richiede un team con competenze specialistiche in ambito sicurezza. Tuttavia, a livello globale vi è una carenza di professionisti della cybersecurity, il che può rendere difficile per le organizzazioni trovare il personale qualificato necessario per adottare pienamente i principi Secure by Design.
- Coinvolgere gli utenti: I fornitori dovrebbero coinvolgere gli utenti finali nel processo di progettazione, raccogliendo feedback per creare funzionalità di sicurezza facili da usare. Anche la formazione continua sulle best practice di sicurezza è fondamentale per ridurre l’errore umano senza sovraccaricare l’utente.
Terminologia di Secure by Design
Ecco in che modo i principi Secure by Design si collegano a termini di cybersecurity già familiari:
- Superficie di attacco: La somma di tutti i potenziali punti di ingresso che un cyberattaccante può sfruttare per ottenere accesso a un sistema o ai dati. Secure by Design mira a ridurre al minimo la superficie di attacco riducendo le vulnerabilità.
- Black box testing: Una metodologia di test di sicurezza in cui il tester non conosce il funzionamento interno del sistema. Secure by Design incoraggia pratiche di secure coding che riducono al minimo le vulnerabilità rilevabili tramite black box testing.
- Sicurezza dei componenti: Il principio secondo cui tutti i singoli componenti software, dalle librerie ai framework, devono essere realizzati tenendo conto della sicurezza. Secure by Design enfatizza la selezione e l’integrazione sicure di componenti di terze parti.
- Minimizzazione dei dati: La pratica di raccogliere, archiviare ed elaborare solo la quantità minima di dati necessaria per uno scopo specifico. Secure by Design incoraggia la minimizzazione dei dati per ridurre il potenziale impatto di una violazione dei dati.
- Crittografia: Il processo di trasformazione dei dati in un formato codificato a cui è possibile accedere solo con una chiave di decrittazione. Secure by Design promuove l’uso di algoritmi di crittografia robusti per proteggere i dati sensibili.
- Sicurezza del firmware: La pratica di proteggere il codice di basso livello che controlla i dispositivi hardware. Secure by Design incoraggia l’uso di pratiche di secure coding e aggiornamenti regolari per il firmware.
- Gray box testing: Una metodologia di test di sicurezza in cui il tester ha una conoscenza parziale del funzionamento interno del sistema. Secure by Design incoraggia codice che offra buone prestazioni sia negli scenari di gray box testing sia in quelli di black box testing.
- Piano di risposta agli incidenti: Un piano documentato che descrive come un’organizzazione risponderà a un incidente di sicurezza. Secure by Design incoraggia una pianificazione proattiva per potenziali violazioni della sicurezza.
- Validazione degli input: Il processo di verifica e sanificazione degli input degli utenti per prevenire attacchi di injection di codice dannoso. Secure by Design enfatizza pratiche robuste di validazione degli input.
- Accesso just-in-time: Concedere l’accesso alle risorse solo quando e per il tempo strettamente necessario. Secure by Design incoraggia la minimizzazione dei privilegi e l’uso di controlli di accesso JIT.
- Vulnerabilità note: Debolezze documentate nel software che gli attaccanti possono sfruttare. Secure by Design sottolinea l’importanza di rimanere aggiornati sulle vulnerabilità note e di applicare tempestivamente le patch ai sistemi.
- Privilegio minimo: Il principio di concedere agli utenti solo il livello minimo di autorizzazioni di accesso necessario per svolgere il proprio lavoro. Secure by Design promuove il concetto di privilegio minimo per ridurre al minimo i potenziali danni causati da account compromessi.
- Autenticazione a più fattori: Un ulteriore livello di sicurezza che richiede un fattore di verifica secondario oltre alla password per accedere a un sistema. Secure by Design enfatizza la MFA come controllo di sicurezza cruciale.
- Penetration testing: Una metodologia di test di sicurezza in cui hacker etici tentano di sfruttare le vulnerabilità di un sistema. Secure by Design incoraggia penetration test regolari per identificare e correggere le debolezze di sicurezza.
- Sicurezza open source: La pratica di garantire la sicurezza del software realizzato su componenti open source. Secure by Design incoraggia una selezione e una gestione attente delle librerie open source, con particolare attenzione alle vulnerabilità note.
- Patch management: Il processo di identificazione, acquisizione e distribuzione di patch di sicurezza per correggere vulnerabilità nel software. Secure by Design enfatizza un approccio proattivo al patch management.
- Quality assurance: Il processo che garantisce che il software soddisfi requisiti e standard specificati, inclusi i requisiti di sicurezza. Secure by Design integra le considerazioni di sicurezza in tutte le fasi del processo di QA.
- Gestione del rischio: Identificare, valutare e mitigare i rischi di sicurezza. Secure by Design incoraggia un approccio alla sicurezza basato sul rischio, concentrandosi sulle minacce più critiche.
- Pratiche di secure coding: Tecniche di codifica che riducono al minimo l’introduzione di vulnerabilità durante lo sviluppo software. Secure by Design enfatizza la formazione degli sviluppatori sulle pratiche di secure coding.
- Threat modeling: Il processo di identificazione e analisi delle potenziali minacce a un sistema. Secure by Design incoraggia il threat modeling nelle prime fasi del processo di sviluppo per affrontare in modo proattivo le problematiche di sicurezza.
Correlato: I progressi di Ivanti verso gli obiettivi Secure by Design