Continuiamo l’analisi, iniziata nel post precedente, dei tool più interessanti che ho visto nel training al BlackHat per evolvere la strategia DevSecOps. In questo articolo ci focalizziamo sugli strumenti utili per automatizzare i test di sicurezza e per eseguire la gestione delle pipeline. In prima battuta vediamo come impiegare RPA, acronimo di Robotic Process Automation, per identificare le vulnerabilità di sicurezza e migliorare la sicurezza del codice.

RPA test automation e sicurezza del codice

Prima di esaminare i tool è importante fare un piccolo inciso su Robot process automation e test automation nel contesto DevSecOps.

L’automazione delle operazioni soprattutto della parte di testing è ormai fondamentale nell’attuale ecosistema DevSecOps. Esistono diverse modalità di testing la cui differenziante è lo scopo.

Con gli unit test di Security verifico se nel ciclo di sviluppo vengono introdotte vulnerabilità nelle singoli funzioni dell’applicativo mentre con i test di regressione verifico se gli sviluppatori nel rilasciare nuove componenti stanno introducendo bug di sicurezza. Per entrambi gli ambiti l’utilizzo di soluzioni per analisi statica (SAST) è perfetto.

Quando l’applicazione raggiunge uno stato di sviluppo avanzato tanto da essere navigabile si può procedere ad eseguire, in aggiunta ai test funzionali, i i test di Security dinamici (DAST). Per questi ultimi uno dei KPI più importanti è la code coverage ovvero un indicatore della quantità di codice e funzionalità coperte dai test.

Per ottenere una code coverage importante dobbiamo essere in grado di ripetere in maniera automatica flussi complessi di operazioni che sono difficilmente eseguibili dagli usuali strumenti di automation. In questa fase si rendono utili le soluzioni di Robotic Process automation (RPA).

Facciamo un esempio di un flusso che richiede l’uso della RPA prendendo il caso dell’acquisto di un prodotto su un e-commerce per il quale le operazioni da svolgere in sequenza sono:

  • aprire un browser
  • digitare l’url del sito
  • eseguire il login
  • ricercare un prodotto
  • cliccare sul prodotto
  • aggiungere il prodotto al carrello
  • eseguire il checkout

Sintetizzando quindi la Robot process automation si può definire come l’utilizzo di robot che una volta programmati opportunamente riescono a riprodurre operazioni complesse e prendere decisioni sui risultati ottenuti replicando a tutti gli effetti l’operato di un essere umano.

Robotframework

Robotframework come descritto sul sito è un generic open source automation framework. L’utilizzo del tool trova applicazione sia nel lanciare test funzionali che nell’automazione dei test di Security. 

Con Robotframework possiamo automatizzare l’esecuzione di operazioni come la navigazione di un sito web, l’esecuzione del login/logout sia su applicativi web che di sessioni ssh.

Robotframework e Security test automation

Robotframework trova la sua utilità in ambito Cyber in congiunzione con altri strumenti, ad esempio si può realizzare un integrazione tra Robotframework e Zap/Burp suite. Con il primo eseguiamo il login su un portale, otteniamo il cookie di sessione, per poi invocare le API dei proxy menzionati e lanciare scansione autenticate proprio utilizzando il cookie ottenuto. 

Per ottenere un quadro dei test case eseguiti con successo Robotframework genera dei report Html che sono utili al team Security per avere un quadro della postura dell’applicativo.

Personalmente Robotframework lo utilizzerei per l’automazione delle fasi di information gathering e crawling di un applicativo al fine di collezionare velocemente le informazioni sul target oggetto dei test. Prediligo invece eseguire la fase di exploiting con operazioni manuali.

Robotframework potrebbe trovare impiego inoltre per l’esecuzione di recheck a valle di un Penetration test. Si possono creare degli script in grado di riprodurre tutte le fasi delle vulnerabilità indicate nel report e lanciare gli script quando si eseguiranno le verifiche di recheck per appurare se le vulnerabilità sono state effettivamente sanate. 

Gaia

Nel ciclo DevOps è importante delineare tutti gli step che permettono di rilasciare in produzione un software sicuro.

Gaia è stato ideato per questo scopo infatti è un software open source che permette in maniera agevole di creare workflow e pipeline.

Gaia in contrapposizione agli usuali tool di CI/CD rende possibile la creazione di workflow con il concetto di configuration/automation as code ovvero tutte le operazioni possono essere codificate mediante un linguaggio di sviluppo.

A dispetto dei normali software che richiedono la compilazione di file in formato YAML/JSON Gaia supporta i seguenti linguaggi di programmazione.

  • Golang
  • Java
  • Python
  • C++
  • Ruby
  • NodeJS

La sequenza di task delle pipeline possono essere visualizzate graficamente.

Pipeline

Gaia gestione dei secrets

L’utilizzo improprio dei Secrets è un errore comune commesso nella creazione delle pipeline infatti è uno dei punti presenti nella Owasp top ten CI/CD alla voce Insufficient Credential Hygiene. La Owasp top ten CI/CD è una classificazione dei maggiori rischi, che nel 2023 ha visto la sua prima release, analizzando i data breach avvenuti proprio in contesti dove si fa uso di continuous integration e continuous deployment.

Gaia prevede nativamente la gestione dei secrets. Essi vengono memorizzati in maniera cifrata con tecnologia AES e oltre alla sicurezza viene facilitata la loro gestione mediante opportuna interfaccia grafica.

Gaia Security

In ambito Security Gaia potrebbe essere usato per la creazione di pipeline custom nelle quali inseriamo dei workflow per eseguire scansioni di sicurezza statica o dinamica.

Il tool non avendo la necessità di installare plug-in esterni oltre ad essere più leggero presenta una superficie di attacco minore rispetto al blasonato Jenkins in quanto quotidianamente proprio sui plug-in di terze parti vengono scoperte vulnerabilità di sicurezza.

Gaia vantaggi

In sintesi Gaia offre i seguenti vantaggi:

  • pipeline custom
  • scrittura delle pipepile mediante codice
  • gestione dei secrets nativa
  • leggero e user friendly

Conclusioni

Spero che i tool mostrati siano stati utili per migliorare e automatizzare le fasi di analisi di sicurezza del codice.  Abbiamo visto diverse tecnologie open source in grado di soddisfare le analisi di tipo dinamico (DAST) e statico (SAST).

Infine abbiamo analizzato come i tool di automation e gestione workflow Gaia e Robotframework, tipicamente utilizzati per test funzionali, possono trovare un impiego anche nelle attività di Cybersecurity.