Equilibrio sorprendente: ridefinire la sicurezza del software con "Shift Left" e Guardrail SDLC

Tutti i messaggi

TL; DR

Negli ultimi anni, l’industria tecnologica ha sostenuto con fervore il concetto di “spostamento a sinistra” nello sviluppo del software, sostenendo l’integrazione precoce delle pratiche di sicurezza nel ciclo di vita dello sviluppo. Questo movimento mira a conferire agli sviluppatori la responsabilità di garantire la sicurezza del loro codice fin dall'inizio del progetto. Tuttavia, sebbene le intenzioni alla base di questo approccio siano nobili, la realtà dipinge un quadro più sfumato, in cui l’idea semplicistica di affidarsi esclusivamente agli sviluppatori per sostenere sicurezza della catena di fornitura del software risulta inadeguato. In questo articolo presenterò un approccio di bilanciamento complementare: i guardrail SDLC diretti dal CISO: misure di controllo automatico che governano o applicano la politica di sicurezza dell'SDLC.

Chi ha lasciato il mio formaggio?

Il paradigma dello spostamento a sinistra, in sostanza, mira ad affrontare i problemi di sicurezza nelle fasi iniziali dello sviluppo, aspettandosi che gli sviluppatori incorporino in modo proattivo misure di sicurezza nel loro codice. È un'ideologia attraente in cui gli sviluppatori hanno il compito di identificare le vulnerabilità e implementare controlli di sicurezza mentre scrivono e distribuiscono il loro codice.

Tuttavia, questo approccio idealistico incontra sfide significative nell’implementazione pratica. Sebbene siano esperti nella codifica, gli sviluppatori potrebbero non avere competenze complete nelle tecniche di sicurezza e nelle migliori pratiche. Il loro obiettivo principale ruota attorno al soddisfacimento dei requisiti funzionali e aspettarsi che possiedano una comprensione esaustiva del panorama in continua evoluzione della sicurezza informatica non è realistico.

Inoltre, i vincoli temporali e le pressioni sui progetti spesso comportano compromessi tra sicurezza e rispetto delle scadenze. Nella fretta di fornire funzionalità tempestivamente, gli sviluppatori potrebbero inavvertitamente trascurare potenziali lacune nella sicurezza o impiegare pratiche di codifica meno sicure, lasciando le vulnerabilità irrisolte fino alle fasi successive. In fin dei conti, i loro KPI sono orientati alla velocità e la sicurezza sarà sempre al secondo posto per la maggior parte di loro.

Inserisci i guardrail CI/CD

È qui che diventa evidente la necessità di implementare “guardrail” di sicurezza nella pipeline di integrazione continua/distribuzione continua (CI/CD). I guardrail fungono da punti di controllo automatizzati integrati nella pipeline di sviluppo, garantendo che le misure di sicurezza non dipendano esclusivamente da interventi manuali o dalla competenza o motivazione dei singoli sviluppatori.

I guardrail fungono da guardiani proattivi, monitorando e applicando costantemente standard, politiche e regole di sicurezza durante l'intero ciclo di vita dello sviluppo del software (SDLC). Questi controlli automatizzati possono comprendere vari aspetti della sicurezza, inclusi ma non limitati all'inserimento in blocklist di pacchetti danneggiati, all'arresto del codice che contiene vulnerabilità critiche, al fallimento dei test di analisi statica del codice o a dipendenze problematiche, nonché all'aderenza agli standard di conformità o alla protezione delle policy SDLC (ad esempio, codice revisione per ogni commit).

Utilizzando i concetti di policy-as-code, è possibile creare quasi tutte le regole che si possano immaginare da implementare come guardrail. Ecco alcuni esempi di norme sui guardrail in linea con NIST800-204D:

Esempio di guardrail

Regole esemplari dei guardrail:

  1. Stazione di lavoro per sviluppatori
    • Verificare la suite di sicurezza dell'endpoint della workstation dello sviluppatore
  2. SCM
    • Verifica le regole di protezione del ramo: applica revisioni multiple\specifiche
    • Verificare che i file CI vengano modificati solo dal personale autorizzato
    •  Verificare che la scansione dei segreti sia attiva e che i segreti non vengano rilevati.
  3. CI
    • Verificare che la scansione del codice sia attiva.
    • Verifica che i risultati della scansione del codice si trovino sotto una barra predefinita
  4. dipendenze
    • Verifica la licenza open source.
    • Verifica che le vulnerabilità open source siano conformi ai criteri dell'organizzazione
  5. Artifacts
    • Verificare che la giusta identità segni gli artefatti.
    • Verificare le vulnerabilità degli artefatti finali.

