🔒 Sécurité

security-dependency-audit

Audit de sécurité des dépendances — détection de vulnérabilités connues, mises à jour critiques et gestion du cycle de vie des packages.

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- security-dependency-audit --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } security-dependency-audit -Launch"

🚀 Déjà installé ?

claude "/security-dependency-audit"

Ou tapez /security-dependency-audit dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

audit dépendancesvulnérabilité npmCVEdépendance vulnérablenpm auditdotnet auditsupply chain securitydependabot

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/skills/security-dependency-audit ~/.claude/skills/

Payload du plugin : skills/security-dependency-audit · source éditable : security-skills/dependency-audit

📖 Manuel

Audit de Sécurité des Dépendances

Workflow en 5 étapes

1. Scanner — détecter les vulnérabilités

Lancer l'outil natif de l'écosystème, toujours avec les transitives :

# .NET
dotnet list package --vulnerable --include-transitive

# npm / pnpm / yarn
npm audit --json
pnpm audit --json
yarn npm audit --json

# Python
pip-audit -r requirements.txt --output json

# Go
govulncheck ./...

# Rust
cargo audit

# Multi-écosystème (recommandé en CI)
trivy fs . --scanners vuln --exit-code 1

2. Évaluer — prioriser par impact réel

Ne pas traiter toutes les CVE de la même façon. Critères de décision :

CritèrePoidsQuestion à se poser
CVSS scoreélevé≥ 7.0 = traiter en priorité
Exploitabilitétrès élevéExiste-t-il un exploit public (Exploit DB, PoC GitHub) ?
Accessibilité du code vulnérablecritiqueMon code appelle-t-il la fonction vulnérable ?
Exposition réseauélevéLe service est-il exposé sur Internet ?
Sévérité pour le domainemodéréInjection SQL ≠ DoS selon le contexte métier

Règle pratique : une CVE High sur une lib utilisée uniquement en CLI de dev vaut moins qu'une CVE Medium sur un endpoint public.

3. Corriger — stratégies par cas

# Cas 1 : mise à jour mineure/patch disponible (idéal)
npm update <package>
dotnet add package <Package> --version <X.Y.Z>

# Cas 2 : la version fixée n'est pas compatible (conflict)
# → overrides npm (forcer une version transitive)
# package.json :
# "overrides": { "vulnerable-dep": ">=4.2.1" }

# Cas 3 : pas de fix disponible → remplacer ou isoler
# - Chercher un fork actif ou un package alternatif
# - Wrapper la lib pour limiter la surface d'attaque
# - Ajouter un contrôle applicatif (validation d'entrée) en attendant

# Cas 4 : faux positif documenté → ignorer avec justification
npm audit --json | jq '.vulnerabilities | to_entries[] | select(.value.severity=="high")'
# Puis documenter dans .auditignore / .snyk / audit-ignore.json

4. Générer un SBOM — inventaire des dépendances

# CycloneDX (standard recommandé 2025-2026)
# .NET
dotnet CycloneDX . -o ./sbom -j   # JSON

# npm
npx @cyclonedx/cyclonedx-npm --output-format JSON --output-file sbom.json

# Python
cyclonedx-py environment -o sbom.json

# Universel avec Syft
syft . -o cyclonedx-json=sbom.json

Stocker le SBOM en artifact CI et le comparer entre versions pour détecter les régressions.

5. Automatiser — CI/CD et alertes

GitHub Actions (polyglotte)

name: Dependency Audit
on:
  pull_request:
  push:
    branches: [main, develop]
  schedule:
    - cron: '0 7 * * 1'  # lundi 7h

jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # .NET
      - name: .NET audit
        run: |
          dotnet restore
          dotnet list package --vulnerable --include-transitive 2>&1 | tee audit.txt
          grep -q "has the following vulnerable packages" audit.txt && exit 1 || true

      # npm
      - name: npm audit
        working-directory: ./frontend
        run: npm ci && npm audit --audit-level=high

      # Scan universel (fallback)
      - name: Trivy scan
        uses: aquasecurity/trivy-action@master
        with:
          scan-type: fs
          scan-ref: .
          exit-code: '1'
          severity: 'HIGH,CRITICAL'
          format: sarif
          output: trivy.sarif

      - name: Upload SARIF
        uses: github/codeql-action/upload-sarif@v3
        if: always()
        with:
          sarif_file: trivy.sarif

Dependabot

# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "nuget"
    directory: "/"
    schedule:
      interval: "weekly"
    open-pull-requests-limit: 10
    labels: ["dependencies", "security"]
    groups:
      minor-patch:
        update-types: ["minor", "patch"]

  - package-ecosystem: "npm"
    directory: "/frontend"
    schedule:
      interval: "weekly"
    versioning-strategy: increase-if-necessary

SLA de correction

SévéritéCVSSDélaiAction
Critique9.0–10.024 hHotfix immédiat, bloquer le merge
Haute7.0–8.97 joursSprint courant, bloquer le merge
Moyenne4.0–6.930 joursPlanifier, ne bloque pas (sauf exposition réseau)
Basse0.1–3.990 joursMaintenance ordinaire

Garde-fous et anti-patterns

Ne pas faire :

Pièges courants :

Bonnes pratiques 2026