Aller au contenu

Stage Security-analysis (SAST)

Le DevOps est une culture qui a boulversé pas mal de chose, notemment sur la sécurité, avec la notion de ShiftLeft.
On souhaite responsabiliser d'avantage le développeur sur cette problématique de produire du code le plus sur possible. Je te montre ici quelques job qui pourrait t'aider pour améliorer tout cela.

Example avec NodeJS

Audit des packages - NPM

NodeJS te permet te faciliter ton développement avec des modules NPM. Ce package manager à des fonctions built-in pour te permetre d'analyser la présence d'eventuel CVE en comparant les dépendances de ton modules avec des bases de données autour de la sécurité.

Exemple de code en CI/CD :

1
2
3
4
5
audit: 
    stage: sast
    image: node:20-alpine3.18
    script:
        - npm audit

Analyse d'image Docker - Trivy

Aquatrivy à un super outils open source, Trivy, qui te permet en plus d'analyser tes modules, ton image Docker. Ainsi il va pouvoir analyser les CVE que peut potentiellement contenir ta base-image.

Exemple de code en CI/CD :

trivy:
    stage: sast
    variables:
        TRIVY_USERNAME: $MOMO_REGISTRY_USERNAME
        TRIVY_PASSWORD: $MOMO_REGISTRY_TOKEN
    image: 
        name:  aquasec/trivy:0.49.0
        entrypoint: [""]
    script:
        - trivy image momotoculteur/simple-test:1.0.0

Warning

Je montre ici un simple example qui target une image fixe à scanner, mais tu dois variabilier l'image docker que tu build au job précedent. Par example trivy image momotoculteur/simple-test:${CI_COMMIT_SHA} pour un build de dev.
A toi de définir le bon tag pour target à la fois une image de dev, mais aussi l'image final une fois que tu mergeras ta branche sur master qui elle aura un tag respectant par exemple le SEMVER

Example d'analyse effectué par Trivy :

trivy-scan-image-docker-example

Tu n'as nullement besoin d'installer Docker pour pull l'image. Tu dois néanmoins setter les 2 variables d'environnements pour Trivy.


Trivy peut aussi analyser les leaks, secrets et autre credentials sensible que tu pourrais leaks, lorsqu'il analyse une image Dockerfile si celui-ci est présent dans ton code source:

trivy-dockerfile-leaks-detection

Leaks & Secrets Detections

Repository analysis - GitLeaks

GitLeaks va te permettre de détecter si par mégarde tu as pu faire fuiter un secret, token, et autres credentials et données sensible dont tu ne devrais pas commiter sur le répo.

Tu peux l'utiliser pour scanner le repository Git dans tout ses commits via la commande gitleaks detect, ou scanner ce que tu développes en local mais que tu n'aurais pas encore commité avec gitleaks protect.

Exemple de code en CI/CD :

1
2
3
4
5
6
7
gitleaks:
    stage: sast
    image: 
        name: zricethezav/gitleaks:v8.18.2
        entrypoint: [""]
    script:
        - gitleaks detect -s . -v

Example d'output lors de la détection d'un potentiel leak :

gitleaks-report

Helm Chart analysis - Trivy

Trivy peut aussi t'analyser un helm chart que cela soit pour de la misconfiguration et autres best-practices, ou encore du secrets leaks aussi.

Exemple de code en CI/CD :

1
2
3
4
5
6
7
trivy-helm:
    stage: sast
    image: 
        name:  aquasec/trivy:0.49.0
        entrypoint: [""]
    script:
        - trivy conf --helm-values simple-project/values.yaml ./simple-project

Exemple de best-practices pour creer un Helm Chart évitant des problèmes de sécurité :

trivy-helm-chart-analysis

Dockerfile analysis - Trivy

Trivy peut aussi analyser un Dockerfile afin d'y detecter toute sorte de leaks, mais aussi te propose des best-practices !

Exemple de code en CI/CD :

1
2
3
4
5
6
7
trivy-docker:
    stage: sast
    image: 
        name:  aquasec/trivy:0.49.0
        entrypoint: [""]
    script:
        - trivy config ./Dockerfile

Exemple ici de sécurité sur un Dockerfile qui ne défini pas un USER spécifique et donc potentiellement être lancé avec un utilisteur root:

trivy-dockerfile-analysis

Mais Trivy peut aussi te donner des best-practices comme par example de définir un tag bien précis quand tu spécifies une base image. Tu pourrais potentiellement sur un futur build avoir une update d'image majeur et avoir des API non-compatibles qui te casse ton application

trivy-dockerfile-analysis2

IaC Terraform analysis - Trivy

Trivy peut analysis ton infrastructure-as-code, notemment avec le célèbre Terraform.

Exemple de code en CI/CD :

1
2
3
4
5
6
7
trivy-terraform-iac:
    stage: sast
    image: 
        name:  hashicorp/terraform:1.7.2
        entrypoint: [""]
    script:
        - trivy conf .

Example de déclaration d'un CDN qui n'utilise pas de Web Application Firewall (WAF):

trivy-iac-terraform-analysis

IaC Terraform analysis - TfSec

TfSec est développé aussi par AquaSecurity. Il est utilisé en interne par Trivy, mais celui-ci embarque une version allégé avec un poil moins de fonctionnalité.
En voici la comparaison : trivy-tfsec-feature-comparaison-terraform-iac-analysis

Exemple de code en CI/CD :

1
2
3
4
5
6
7
tfsec-terraform-iac:
    stage: sast
    image: 
        name:  aquasec/tfsec:v1.28.5
        entrypoint: [""]
    script:
        - tfsec .

IaC Terraform analysis - Terrascan

De la même façon que Trivy, Terrascan te permet de mettre en évidence les mauvaises configurations qui pourrait amener à des leaks et d'autres soucis.

Exemple de code en CI/CD :

1
2
3
4
5
6
7
terrascan-terraform-iac:
    stage: sast
    image: 
        name:  tenable/terrascan:1.18.11
        entrypoint: [""]
    script:
        - terrascan scan

Alt text

IaC Terraform analysis - Kics

Il existe d'autres outils pour scanner ton infra as code, tel que Kics.
Plus d'infos :

  • https://github.com/Checkmarx/kics

Cloud provider analysis - Prowler

Prowler est un tool qui va te permettre de mettre en évidence des soucis de configuration. Il va te donner les best-practices selon ton cloud provider.

cloud-provider-analysis-prowler cloud-provider-analysis-prowler2