Sicurezza DevOps: strumenti OpenSource per i DevSecOps del futuro – Parte 1
Negli ultimi 2 anni l’approccio DevSecOps, ossia DevOps con focus mirato all’ambito sicurezza, sta guadagnando sempre più attenzione e con esso i nuovi strumenti che ne facilitano l’implementazione. In questo articolo forniremo un elenco di strumenti disponibili ad oggi, illustrando lo stack di misure e pratiche che possono essere integrate in una delle fasi di Software development Life Cycle (SDLC) per i DevOps, vedremo quindi concetti quali Threat modelling, SAST, DAST, SCA, scansione delle immagini Docker, scansione Kubernetes e AWS Audit.
L’articolo sarà diviso in due parti, la prima delle quali riguarda i Dev, partendo da una delle visioni dell’approccio DevSecOps, preso da holisticsecurity:
Threat Modeling
La modellazione delle minacce nel contesto di Secure Development Lifecycle è il processo di analisi di un’architettura software per potenziali vulnerabilità e tecnologie non sicure. Per ridurre il costo dal punto di vista della sicurezza in fase di aggiunta delle nuove funzionalità, la soluzione potrebbe essere l’implementazione di un processo di verifica della sicurezza e delle informazioni in fase di progettazione dell’architettura. In questa fase vengono formati i requisiti degli specialisti della sicurezza per le applicazioni. Questo approccio è utilizzato, infatti, in tutte le pratiche DevSecOps e ha preso un nome: Shift security to the left (sposta la sicurezza a sinistra).
Per dare la vita a questo processo nello sviluppo con un’alta frequenza di rilasci in una grande azienda IT, la modellazione delle minacce deve essere automatizzata. Ecco alcuni strumenti open-source che possono aiutare in questo senso.
OWASP Threat Dragon
Un strumento abbastanza semplice per la simulazione delle minacce. L’utente disegna l’architettura del software, evidenziando le minacce che possono seguire la metodologia STRIDE. Nessuna automazione, ma quando tutti i processi sono già strutturati, può essere utile. Questo strumento viene utilizzato in particolare per la modellazione delle minacce su GitHub.
Esempio diagramma:
Materialize threats tool
Materialize-threats – è un framework Python che consente di convertire i diagrammi dell’architettura software dal servizio app.diagrams.net (draw.io) in un grafo, salvarlo in un database e quindi poter lavorare utilizzando le query SQL. Inoltre, lo strumento può generare anche i test in linguaggio Gherkin.
Per poter ottenere i test Gherkin possiamo seguire questi step:
- Disegnare un diagramma dell’interazione dei componenti in app.diagrams.net (draw.io), in base al flusso dei dati.
- Evidenziare delle zone attendibili sul diagramma, secondo la metodologia Rapid Threat Model Prototyping (c’è una spiegazione nel file readme).
- Salvare file .drawio
- Eseguire materialize.py con file di .drawio
- Ottenere uno scenario delle minacce nel formato Gherkin
Questo esempio dell’architettura in app.diagrams.net (draw.io), può essere usato come input Materialise Threats:
Il risultante test Gherkin è il seguente:
Non ci fermeremo troppo su questo argomento, perché il principio di funzionamento è simile ovunque.
Ecco alcuni altri strumenti di modellazione delle minacce open-source:
Analisi statica delle vulnerabilità delle applicazioni (SAST)
Si passa alla fase di testing, ovvero l’analisi statica del codice. Esistano tante librerie di analizzatori di codice. Gli strumenti open-source nella maggior parte sono scritti per una particolare lingua di programmazione. Ecco una raccolta:
Ma ci sono anche alcuni strumenti piuttosto curiosi che possono essere applicati universalmente.
Salus (Security Automation as a Lightweight Universal Scanner)
Un container docker dove ci sono diversi analizzatori statici contemporaneamente, come Bandit, Gosec, Brakeman, ed anche analizzatori dei componenti open-source (Ruby, Node.js, Python, Go).
Per lanciare:
# Apri la directory dove vuoi lanciare salus $ cd /path/to/rep # Esegui passando la directory attuale $ docker run --rm -t -v $(pwd):/home/repo coinbase/salu
Come output, riceviamo un report in formato JSON/YAML. Qui troverete una guida per integrare questo tool nella vostra CircleCI.
ShiftLeft Scan
Lo strumento funziona in modo simile a Salus, ma con il supporto più ampio di analizzatori statici. Nel repository potete vedere l’elenco dei analizzatori statici che sono stati inseriti nell’immagine docker (gosec, find-sec-bugs, salmo, bandit, …). Anche gli analizzatori per terraform, bash, kubernetes sono presenti nell’immagine Docker.
Esempio per avere un’analisi statica di un progetto Python:
$ docker run --rm -e "WORKSPACE=${PWD}" -v "$PWD:/app" shiftleft/sast-scan scan --src /app --type python
Questo strumento ha anche una integrazione con l’IDE:
GitLab SAST
Gitlab è una piattaforma DevOps molto popolare, ma tra l’altro ha è un set gratuito di diversi SAST open-source che possono essere collegati immediatamente alla pipeline. Gitlab offre anche la possibilità di integrare con SCA, ricerca segreti, fuzzing e altre pratiche DevSecOps, ma la gestione centralizzata di tutti gli strumenti sarà disponibile solo nella versione Gold.
Esempio integrazione SAST nella pipeline:
Ricerca segreti
Un progetto può contenere non solo le vulnerabilità nel proprio codice e nei componenti open-source, ma anche segreti come password, token, chiavi private ecc. Ovviamente, se il vostro codice contiene una password per un database critico, non è possibile mettere nel repository. A tal fine, ci sono una serie di strumenti che possono aiutarti a trovare segreti. Anche questi strumenti hanno il principio di funzionamento che è quasi lo stesso ovunque.
git-secrets
$ git secrets --scan /path/to/ file
Gitleaks
$ gitleaks --repo-path = <percorso del repository> $ gitleaks --repo = <url di github>
Disponibile anche come azione Github.
TruffleHog
TruffleHog è lo strumento molto famoso che cerca segreti utilizzando sia espressioni regolari.
$ trufflehog [-h] [--json] [--regex] [--rules RULES] [--entropy DO_ENTROPY] [--since_commit SINCE_COMMIT] [--max_depth MAX_DEPTH] git_url
Gitguardian
Piattaforma SaaS per la ricerca dei segreti. Esiste anche una versione a pagamento.
Nota. Per memorizzare i segreti e nasconderli nel codice sorgente o nei file di configurazione, è necessario utilizzare soluzioni come Vault (HashiCorp Vault, conjur, ecc..)
Conclusioni
E con questo è tutto per questa prima parte dedicata all’ambito Dev , nel prossimo articolo ci dedicheremo agli strumenti open-source della parte Ops, in modo da completare la copertura della metodologia DevSecOps nella sua interezza.
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.