6 KiB
6 KiB
Vulnerability Scanning
Ce document décrit comment scanner les vulnérabilités dans le projet Veza Backend API.
🔒 Scan des Dépendances Go
Installation de govulncheck
go install golang.org/x/vuln/cmd/govulncheck@latest
Ou via le Makefile :
make install-tools
Exécution locale
Scan complet
govulncheck ./...
Scan avec rapport détaillé
govulncheck -json ./... > vulncheck-report.json
govulncheck ./... > vulncheck-report.txt
Via Makefile
make security
Cette commande exécute :
gosecpour l'analyse statique de sécuritégovulncheckpour les vulnérabilités des dépendances
Interprétation des résultats
- CRITICAL : Vulnérabilité critique nécessitant une action immédiate
- HIGH : Vulnérabilité élevée nécessitant une attention prioritaire
- MEDIUM : Vulnérabilité moyenne à traiter
- LOW : Vulnérabilité faible, peut être traitée plus tard
Correction des vulnérabilités
- Identifier la dépendance vulnérable dans le rapport
- Vérifier si une version corrigée existe :
go list -m -u <package> - Mettre à jour la dépendance :
go get -u <package>@latest go mod tidy - Re-scanner pour vérifier :
govulncheck ./...
🐳 Scan des Images Docker
Installation de Trivy
Via Homebrew (macOS)
brew install trivy
Via Docker
docker pull aquasec/trivy:latest
Via script d'installation
# Linux
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
echo "deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install trivy
Exécution locale
Construire l'image Docker
make docker-build
# ou
docker build -t veza-backend-api:scan .
Scanner l'image
# Scan avec sortie table
trivy image veza-backend-api:scan
# Scan avec sortie JSON
trivy image -f json -o trivy-report.json veza-backend-api:scan
# Scan uniquement CRITICAL et HIGH
trivy image --severity CRITICAL,HIGH veza-backend-api:scan
# Scan avec ignore des vulnérabilités non corrigées
trivy image --ignore-unfixed veza-backend-api:scan
Via Docker (si Trivy n'est pas installé localement)
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
aquasec/trivy:latest image veza-backend-api:scan
Scan d'un fichier Dockerfile
trivy fs --security-checks vuln .
🔄 CI/CD
GitHub Actions
Le workflow .github/workflows/vulnerability-scan.yml exécute automatiquement :
-
Scan Go (govulncheck) :
- Sur chaque push/PR vers
mainoudevelop - Tous les lundis à 2h UTC (schedule)
- Bloque le merge si HIGH/CRITICAL trouvées
- Sur chaque push/PR vers
-
Scan Docker (Trivy) :
- Sur chaque push/PR (mode gate)
- Sur schedule (mode report only)
- Upload des résultats dans GitHub Security
Déclenchement manuel
# Via GitHub CLI
gh workflow run vulnerability-scan.yml
# Via l'interface GitHub
# Actions > Vulnerability Scan > Run workflow
📊 Exemples de Rapports
Rapport govulncheck
Vulnerability #1: GO-2024-XXXX
Package: github.com/example/package
Version: v1.2.3
Fixed in: v1.2.5
Severity: HIGH
Description: Description of the vulnerability
Call stacks:
- main.go:42: functionCall()
Rapport Trivy
veza-backend-api:scan (alpine 3.18.0)
Total: 15 (CRITICAL: 2, HIGH: 5, MEDIUM: 6, LOW: 2)
┌─────────────────────┬────────────────┬──────────┬─────────────────────┐
│ Library │ Vulnerability │ Severity │ Installed Version │
├─────────────────────┼────────────────┼──────────┼─────────────────────┤
│ openssl │ CVE-2024-XXXX │ CRITICAL │ 3.1.0-r0 │
│ libcrypto │ CVE-2024-YYYY │ HIGH │ 3.1.0-r0 │
└─────────────────────┴────────────────┴──────────┴─────────────────────┘
🛠️ Intégration dans le Makefile
Le Makefile inclut déjà une cible security :
make security
Cette commande exécute :
gosec: Analyse statique de sécuritégovulncheck: Scan des vulnérabilités Go
Pour ajouter le scan Docker :
# Ajouter dans le Makefile
docker-scan: docker-build
@echo "$(GREEN)🔒 Scan de l'image Docker...$(NC)"
@trivy image $(DOCKER_IMAGE):$(DOCKER_TAG)
⚠️ Mode "Report Only"
Par défaut, le workflow CI bloque les PRs si des vulnérabilités HIGH/CRITICAL sont trouvées.
Pour activer le mode "report only" (ne bloque pas), modifier le workflow :
- name: Check for HIGH/CRITICAL vulnerabilities
run: |
# ... scan ...
exit 0 # Ne pas bloquer, juste reporter
📝 Bonnes Pratiques
- Scanner régulièrement : Exécuter les scans au moins une fois par semaine
- Mettre à jour les dépendances : Maintenir les dépendances à jour
- Réviser les rapports : Analyser les vulnérabilités et prioriser les corrections
- Documenter les exceptions : Si une vulnérabilité ne peut pas être corrigée immédiatement, documenter pourquoi
- Automatiser : Utiliser les workflows CI pour automatiser les scans