Aller au contenu

Fonctionnalité : security (--security / config.toml)

Navigation : Documentation > Commandes CLI > Sécurité (--security)

Description

L'option transversale security active l'analyse de sécurité et la vérification cryptographique multi-plateformes en temps réel des paquets Érable. L'orchestrateur interroge en parallèle (par-each) les bases publiques de vulnérabilités, les registres de transparence logicielle et les moteurs anti-malware internationaux :

  1. OSV.dev (Open Source Vulnerabilities) — Base de données ouverte de vulnérabilités (CVE / GHSA) opérée par l'OpenSSF / Google (https://api.osv.dev/v1/query), interrogeant en temps réel le paquet et sa version pour évaluer le niveau de criticité (--cve-level).
  2. CIRCL Hashlookup (Luxembourg / Union Européenne) — Opérée par le Computer Incident Response Center Luxembourg (https://hashlookup.circl.lu/lookup/sha256/<sha256>), 100 % ouverte et sans clé API requise. Elle vérifie les empreintes SHA-256 par rapport aux référentiels de confiance européens (NSRL, distributions Linux/BSD/Windows certifiées) et aux listes de malwares connus (KnownMalicious).
  3. Abuse.ch MalwareBazaar (Suisse) — Opérée par l'Institut de Cybersécurité de la Bern University of Applied Sciences (https://mb-api.abuse.ch/api/v1/). Elle identifie les signatures de malwares actifs, familles et indicateurs de compromission (IoC).
  4. Sigstore Rekor — Registre public de transparence cryptographique (https://rekor.sigstore.dev/api/v1/index/retrieve). Vérifie l'existence d'attestations de provenance logicielle et de signatures SLSA / Cosign pour le hash SHA-256 (informatif et non bloquant).
  5. VirusTotal v3 (Optionnel) — Plateforme d'analyse multi-moteurs antivirus (https://www.virustotal.com/api/v3/files/<sha256>), activable via --virus-total-api-key ou la configuration. Érable applique un cadencement intelligent avec respect de la limite de requêtes (4 requêtes/minute sur le tier gratuit) et notification préventive d'attente.

Elle peut être déclenchée :

  • En ligne de commande (CLI) via le flag --security (ou son raccourci -s) sur les commandes erable install, erable apply et erable list.
  • Par fichier de configuration dans le manifeste de déploiement passé à erable apply (bundle.toml) ou globalement dans ~/.erable/config.toml.

Parallélisation Native (par-each)

Afin de garantir des performances optimales sans latence séquentielle :

  • Parallélisation inter-paquets : lors d'une installation multiple ou d'un scan complet du parc installé, chaque paquet est analysé indépendamment et concurremment via par-each.
  • Parallélisation inter-plateformes : pour chaque empreinte cryptographique (archive téléchargée et binaires cibles extraits), les requêtes vers OSV.dev, CIRCL Hashlookup, MalwareBazaar, Sigstore Rekor et VirusTotal s'exécutent simultanément en parallèle.

Politique d'Évaluation et Statuts

Statut Condition d'Attribution Action sur install / apply Action sur list --security
OK Aucune menace détectée sur l'ensemble des plateformes actives ET aucune CVE ne dépasse le seuil --cve-level. Installation finalisée (hardlinks current + trampolines). Affiché dans [OK] Paquets certifies conformes.
EXEMPT Le paquet figure dans la liste d'exceptions --exclude-security (CLI, bundle.toml ou config.toml). Audit ignoré, installation immédiate sans blocage. Affiché dans [EXEMPT] Paquets exemptes d'audit.
WARN 1. Empreinte inconnue (HTTP 404) sur CIRCL Hashlookup ou VirusTotal.
2. Vulnérabilités CVE détectées mais inférieures au seuil configuré par --cve-level.
3. Plateforme injoignable (coupure réseau / timeout / rate-limit) en mode fail-open.
Installation autorisée avec mention d'avertissement explicite dans le rapport. Affiché dans [WARN] Paquets autorises avec avertissements.
KO 1. Malware confirmé sur MalwareBazaar, CIRCL (KnownMalicious) ou VirusTotal (malicious > 0).
2. Vulnérabilités CVE dépassant le seuil --cve-level (none, low, medium, high, critical).
Blocage immédiat : suppression du staging, aucun trampoline créé, code retour 1. Affiché dans [KO] Paquets bloques / non conformes avec détail de l'API et code retour 1.

Système d'Exceptions de Sécurité (--exclude-security)

Pour les outils internes, scripts d'entreprise ou binaires sur mesure non indexés ou signalés à tort :

  • En ligne de commande : --exclude-security (-x) [pkg1, pkg2]
  • Dans bundle.toml : exclude_security = ["mon-outil-interne"]
  • Dans ~/.erable/config.toml : exclude_security = ["mon-outil-interne"]

Ces paquets reçoivent le statut [EXEMPT] et sont installés ou listés sans déclencher de blocage de sécurité.


Seuil de Vulnérabilités CVE (--cve-level)

Le paramètre --cve-level (ou cve_level dans la configuration) définit le niveau de tolérance aux vulnérabilités connues répertoriées sur OSV.dev :

  • none (par défaut) : Tolérance zéro, toute CVE connue bloque l'installation en KO.
  • low : Bloque si au moins une CVE MEDIUM, HIGH ou CRITICAL est détectée.
  • medium : Bloque si au moins une CVE HIGH ou CRITICAL est détectée.
  • high : Bloque uniquement si une CVE CRITICAL est détectée.
  • critical : Autorise les CVEs avec avertissement WARN sans blocage bloquant.

Intégration VirusTotal v3 (--virus-total-api-key)

Pour activer l'analyse multi-antivirus approfondie avec VirusTotal :

  • En CLI : --virus-total-api-key "<cle>"
  • Variable d'environnement : $env.ERABLE_VT_API_KEY ou $env.VIRUSTOTAL_API_KEY
  • Dans le fichier de configuration : virus_total_api_key = "<cle>"

En cas d'atteinte du quota de requêtes par minute (4 req/min sur compte public), Érable avertit l'utilisateur et gère l'attente préventive automatique de 15 secondes pour garantir la complétion du scan.


Utilisation en Ligne de Commande (CLI)

1. Installation sécurisée (erable install)

# Installation avec vérification multi-plateformes et tolérance zéro CVE
erable install jq --security

# Installation avec clé VirusTotal et exclusion d'un paquet interne
erable install jq my-tool --security --virus-total-api-key "xxxx" -x ["my-tool"]

# Installation avec tolérance aux CVE de niveau faible/moyen
erable install ripgrep -s --cve-level high

2. Déploiement déclaratif sécurisé (erable apply)

# Application avec vérification de sécurité
erable apply ./fleet-bundle.toml --security

# Application en surchargeant la clé VirusTotal et les exceptions
erable apply ./fleet-bundle.toml -s --virus-total-api-key "xxxx" -x ["legacy-app"]

3. Audit de sécurité du parc installé (erable list)

# Audit complet multi-plateformes de tous les paquets installés
erable list --security

# Audit avec VirusTotal et seuil CVE
erable list -s --virus-total-api-key "xxxx" --cve-level medium

Configuration Complète (config.toml & bundle.toml)

~/.erable/config.toml

[security]
enabled = true
cve_level = "medium"
virus_total_api_key = "votre_cle_virustotal"
exclude_security = ["mon-outil-maison", "script-local"]

# URLs personnalisées optionnelles
circl_url = "https://hashlookup.circl.lu/lookup/sha256"
malwarebazaar_url = "https://mb-api.abuse.ch/api/v1/"

Manifeste déclaratif (bundle.toml)

[security]
enabled = true
cve_level = "high"
exclude_security = ["outil-interne"]

[[packages]]
name = "kubectl"

[[packages]]
name = "outil-interne"

Exemple de Rapport Complet

==========================================================
   Rapport de Securite Erable - Installation de Paquets [install --security]
   Plateformes : OSV.dev, CIRCL Hashlookup [LU/UE], MalwareBazaar [CH], Sigstore Rekor, VirusTotal
==========================================================
   Bilan : 1 OK | 1 EXEMPT | 1 WARN | 1 KO [Total: 4]
----------------------------------------------------------
 [OK] Paquets certifies conformes :
   + openssl v3.3.2 : Certifie sain sans alerte sur l'ensemble des plateformes
       [OSV.dev: OK] Aucune vulnerabilite CVE/GHSA connue pour openssl v3.3.2
       [CIRCL Hashlookup: OK] Binaire 'openssl.exe' -> Certifie dans RDS_2025.03.1
       [Sigstore Rekor: OK] Binaire 'openssl.exe' -> Attestation cryptographique certifiee
 [EXEMPT] Paquets exemptes d'audit de securite [--exclude-security] :
   * mon-outil v1.0.0 : Paquet 'mon-outil' exempte d'audit de securite [--exclude-security]
       [EXEMPT] mon-outil v1.0.0 -> Exception de securite activee
 [WARN] Paquets autorises avec avertissements [Inconnus / mode degrade] :
   ! custom-cli v0.5.0 : Hash non repertorie sur VirusTotal (404)
       [OSV.dev: OK] 0 CVE repertoriee
       [VirusTotal: WARN] Binaire 'custom-cli.exe' -> Hash non repertorie sur VirusTotal [HTTP 404]
 [KO] Paquets bloques / non conformes :
   x suspect-pkg v1.0.0 : Alerte VirusTotal : 66 moteurs antivirus ont signale ce fichier
       [VirusTotal: KO] Binaire 'suspect-pkg.exe' -> 66 detections malveillantes, 0 suspectes
==========================================================

Voir aussi