Guardrail, non corrimano

Integrando i guardrail nella pipeline CI/CD, le organizzazioni possono applicare sistematicamente i protocolli di sicurezza e ottenere un prodotto sicuro senza fare affidamento esclusivamente sugli sviluppatori per garantire misure di sicurezza complete. Tenendo conto del fatto che gli sviluppatori potrebbero aggirare le misure di sicurezza per il bene del ritmo di sviluppo, l'approccio guardrail rende queste decisioni impossibili o almeno visibili, in modo che possano essere prese in considerazione, sia a livello di singola build (ad esempio, decidere sull'affidabilità dell'artefatto) ) e a livello organizzativo (capire cosa ci si può e cosa non ci si può aspettare dagli sviluppatori dell'organizzazione). Gli strumenti automatizzati possono segnalare o addirittura bloccare potenziali vulnerabilità o problemi di non conformità prima che la nuova versione venga rilasciata in produzione o consegnata al cliente. Dopotutto, affrontare un problema di sicurezza nella fase di sviluppo piuttosto che dopo la consegna è davvero molto più semplice, veloce ed economico.

È fondamentale riconoscere che, sebbene lo spostamento a sinistra incoraggi il coinvolgimento degli sviluppatori nelle pratiche di sicurezza, non dovrebbe esonerare gli altri stakeholder (professionisti della sicurezza, ingegneri DevOps e team di controllo qualità) dai loro ruoli. Se ti occupi della sicurezza dei prodotti, AppSec, DevSecOps o CISO, allora sai già che "spostare a sinistra" la responsabilità verso gli sviluppatori non ti toglie tale responsabilità dalle spalle. Poiché la maggior parte dei CISO e dei relativi team non provengono dal settore ricerca e sviluppo, gli ambienti di sviluppo software erano storicamente fuori dalla loro vista. Tradizionalmente si concentrerebbero sulla sicurezza operativa, sulla sicurezza della rete e sulla connettività tra organizzazioni. L’approccio guardrail è un modo per portare “delicatamente” i CISO nel selvaggio west degli ambienti di sviluppo, riprendendo il controllo su ciò che gli spetta. Per “delicatamente” intendo “collaborativamente”. Poiché la sicurezza del prodotto è uno sforzo congiunto dei team di sicurezza e di sviluppo, la collaborazione tra queste entità è essenziale per progettare e implementare robusti guardrail che rafforzino la pipeline CI/CD contro potenziali minacce alla sicurezza senza ostacolare la velocità di sviluppo.

L’integrazione dei principi dello spostamento a sinistra con la creazione di guardrail nel gasdotto CI/CD rappresenta un buon equilibrio. Gli sviluppatori rimangono responsabili della scrittura di codice sicuro e della comprensione dei principi di sicurezza di base mentre il team di sicurezza decide gli standard che il prodotto deve soddisfare per essere rilasciato. Quindi, i guardrail vengono automatizzati di conseguenza in strumenti e processi per fungere da rete di sicurezza, monitorando e rafforzando continuamente gli standard di sicurezza e la politica SDLC. I guardrail rappresentano un passo essenziale verso prodotti sicuri fin dalla progettazione e per impostazione predefinita.

Avvolgere Up

In conclusione, pur essendo ben intenzionato, il concetto di spostamento a sinistra non è in grado di garantire una sicurezza completa del software esclusivamente attraverso il coinvolgimento degli sviluppatori. Per rafforzare l'integrità e l'affidabilità dell'artefatto software finale, le organizzazioni devono adottare l'implementazione di guardrail all'interno della pipeline CI/CD. Questo approccio combinato non solo migliora il livello di sicurezza del software, ma promuove anche un ambiente collaborativo in cui sviluppatori, professionisti della sicurezza e strumenti di automazione lavorano in sinergia verso l'obiettivo comune di creare software sicuro.

Questo contenuto è offerto da Scribe Security, un fornitore leader di soluzioni di sicurezza end-to-end per la catena di fornitura di software, che offre sicurezza all'avanguardia per artefatti di codice e processi di sviluppo e distribuzione del codice attraverso le catene di fornitura di software. Per saperne di più.