Il "Secure Software Development Lifecycle" (SSDLC) è un approccio al ciclo di sviluppo del software che pone un'enfasi particolare sulla sicurezza e introduce pratiche di sicurezza in ogni fase del ciclo di sviluppo. Questo contrasta con l'approccio tradizionale in cui i test di sicurezza venivano eseguiti tardi, il che poteva portare a problemi di sicurezza costosi e difficili da risolvere.
- Costi Ridotti: uno studio condotto dall'Istituto di Sistemi e Scienze di IBM ha dimostrato che risolvere un errore identificato durante la fase di implementazione costa sei volte di più rispetto a quando viene individuato durante la fase di progettazione. Risolvere errori durante la fase di test può costare fino a 15 volte di più mentre risolvere problemi durante le fasi di manutenzione e operazione può risultare fino a 100 volte più costoso. Questo significa che identificare e risolvere problemi di sicurezza nelle prime fasi del ciclo di sviluppo può far risparmiare molto.
- Riduzione del Rischio: introdurre la sicurezza in tutte le fasi del ciclo di sviluppo del software aiuta a scoprire e ridurre le vulnerabilità in modo veloce e versatile. Ciò riduce notevolmente il rischio aziendale associato a possibili violazioni della sicurezza o a problemi di sicurezza post-deployment.
- Security by design: significa che la sicurezza è integrata sin dall'inizio e non è necessario effettuare cicli di correzione del software in modo importante. Per esempio se si scopre un bug come una SQL injection, in un modello a cascata sarebbe necessario tornare indietro, riprogettare e ritestare il che può essere una perdita di tempo.
Ora vediamo come applicare l'SSDLC, per integrare la sicurezza nel ciclo di vita dello sviluppo del software. Prima di approfondire ciascun metodo indipendentemente dalla metodologia di sviluppo scelta (Agile, DevOps, Extreme Waterfall, ecc...) è necessario:
- Costruire tenendo presente la sicurezza.
- Introdurre test focalizzati sulla sicurezza.
Metodologia dello Sviluppo della Sicurezza Microsoft (SDL):
Principi:
- Sicurezza per Design
- Sicurezza per Impostazione Predefinita: I sistemi software sono costruiti per ridurre al minimo i danni potenziali causati dagli attaccanti ad esempio dando i minimi privilegi possibili.
- Sicurezza nella Distribuzione: la distribuzione del software è accompagnata da strumenti e orientamenti che supportano gli utenti e gli amministratori.
- Comunicazioni: gli sviluppatori di software sono preparati per le minacce in atto comunicando apertamente e tempestivamente con gli utenti e gli amministratori.
Sito ufficiale qui.
SDL è un insieme di attività obbligatorie di sicurezza suddivise per le fasi tradizionali dello sviluppo del software. I dati vengono raccolti per valutare l'efficacia della formazione. Le metriche in fase di sviluppo vengono utilizzate per confermare la conformità del processo. Le metriche post-release vengono utilizzate per i cambiamenti. Per implementarlo:
- Definire Metriche e Reporting di Conformità
- Effettuare Threat Modeling
- Stabilire Requisiti di Design (sempre della sicurezza).
- Definire e Utilizzare Standard di Crittografia
- Gestire il Rischio di Sicurezza nell'Uso di Componenti di Terze Parti
- Utilizzare Strumenti verificati
- Eseguire Test di Sicurezza (SAST, DAST, IAST)
- Eseguire Valutazioni di Sicurezza
- Stabilire un Processo Standard di Gestione degli Incidenti.
Metodologia S-SDLC OWASP (Ciclo di Vita di Sviluppo del Software Sicuro OWASP):
Principi:
- Raccolta di dati per valutare l'efficacia della formazione.
- Metriche in fase di sviluppo per confermare la conformità del processo.
- Metriche post-release per guidare i futuri cambiamenti.
- Enfasi sulla comprensione delle cause ed effetti delle vulnerabilità di sicurezza.
La metodologia S-SDLC di OWASP mira a creare "security quality gates" per supportare un software di qualità e sicuro lungo tutto il processo di sviluppo. Questo viene fatto seguendo un approccio Agile alla sicurezza, con sprint dedicati alla sicurezza. Gli sprint possono includere revisioni del codice, autenticazione, autorizzazione e valutazione dei rischi tecnici. OWASP S-SDLC si basa su un approccio basato su un "Modello di Maturità", in particolare OWASP SAMM (Software Assurance Maturity Model).
Un altro modello di sicurezza critico è il Building Security In Maturity Model (BSIMM). BSIMM è uno studio di iniziative reali di sicurezza del software e riflette lo stato attuale della sicurezza del software. Può essere descritto come "tool di misurazione" per capire la posizione di sicurezza fornendo un confronto con lo stato di sicurezza di altre aziende. BSIMM non vi dirà cosa dovete fare ma cosa state facendo di sbagliato.
