Diventa Autore per CoreTech | Scopri di più
04/05/21 CoreTech Blog
Non è un segreto che i primi test di sicurezza siano vantaggiosi. Tuttavia, sai quanto sia vantaggioso e quali sono le potenziali conseguenze della mancanza di test precoci? Ecco i 5 principali vantaggi dei test di sicurezza precoci insieme ai rischi dei test tardivi.
Una delle maggiori sfide che gli sviluppatori devono affrontare è lavorare con il codice creato da altri sviluppatori. Se hanno il compito di correggere o modificare il codice scritto da qualcun altro, devono prima capire quel codice. Nonostante il fatto che i moderni team di sviluppo abbiano un sacco di meccanismi e standard in atto per renderlo più facile, è ancora un compito difficile.
Questo è il motivo per cui la maggior parte degli sviluppatori è molto più felice di svolgere attività per sviluppare nuove funzionalità o estendere il codice esistente piuttosto che lavorare sulle segnalazioni di bug. La situazione è ancora peggiore con i problemi relativi alla sicurezza informatica (inclusa la sicurezza web), dove la comprensione dell'errore di qualcun altro potrebbe richiedere molte ricerche.
I primi test di sicurezza indicano che il codice non viene mai accettato nel repository a meno che non sia sicuro. Significa che lo sviluppatore deve risolvere i problemi di sicurezza prima di completare l'attività. Ciò, a sua volta, riduce la possibilità che in seguito vengano assegnate segnalazioni di bug di sicurezza e correzioni ad altri sviluppatori.
Ad esempio, se lo sviluppatore sta lavorando in un ambiente DevSecOps , di solito crea un ramo privato in un repository di codice (ad esempio in Git) e quindi esegue un lavoro CI / CD (ad esempio in Jenkins) per creare quel ramo privato. Se il codice viene compilato correttamente, il processo CI / CD esegue una serie di test QA: unit test, test funzionali, test di integrazione e altro ancora. Questi test includono o sono seguiti da test di sicurezza utilizzando uno strumento DAST e / o IAST / SAST . Se questi strumenti ritengono che il software non sia sicuro, la compilazione non riesce. Lo sviluppatore deve eliminare i problemi e riprovare.
Con i primi test, lo sviluppatore non sarebbe in grado di completare la propria attività a meno che l'applicazione non sia ritenuta sicura utilizzando uno strumento di test di sicurezza automatizzato. I vantaggi dettagliati sono:
Molti sviluppatori evitano la sicurezza. Di conseguenza, spesso commettono errori di base. Ad esempio, accettano input non attendibili e lo utilizzano direttamente come parte dell'output.
Poiché la qualità del codice scritto da uno sviluppatore viene solitamente verificata attraverso la revisione del codice peer e quasi mai valutata dal team di sicurezza, l'effetto persiste. Il revisore potrebbe prestare la stessa attenzione alla sicurezza dell'autore originale.
Se le pipeline CI / CD non includono la scansione di sicurezza, tale codice non sicuro entra nel repository. Lo scanner rileva le vulnerabilità nella gestione temporanea e crea nuovi problemi nel tracker dei problemi. Tuttavia, i tuoi manager devono assegnare questi problemi agli sviluppatori. Non hanno modo di sapere chi è stato responsabile dell'introduzione della vulnerabilità e quindi non possono attribuire tali problemi al colpevole originale.
Di conseguenza, è molto probabile che una vulnerabilità di sicurezza introdotta da uno sviluppatore venga risolta da un altro sviluppatore. Gli sviluppatori originali non sono ritenuti responsabili. Quel che è peggio, potrebbero non scoprire nemmeno di aver introdotto la vulnerabilità!
Se esegui i test di sicurezza nella prima fase possibile e configuri il software in modo appropriato, uno sviluppatore non può inviare codice che contiene vulnerabilità. Ciò costringe lo sviluppatore ad assumersi la responsabilità della sicurezza del proprio codice. Se lo sviluppatore scrive male il codice, dovrà tornare indietro e correggerlo finché lo scanner non dice che l'applicazione è sicura.
Con i primi test di sicurezza, gli sviluppatori si rendono conto che è nel loro interesse scrivere codice sicuro. Si rendono conto che se evitano la sicurezza, saranno costretti a dedicare molto più tempo alla correzione dei propri errori. E poiché il test di sicurezza viene eseguito automaticamente, non avranno nessuno da incolpare per aver segnalato i propri errori.
I vantaggi dettagliati sono:
Università rinomate spesso insegnano ai loro studenti abilità di sviluppo complesse come la capacità di dimostrare formalmente la correttezza dei loro algoritmi utilizzando invarianti. Tuttavia, le stesse università spesso saltano la formazione di base sulla codifica sicura. Le lezioni spesso non si concentrano affatto (o non abbastanza) sull'importanza di diffidare dell'input dell'utente. Pertanto, non c'è da meravigliarsi che la maggior parte degli sviluppatori semplicemente non sappia come scrivere codice sicuro .
In un ambiente professionale, se un professionista della sicurezza comunica a uno sviluppatore che il suo codice non è sicuro, ciò potrebbe causare diversi problemi. Uno sviluppatore inesperto può sentirsi in ansia per la propria posizione. Uno sviluppatore esperto può mettersi sulla difensiva perché sente di avere abbastanza esperienza per sapere cosa sta facendo. Entrambi potrebbero finire per non gradire il professionista della sicurezza che ha segnalato l'errore.
Il test automatizzato nelle prime fasi del processo di sviluppo elimina potenziali conflitti tra sviluppatori e team di sicurezza perché la vulnerabilità viene segnalata da una macchina, non da una persona. Inoltre, se il test viene eseguito prima, nessuno, tranne lo sviluppatore, è a conoscenza della vulnerabilità. Pertanto, lo sviluppatore non ha bisogno di essere ansioso di essere giudicato.
Allo stesso tempo, un buon strumento di sicurezza non si limiterà a segnalare un problema di sicurezza, ma fornirà anche informazioni sulla causa principale dell'errore di sicurezza e guiderà come risolverlo. In quanto tale, lo sviluppatore imparerà per il futuro come evitare di creare tali errori in primo luogo.
I primi test di sicurezza automatizzati rendono gli sviluppatori più a loro agio e li aiutano a imparare a scrivere codice sicuro.
I vantaggi dettagliati sono:
Supponiamo il seguente scenario di caso.
Il tuo sviluppatore introduce accidentalmente una grave vulnerabilità in una nuova funzione della tua applicazione. Questa vulnerabilità passa inosservata al revisore del codice e non ci sono test automatici nelle prime fasi dell'SDLC. Questa funzione è molto importante per i tuoi clienti ed è inclusa nella prossima versione critica.
Come molte aziende, esegui i test di sicurezza solo prima delle principali versioni, durante lo staging. In tal caso, il tuo strumento di test ti informerà sulla vulnerabilità della sicurezza subito prima del rilascio critico (diverse settimane dopo che la vulnerabilità è stata effettivamente introdotta nel codice).
Per eliminare la vulnerabilità, devi ritardare il tuo rilascio. Il codice deve tornare agli sviluppatori, quindi passare attraverso le successive fasi di test del QA e, infine, mettere l'applicazione in fase di staging da zero. A causa della mancanza di test di sicurezza precedenti, si scopre che la vulnerabilità non è stata eliminata (lo sviluppatore ha utilizzato una soluzione alternativa inefficace). Torni di nuovo al tavolo da disegno e il rilascio critico è ora seriamente ritardato.
Il costo di una tale scoperta in una fase così avanzata potrebbe essere enorme. Forse il tuo cliente dipende dal rilascio tempestivo e questo ha un impatto significativo sulla tua attività. Tutto a causa di un errore che non è stato individuato abbastanza presto.
Con i primi test, è improbabile che si verifichi una situazione come quella sopra descritta. La maggior parte delle vulnerabilità verrebbe rilevata molto prima che la prima versione dell'applicazione sia pronta per il rilascio. Alcune vulnerabilità meno critiche possono essere scoperte durante lo staging (grazie alla possibilità di testare l'intera applicazione su un server web reale) ma è improbabile che richiedano un pull-back di rilascio. Puoi persino configurare i test iniziali in modo che vengano superati se le vulnerabilità scoperte vengono automaticamente considerate a basso rischio.
I ritardi causati dalla mancanza di test precoci tendono a crescere rapidamente. Eliminando le vulnerabilità non appena compaiono, risparmi molto tempo. Questo risparmio di tempo può avere un impatto critico sulla tua attività. Ma non è importante solo risparmiare tempo, è la prevedibilità. In caso contrario, potrebbero verificarsi potenziali ritardi imprevisti appena prima del rilascio, rendendo la pianificazione del rilascio completamente imprevedibile.
I vantaggi dettagliati sono:
Se ti trovi di fronte a una situazione come quella sopra descritta, in cui una vulnerabilità scoperta troppo tardi causa un notevole ritardo per un rilascio critico, potresti essere costretto ad andare avanti con il rilascio nonostante la vulnerabilità. Molte aziende affrontano una tale realtà abbastanza spesso se non implementano i primi test di sicurezza.
È ovvio che esporre al pubblico software con una grave vulnerabilità può avere un prezzo molto alto. Cogliere la possibilità che la vulnerabilità non venga scoperta da hacker malintenzionati prima della prossima versione è come giocare alla roulette russa. Nella maggior parte dei casi, le aziende scelgono di proteggere temporaneamente il proprio software utilizzando firewall per applicazioni Web (WAF) . Tuttavia, ciò non è sempre possibile (se, ad esempio, il software viene consegnato a una terza parte e non è ospitato dall'azienda) e la protezione WAF non è infallibile.
I primi test eliminano completamente il rischio di rilasciare intenzionalmente software vulnerabile. Sebbene i test a livello di gestione temporanea e i test di penetrazione manuali aggiuntivi possano esporre alcune vulnerabilità che sono state ignorate durante le scansioni automatiche, il rischio che queste vulnerabilità siano gravi è molto basso.
Evitare la necessità di rilasciare intenzionalmente software vulnerabile è di per sé un enorme vantaggio. Tuttavia, evitare tali situazioni comporta molti vantaggi dettagliati aggiuntivi come: