Come utilizzare una semplice utility per trovare vulnerabilità nel codice del programma

Graudit supporta più linguaggi di programmazione e consente di integrare i test di sicurezza della base di codice direttamente nel processo di sviluppo.

Come utilizzare una semplice utility per trovare vulnerabilità nel codice del programma
Fonte: Unsplash (Markus Spike)

Il testing è una parte importante del ciclo di vita dello sviluppo del software. Esistono molti tipi di test, ognuno di essi risolve il proprio problema. Oggi voglio parlare dell'individuazione dei problemi di sicurezza nel codice.

Ovviamente, nelle moderne realtà dello sviluppo software, è importante garantire la sicurezza dei processi. Un tempo fu addirittura introdotto il termine speciale DevSecOps. Con questo termine si fa riferimento a una serie di procedure volte a identificare ed eliminare le vulnerabilità in un'applicazione. Esistono soluzioni open source specializzate per il controllo delle vulnerabilità in conformità agli standard OWASP, che descrivono i diversi tipi e comportamenti delle vulnerabilità nel codice sorgente.

Esistono diversi approcci per risolvere i problemi di sicurezza, come il test statico di sicurezza delle applicazioni (SAST), il test dinamico di sicurezza delle applicazioni (DAST), il test interattivo di sicurezza delle applicazioni (IAST), l'analisi della composizione del software e così via.

I test statici di sicurezza dell'applicazione identificano gli errori nel codice già scritto. Questo approccio non richiede l'esecuzione dell'applicazione, motivo per cui viene chiamato analisi statica.

Mi concentrerò sull'analisi statica del codice e utilizzerò un semplice strumento open source per dimostrare tutto nella pratica.

Perché ho scelto uno strumento open source per l'analisi della sicurezza del codice statico

Ci sono diversi motivi per questo: in primo luogo, è gratuito perché stai utilizzando uno strumento sviluppato da una comunità di persone che la pensano allo stesso modo e che vogliono aiutare altri sviluppatori. Se hai un piccolo team o una startup, hai una grande opportunità di risparmiare denaro utilizzando software open source per testare la sicurezza della tua codebase. In secondo luogo, elimina la necessità di assumere un team DevSecOps separato, riducendo ulteriormente i costi.

I buoni strumenti open source vengono sempre creati tenendo conto dei maggiori requisiti di flessibilità. Pertanto, possono essere utilizzati in quasi tutti gli ambienti, coprendo un'ampia gamma di compiti. È molto più semplice per gli sviluppatori collegare tali strumenti al sistema che hanno già creato mentre lavorano ai loro progetti.

Ma potrebbero esserci momenti in cui hai bisogno di una funzionalità che non è disponibile nello strumento che scegli. In questo caso, hai l'opportunità di creare un fork del suo codice e sviluppare il tuo strumento basato su di esso con le funzionalità di cui hai bisogno.

Poiché nella maggior parte dei casi lo sviluppo del software open source è attivamente influenzato dalla comunità, la decisione di apportare modifiche viene presa abbastanza rapidamente e con precisione: gli sviluppatori del progetto open source si affidano al feedback e ai suggerimenti degli utenti, alle loro segnalazioni di errori riscontrati e altri problemi.

Utilizzo di Graudit per l'analisi della sicurezza del codice

È possibile utilizzare vari strumenti open source per l'analisi statica del codice; non esiste uno strumento universale per tutti i linguaggi di programmazione. Gli sviluppatori di alcuni di essi seguono le raccomandazioni OWASP e cercano di coprire quante più lingue possibile.

Qui useremo Gradiente, una semplice utility da riga di comando che ci permetterà di trovare vulnerabilità nel nostro codice base. Supporta diverse lingue, ma il loro set è ancora limitato. Graudit è sviluppato sulla base dell'utilità grep, che una volta veniva rilasciata sotto licenza GNU.

Esistono strumenti simili per l'analisi del codice statico: Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), Flawfinder e così via. Ma Graudit è molto flessibile e ha requisiti tecnici minimi. Tuttavia potresti avere problemi che Graudit non può risolvere. Quindi puoi cercare altre opzioni qui in questo elenco.

Possiamo integrare questo strumento in un progetto specifico, oppure renderlo disponibile ad un utente selezionato, oppure utilizzarlo contemporaneamente in tutti i nostri progetti. È qui che entra in gioco anche la flessibilità di Graudit. Quindi cloniamo prima il repository:

$ git clone https://github.com/wireghoul/graudit

Ora creiamo un collegamento simbolico per Graudit per utilizzarlo in formato comando

$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit

Aggiungiamo un alias a .bashrc (o qualsiasi file di configurazione che stai utilizzando):

#------ .bashrc ------
alias graudit="~/bin/graudit"

Riavviare:

$ source ~/.bashrc # OR
$ exex $SHELL

Controlliamo se l'installazione è andata a buon fine:

$ graudit -h

Se vedi qualcosa di simile, allora va tutto bene.

Come utilizzare una semplice utility per trovare vulnerabilità nel codice del programma

Testerò uno dei miei progetti esistenti. Prima di eseguire lo strumento è necessario passare un database corrispondente alla lingua in cui è scritto il mio progetto. I database si trovano nella cartella ~/gradit/signatures:

$ graudit -d ~/gradit/signatures/js.db

Quindi, ho testato due file js dal mio progetto e Graudit ha visualizzato sulla console informazioni sulle vulnerabilità nel mio codice:

Come utilizzare una semplice utility per trovare vulnerabilità nel codice del programma

Come utilizzare una semplice utility per trovare vulnerabilità nel codice del programma

Puoi provare a testare i tuoi progetti allo stesso modo. È possibile visualizzare un elenco di database per diversi linguaggi di programmazione qui.

Vantaggi e svantaggi di Graudit

Graudit supporta molti linguaggi di programmazione. Pertanto, è adatto a una vasta gamma di utenti. Può competere adeguatamente con qualsiasi analogo gratuito o a pagamento. Ed è molto importante che vengano ancora apportati miglioramenti al progetto e la comunità non solo aiuta gli sviluppatori, ma anche altri utenti che stanno cercando di capire lo strumento.

Si tratta di uno strumento utile, ma finora non è sempre in grado di individuare esattamente quale sia il problema con un pezzo di codice sospetto. Gli sviluppatori continuano a migliorare Graudit.

Ma in ogni caso è utile prestare attenzione ai potenziali problemi di sicurezza del codice quando si utilizzano strumenti come questo.

Inizio...

In questo articolo ho esaminato solo uno dei tanti modi per individuare le vulnerabilità: i test statici di sicurezza delle applicazioni. Condurre l'analisi statica del codice è semplice, ma è solo l'inizio. Per saperne di più sulla sicurezza della tua base di codice, devi integrare altri tipi di test nel ciclo di vita dello sviluppo del software.

Sui diritti della pubblicità

VPS affidabile e la scelta corretta del piano tariffario ti consentirà di essere meno distratto dallo sviluppo da problemi spiacevoli: tutto funzionerà senza guasti e con tempi di attività molto elevati!

Come utilizzare una semplice utility per trovare vulnerabilità nel codice del programma

Fonte: habr.com

Aggiungi un commento