AppSec è difficile

Jan 17 2023
Così sono i programmi...
I programmi di sicurezza delle applicazioni sono difficili. Ci sono molte parti mobili.

I programmi di sicurezza delle applicazioni sono difficili. Ci sono molte parti mobili. Ma è necessario garantire che il software sia progettato, costruito e distribuito in modo da ridurre al minimo le vulnerabilità della sicurezza, proteggendo così gli utenti ei loro dati da potenziali attacchi informatici. Un solido programma AppSec avrà un approccio completo che prevede l'integrazione di varie pratiche durante il processo di sviluppo del software per ridurre al minimo il rischio di vulnerabilità e violazioni della sicurezza. Questo non è affatto un elenco completo, ma questo ti darà un'idea della portata.

La modellazione delle minacce è il processo di identificazione e valutazione di potenziali minacce alla sicurezza e vulnerabilità nel software prima che possano essere sfruttate. Questo può essere fatto analizzando l'architettura e il design del software, identificando i dati sensibili e identificando potenziali vettori di attacco. La modellazione delle minacce basata sull'agile è una metodologia che combina i principi dello sviluppo agile del software con la modellazione delle minacce. Questo approccio consente ai team di identificare e affrontare potenziali minacce e vulnerabilità alla sicurezza nelle prime fasi del processo di sviluppo, pur essendo in grado di rispondere rapidamente ai requisiti in evoluzione.

La codifica sicura è un'altra pratica importante nello sviluppo di software sicuro. Ciò comporta la scrittura di codice privo di falle e vulnerabilità di sicurezza comuni. Questo può essere assistito attraverso l'uso di linee guida di codifica sicure, come il materiale OWASP . Questi tipi di risorse forniscono agli sviluppatori una serie di best practice per la scrittura di codice sicuro e li aiutano a evitare errori comuni che possono portare a vulnerabilità di sicurezza.

Mantenere il software aggiornato è un'altra pratica importante. Ciò include non solo il software stesso, ma anche eventuali librerie e dipendenze di terze parti. Ciò garantisce che eventuali vulnerabilità di sicurezza note vengano affrontate in modo tempestivo, riducendo il rischio di sfruttamento da parte degli aggressori.

Naturalmente, esistono i test di penetrazione e la scansione delle vulnerabilità sono tecniche utilizzate per identificare e affrontare le vulnerabilità di sicurezza nel software. Queste tecniche simulano attacchi del mondo reale al software, consentendo agli sviluppatori di identificare e affrontare eventuali vulnerabilità prima che possano essere sfruttate dagli aggressori. Strumenti automatizzati come analisi della composizione del software (SCA), test di sicurezza delle applicazioni statiche (SAST), test di sicurezza delle applicazioni dinamiche (DAST), test di sicurezza delle applicazioni interattive (IAST), test di sicurezza delle applicazioni mobili (MAST) e autoprotezione delle applicazioni runtime ( RASP) può essere utilizzato per automatizzare l'identificazione e la risoluzione delle vulnerabilità di sicurezza. Inoltre, la sicurezza delle API è un aspetto critico del moderno sviluppo del software.

Un altro aspetto importante dello sviluppo di software sicuro è la prevenzione della perdita di dati (DLP). Le soluzioni DLP possono essere utilizzate per rilevare e prevenire l'esposizione non autorizzata di dati sensibili, come informazioni di identificazione personale (PII), segreti e così via.

Anche l'istruzione e la formazione sono importanti per lo sviluppo sicuro del software. I programmi per i campioni della sicurezza ei programmi di formazione per gli sviluppatori possono aiutare a garantire che tutti i membri del team di sviluppo abbiano le conoscenze e le competenze necessarie per scrivere codice sicuro. Ciò include la comprensione dell'OWASP Top 10, un elenco dei rischi per la sicurezza delle applicazioni web più critici, e della Common Weakness Enumeration (CWE) Top 25 , un elenco di punti deboli comuni del software.

