Graudit supporta molti linguaggi di programmazione e consente di integrare il testing della sicurezza del codice direttamente nel processo di sviluppo.

Fonte: (Markus Spiske)
Il testing è una parte fondamentale del ciclo di vita dello sviluppo del software. Ci sono molti tipi di testing, ciascuno con il proprio scopo. Oggi voglio parlare della ricerca di problemi di sicurezza nel codice.
È evidente che nelle moderne realtà dello sviluppo software sia fondamentale garantire la sicurezza dei processi. In passato, è stato persino introdotto un termine specifico: DevSecOps. Questo termine si riferisce a una serie di procedure volte a identificare e correggere le vulnerabilità nelle applicazioni. Esistono soluzioni open source specializzate per controllare le vulnerabilità conformemente agli standard , che descrivono i diversi tipi e il comportamento delle vulnerabilità nel codice sorgente.
Ci sono diversi approcci per risolvere i problemi di sicurezza, come il test statico della sicurezza delle applicazioni (SAST), il test dinamico della sicurezza delle applicazioni (DAST), il test interattivo della sicurezza delle applicazioni (IAST), l'analisi dei componenti del software (Software Composition Analysis) e altro ancora.
Il test statico della sicurezza delle applicazioni rileva errori nel codice già scritto. Questo approccio non richiede l'esecuzione dell'applicazione, quindi viene chiamato analisi statica.
Mi concentrerò sull'analisi statica del codice e utilizzerò un semplice strumento open source per dimostrare tutto in pratica.
Perché ho scelto uno strumento open source per l'analisi statica della sicurezza del codice
Ci sono diverse ragioni: innanzitutto, è gratuito, poiché si utilizza uno strumento sviluppato da una comunità di persone affini che vogliono aiutare altri sviluppatori. Se hai un piccolo team o una startup, hai un'opportunità eccellente per risparmiare usando software open source per verificare la sicurezza della tua base di codice. In secondo luogo, ti libera dalla necessità di assumere un team separato di DevSecOps, il che riduce ulteriormente i tuoi costi.
Buoni strumenti open source vengono sempre creati tenendo conto di requisiti superiori in termini di flessibilità. Per questo motivo, possono essere utilizzati praticamente in qualsiasi ambiente, coprendo un'ampia gamma di compiti. È molto più semplice per gli sviluppatori integrare tali strumenti con il sistema che hanno già costruito mentre lavorano ai loro progetti.
Tuttavia, possono sorgere situazioni in cui hai bisogno di una funzione che non è presente nello strumento scelto. In questo caso, hai la possibilità di forkare il codice e sviluppare il tuo strumento con le funzionalità necessarie.
Poiché in molti casi lo sviluppo di software open source è fortemente influenzato dalla comunità, le decisioni riguardo alle modifiche vengono prese abbastanza rapidamente e in modo appropriato: gli sviluppatori del progetto open source si basano su feedback e suggerimenti degli utenti, sui loro rapporti riguardo a bug e altri problemi.
Utilizzo di Graudit per l'analisi della sicurezza del codice
Per l'analisi statica del codice, puoi utilizzare diversi strumenti open source; non esiste uno strumento universale per tutti i linguaggi di programmazione. Gli sviluppatori di alcuni di essi seguono le raccomandazioni di OWASP e cercano di coprire il maggior numero possibile di linguaggi.
Qui utilizzeremo , un semplice strumento da linea di comando che ci permetterà di trovare vulnerabilità nel nostro codice. Supporta diversi linguaggi, ma il suo set è comunque limitato. Graudit è stato sviluppato sulla base dello strumento di servizio grep, che è stato inizialmente rilasciato sotto licenza GNU.
Esistono strumenti simili per l'analisi statica del codice, come il Rough Auditing Tool for Security (RATS), il Securitycompass Web Application Analysis Tool (SWAAT), flawfinder e così via. Ma Graudit è molto flessibile e ha requisiti tecnici minimi. Tuttavia, potrebbero sorgere compiti che Graudit non è in grado di risolvere. In tal caso, puoi cercare altre opzioni in questo elenco .
Possiamo integrare questo strumento in un progetto specifico, renderlo disponibile per un utente scelto, oppure utilizzarlo contemporaneamente in tutti i nostri progetti. Anche in questo si manifesta la flessibilità di Graudit. Quindi, iniziamo clonando il repository:
$ git clone https://github.com/wireghoul/grauditOra creiamo un collegamento simbolico per Graudit, in modo da poterlo utilizzare nel formato della riga di comando
$ cd ~\/bin && mkdir graudit
$ ln --symbolic ~\/graudit\/graudit ~\/bin\/grauditAggiungiamo un alias in .bashrc (o in un altro file di configurazione che stai usando):
#------ .bashrc ------
alias graudit="~/bin/graudit"Ricarichiamo:
$ source ~\/\.bashrc # OPPURE
$ exex $SHELL
Controlliamo se l'installazione è andata a buon fine:
$ graudit -hSe vedi qualcosa di simile, allora va tutto bene.

Testerò uno dei miei progetti già esistenti. Prima di eseguire lo strumento, è necessario passare un database che corrisponda al linguaggio in cui è scritto il mio progetto. I database si trovano nella cartella ~\/gradit\/signatures:
$ graudit -d ~\/gradit\/signatures\/js.dbQuindi, ho testato due file js del mio progetto e Graudit ha mostrato nella console informazioni sulle vulnerabilità nel mio codice:


Puoi provare a testare i tuoi progetti allo stesso modo. Puoi vedere l'elenco dei database per diversi linguaggi di programmazione .
Vantaggi e svantaggi di Graudit
Graudit supporta numerosi linguaggi di programmazione. Pertanto, è adatto per un'ampia gamma di utenti. Può competere degnamente con qualsiasi analogo gratuito o a pagamento. È molto importante che il progetto continui a ricevere aggiornamenti, e che la comunità non solo assista gli sviluppatori, ma anche gli altri utenti che cercano di comprendere lo strumento.
È uno strumento conveniente, ma per ora non sempre può indicare con precisione quale sia il problema relativo a una sezione di codice sospetta. Gli sviluppatori continuano a perfezionare Graudit.
Ma in ogni caso è utile prestare attenzione ai potenziali problemi di sicurezza nel codice, utilizzando strumenti simili.
Inizio…
In questo articolo ho coperto solo uno dei molti modi per cercare vulnerabilità: il testing statico della sicurezza delle applicazioni. Effettuare un'analisi statica del codice è facile, ma è solo l'inizio. Per sapere di più sulla sicurezza della tua base di codice, è necessario integrare nel ciclo di vita dello sviluppo software altri tipi di testing.
In base alla pubblicità
e una scelta corretta del piano tariffario ti permetteranno di distrarti meno dallo sviluppo per problemi sgradevoli — tutto funzionerà senza interruzioni e con un uptime molto elevato!
Fonte: habr.com
