Graudit supporta molteplici linguaggi di programmazione e consente di integrare il test della sicurezza della base di codice direttamente nel processo di sviluppo.

Fonte: (Markus Spiske)
Il testing è una parte fondamentale del ciclo di vita dello sviluppo software. Esistono molti tipi di testing, ognuno dei quali affronta specifiche problematiche. Oggi desidero parlare della ricerca di problemi di sicurezza nel codice.
È evidente che nelle moderne realtà dello sviluppo software sia fondamentale garantire la sicurezza dei processi. Un tempo è stato persino coniato un termine speciale, DevSecOps. Questo termine si riferisce a un insieme di procedure volte a identificare e risolvere le vulnerabilità all'interno dell'applicazione. Esistono soluzioni open source specializzate per il controllo delle vulnerabilità in conformità con gli standard , che descrivono diversi tipi e comportamenti delle vulnerabilità nel codice sorgente.
Esistono diversi approcci per affrontare le problematiche 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 software (Software Composition Analysis) e così via.
Il test statico della sicurezza delle applicazioni rileva errori nel codice già scritto. Questo approccio non richiede l'esecuzione dell'applicazione, pertanto è noto come 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 per questo: in primo luogo, è gratuito, poiché stai utilizzando uno strumento sviluppato da una comunità di persone affini, che desiderano aiutare altri sviluppatori. Se hai un piccolo team o una startup, hai l'occasione perfetta per risparmiare utilizzando software open source per controllare la sicurezza della tua base di codice. In secondo luogo, questo ti libera dalla necessità di assumere un team separato di DevSecOps, il che riduce ulteriormente i tuoi costi.
I buoni strumenti open source sono sempre progettati tenendo conto di requisiti elevati di flessibilità. Pertanto, possono essere utilizzati praticamente in qualsiasi ambiente, coprendo una vasta gamma di attività. Per gli sviluppatori è molto più semplice 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 funzionalità che non è presente nello strumento che hai scelto. In questo caso, hai la possibilità di forkare il 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 di software open source è fortemente influenzato dalla comunità, le decisioni sulle modifiche vengono prese abbastanza rapidamente e in modo pertinente: gli sviluppatori del progetto open source si basano sui feedback e le suggerimenti degli utenti, così come sui loro report riguardo a bug e altri problemi.
Utilizzare Graudit per l'analisi della sicurezza del codice
Per l'analisi statica del codice possono essere utilizzati 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 useremo , una semplice utility da riga di comando che ci consentirà di trovare vulnerabilità nella nostra base di codice. Supporta diversi linguaggi, ma il numero è comunque limitato. Graudit è stato sviluppato sulla base della utility di sistema grep, che una volta è stata rilasciata con licenza GNU.
Esistono strumenti simili per l'analisi statica del codice, come Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder e così via. Tuttavia, Graudit è molto flessibile e ha requisiti tecnici minimi. Detto ciò, potrebbero sorgere delle esigenze che Graudit non è in grado di soddisfare. In tal caso, puoi cercare altre opzioni in questa .
Possiamo integrare questo strumento in un progetto specifico, renderlo disponibile per un utente selezionato o utilizzarlo simultaneamente in tutti i nostri progetti. Questa è un'altra dimostrazione della flessibilità di Graudit. Iniziamo clonando il repository:
$ git clone https://github.com/wireghoul/grauditOra creiamo un collegamento simbolico per Graudit, in modo da utilizzarlo in formato comando
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/grauditAggiungiamo un alias nel .bashrc (o in un altro file di configurazione che utilizzi):
#------ .bashrc ------
alias graudit="~/bin/graudit"Riavviamo:
$ source ~/ .bashrc # O
$ exex $SHELL
Verifichiamo se l'installazione è avvenuta con successo:
$ graudit -hSe vedi qualcosa di simile, significa che è tutto a posto.

Testerò uno dei miei progetti già esistenti. Prima di avviare lo strumento, è necessario fornire un database corrispondente alla lingua 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 riportato nella console informazioni sulle vulnerabilità nel mio codice:


Puoi provare a testare i tuoi progetti nello stesso modo. Puoi visualizzare l'elenco dei database per diversi linguaggi di programmazione .
Vantaggi e svantaggi di Graudit
Graudit supporta numerosi linguaggi di programmazione. Pertanto, è adatto a un ampio spettro di utenti. Può competere bene con qualsiasi alternativa gratuita o a pagamento. È molto importante che il progetto continui a ricevere aggiornamenti e che la comunità non solo aiuti gli sviluppatori, ma anche altri utenti che cercano di comprendere lo strumento.
È uno strumento utile, ma per ora non riesce sempre a identificare con precisione quale sia il problema relativo a una parte sospetta del codice. Gli sviluppatori continuano a migliorare Graudit.
Ma in ogni caso è utile prestare attenzione ai potenziali problemi di sicurezza nel codice, utilizzando strumenti simili.
Inizio…
In questo articolo ho trattato solo uno dei tanti modi per identificare vulnerabilità: il testing statico della sicurezza delle applicazioni. Effettuare un'analisi statica del codice è semplice, ma è solo l'inizio. Per conoscere meglio la sicurezza della vostra base di codice, è necessario integrare nel ciclo di vita dello sviluppo del software altri tipi di testing.
In pubblicità
e la corretta scelta del piano tariffario permetteranno di dedicarsi meno alla risoluzione di fastidiosi problemi — tutto funzionerà senza intoppi e con un uptime molto elevato!
Fonte: habr.com
