Utilizza questo strumento da riga di comando per trovare difetti di sicurezza nel tuo codice
Dotato di un ampio supporto linguistico, Graudit ti consente di verificare la sicurezza del tuo codice durante il processo di sviluppo.
Il test è una parte importante del ciclo di vita dello sviluppo del software (SDLC) e comprende diverse fasi. Oggi voglio parlare dell'individuazione dei problemi di sicurezza nel codice.
Non puoi ignorare la sicurezza quando sviluppi un software. Ecco perché esiste un termine chiamato DevSecOps, che è fondamentalmente responsabile dell'identificazione e della risoluzione delle vulnerabilità della sicurezza in un'applicazione. Esistono soluzioni open source per verificare le vulnerabilità OWASP e che ricaveranno approfondimenti creando un modello di minaccia del codice sorgente.
Esistono diversi approcci alla gestione dei problemi di sicurezza, ad esempio test di sicurezza delle applicazioni statiche (SAST), test di sicurezza delle applicazioni dinamiche (DAST), test di sicurezza delle applicazioni interattive (IAST), analisi della composizione del software, ecc.
I test statici sulla sicurezza delle applicazioni vengono eseguiti a livello di codice e analizzano le applicazioni scoprendo errori nel codice già scritto. Questo approccio non richiede l'esecuzione del codice, motivo per cui viene chiamato analisi statica.
Mi concentrerò sull'analisi statica del codice e utilizzerò uno strumento open source per avere un'esperienza pratica.
Perché utilizzare uno strumento open source per verificare la sicurezza del codice
Esistono molti motivi per scegliere software, strumenti e progetti open source come parte del tuo sviluppo. Non ti costerà nulla, poiché stai utilizzando uno strumento sviluppato da una comunità di sviluppatori che la pensano allo stesso modo e che vogliono aiutare altri sviluppatori. Se hai un piccolo team o una startup, è bene trovare software open source per verificare la sicurezza del tuo codice. Ciò ti evita di dover assumere un team DevSecOps separato, mantenendo i costi più bassi.
I buoni strumenti open source sono sempre realizzati pensando alla flessibilità e dovrebbero poter essere utilizzati in qualsiasi ambiente, coprendo il maggior numero di casi possibile. Rende la vita più facile agli sviluppatori connettere quel pezzo di software al loro sistema esistente.
Ma possono esserci momenti in cui hai bisogno di una funzionalità che non è disponibile nello strumento che hai scelto. Quindi hai la possibilità di eseguire il fork del codice e sviluppare la tua funzionalità sopra di esso e utilizzarla nel tuo sistema.
Poiché, nella maggior parte dei casi, il software open source è guidato da una comunità, il ritmo dello sviluppo tende ad essere un vantaggio per gli utenti di quello strumento perché ripetono il progetto in base al feedback degli utenti, ai problemi o alla pubblicazione di bug.
Usare Graudit per garantire che il tuo codice sia sicuro
Sono disponibili vari strumenti di analisi del codice statico open source, ma come sai, lo strumento analizza il codice stesso ed è per questo che non esiste uno strumento generico per tutti i linguaggi di programmazione. Ma alcuni di loro seguono le linee guida OWASP e cercano di coprire quante più lingue possibile.
In questo caso utilizzeremo Graudit, un semplice strumento da riga di comando che ci consente di trovare difetti di sicurezza nella nostra base di codice. Ha il supporto per diverse lingue ma un set di firme fisse.
Graudit utilizza grep, che è uno strumento di utilità con licenza GNU, e esistono tipi simili di strumenti di analisi del codice statico come Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), Flawfinder, ecc. Ma i requisiti tecnici è minimo e molto flessibile. Tuttavia, potresti avere requisiti che non sono soddisfatti da Graudit. In tal caso, puoi consultare questo elenco per altre opzioni.
Possiamo installare questo strumento sotto un progetto specifico, o nello spazio dei nomi globale, o sotto un utente specifico: qualunque cosa ci piaccia, è flessibile. Cloniamo prima il repository:
$ git clone https://github.com/wireghoul/graudit
Ora dobbiamo creare un collegamento simbolico di Graudit in modo da poterlo utilizzare come comando:
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit
Aggiungi un alias a .bashrc (o il file di configurazione per qualunque shell tu stia utilizzando):
#------ .bashrc ------
alias graudit="~/bin/graudit"
e ricaricare la shell:
$ source ~/.bashrc # OR
$ exex $SHELL
Controlliamo se abbiamo installato correttamente lo strumento eseguendo questo:
$ graudit -h
Se ottieni qualcosa di simile a questo, allora sei a posto.
Fig. 1 Pagina di aiuto di Graudit
Sto utilizzando uno dei miei progetti esistenti per testare lo strumento. Per eseguire lo strumento, dobbiamo passare il database della rispettiva lingua. Troverai i database nella cartella firme:
$ graudit -d ~/gradit/signatures/js.db
L'ho eseguito su due file JavaScript dei miei progetti esistenti e puoi vedere che genera il codice vulnerabile nella console:
Puoi provare a eseguirlo su uno dei tuoi progetti: hanno un lungo elenco di database inclusi nel progetto stesso per supportare lingue diverse.
Gradimento pro e contro
Graudit supporta molte lingue, il che lo rende una buona scommessa per gli utenti su molti sistemi diversi. È paragonabile ad altri strumenti gratuiti o a pagamento per la sua semplicità d'uso e l'ampio supporto linguistico. Soprattutto, sono in fase di sviluppo e la comunità supporta anche altri utenti.
Sebbene si tratti di uno strumento utile, potresti trovare difficile identificare un codice specifico come "vulnerabile". Forse gli sviluppatori includeranno questa funzione nelle versioni future dello strumento. Ma è sempre bene tenere d'occhio i problemi di sicurezza nel codice utilizzando strumenti come questo.
Conclusione
In questo articolo ho trattato solo uno dei tanti tipi di test di sicurezza: i test di sicurezza delle applicazioni statiche. È facile iniziare con l'analisi statica del codice, ma questo è solo l'inizio. Puoi aggiungere altri tipi di test sulla sicurezza delle applicazioni nella pipeline di sviluppo delle applicazioni per arricchire la tua consapevolezza generale della sicurezza.