Anche la metodologia shift-left e i gate automatizzati nelle pipeline sono essenziali per lo sviluppo sicuro del software. Queste pratiche consentono agli sviluppatori di identificare e affrontare le potenziali vulnerabilità nella fase iniziale, prima che diventino parte della base di codice e vengano distribuite alla produzione integrando gli strumenti nelle pipeline di integrazione e consegna continue (CI/CD), oltre a ottenere l'output di tali strumenti da qualche parte dove è possibile tenere traccia degli indicatori chiave di prestazione (KPI) e anche valutare potenziali vulnerabilità integrandosi con qualcosa come JIRA per una gestione agile del lavoro.

Gli hook git pre-commit sono anche uno strumento utile per lo sviluppo di software sicuro. Questi hook possono essere utilizzati per controllare automaticamente il codice per verificare l'insicurezza di ii prima che venga eseguito il commit nel repository o per impedire all'utente di eseguire il commit dei segreti.

Un altro aspetto importante di AppSec è la valutazione delle vulnerabilità. Questo è il processo di identificazione e definizione delle priorità delle vulnerabilità in base alla loro gravità e al potenziale impatto. Questo approccio consente alle organizzazioni di concentrare le proprie risorse sulle vulnerabilità più critiche e affrontarle in modo tempestivo. Fattori come la probabilità di sfruttamento, il potenziale impatto e la facilità di sfruttamento vengono presi in considerazione durante la valutazione delle vulnerabilità. In alcuni casi, l'applicazione di patch potrebbe non essere la migliore linea d'azione e si possono prendere in considerazione alternative come il monitoraggio, la segmentazione della rete e il controllo degli accessi.

Per gestire un solido programma AppSec, è importante disporre degli strumenti e delle piattaforme giusti. Alcune opzioni popolari includono Esno per ottenere visibilità e coordinare strumenti, persone e processi. Checkmarx e Veracode forniscono molte funzionalità per la scansione statica e dinamica, e Snyk è rinomato per le sue capacità di sicurezza open-source, e come piattaforma intera è molto amata per la sua facilità d'uso e la centralità dello sviluppatore, ma Black Duck ha una solida reputazione in SCA. Invicti va bene per IAST, Wiz sta diventando popolare per CSPM. Aqua per la sicurezza dei container è provato e vero, SpectralOpsper DLP, NoName Security o Salt per API Security, NowSecure per Mobile AppSec, Irius Risk per la modellazione delle minacce o Bionic per un approccio più automatizzato alla modellazione delle minacce e alla gestione della postura. C'è anche il fuzzing, che è un tipo di test dinamico basato sul comportamento che mette alla prova l'ignoto e cerca di trovare la vulnerabilità; un esempio molto moderno di piattaforma in questo spazio è Mayhem .

Per tenere traccia del rischio open source e di terze parti è anche importante tenere una distinta base del software (SBOM). Alcuni di questi strumenti possono generarli per te (Veracode, Black Duck, ecc.).

Alcuni potrebbero non considerarlo parte di un programma AppSec, ma credo che la tecnologia Deception Engineering dovrebbe far parte del più ampio programma di sicurezza del prodotto volto a cercare di sprecare le risorse degli aggressori e costringerli a passare a obiettivi più facili e meno costosi. Un esempio all'avanguardia in questo spazio è CounterCraft. Pensa alla tecnologia honeypot con gli steroidi.

Inoltre, la formazione e l'istruzione sono essenziali per lo sviluppo sicuro del software. Le opzioni di formazione di Secure Code Review includono Secure Code Warrior , Security Journey , Immersive Labs e Avatao . I programmi di divulgazione delle vulnerabilità (VDP) possono essere gestiti tramite piattaforme come HackerOne e i programmi Bug Bounty possono essere configurati e gestiti tramite piattaforme come Intigriti.

C'è altro in cui potremmo approfondire, come il ruolo della politica come codice e come automatizzare completamente i cancelli e come dovrebbero funzionare i flussi di lavoro di approvazione in contesti altamente regolamentati, ma per ora dovremo lasciarlo qui.

Per riassumere, lo sviluppo di software sicuro richiede un approccio completo e sfaccettato che implica l'integrazione di tutte le pratiche sopra menzionate durante tutto il processo di sviluppo del software. In questo modo, gli sviluppatori possono garantire la sicurezza e la protezione degli utenti e dei loro dati e creare software robusto, affidabile e protetto. È importante notare che il panorama della sicurezza è in continua evoluzione, pertanto sono necessarie continue revisioni e ricerche per stare al passo.