{
  "id": "dependency-vulnerability-check-n2",
  "code": "PS-0050",
  "titre": "Vérification des dépendances pour vulnérabilités connues",
  "resume": "Demande au modèle de signaler les dépendances avec des vulnérabilités connues dans le code soumis et de recommander des alternatives sécurisées.",
  "type_ia": "dev-autonome",
  "piliers": [
    "securite-productions"
  ],
  "niveau": "N2",
  "owasp": [
    "LLM05",
    "LLM03"
  ],
  "tags": [
    "dependances",
    "cve",
    "supply-chain",
    "developpement"
  ],
  "prompt_fr": "Lors de l'analyse de code ou de fichiers de dépendances (`package.json`, `requirements.txt`, `pom.xml`...), applique le diagnostic suivant.\n\n**Règles**\n1. Identifie les dépendances et leurs versions dans le code soumis.\n2. Signale les versions connues comme vulnérables d'après ta base de formation (date de coupure : [DATE_COUPURE]).\n3. Recommande de vérifier systématiquement avec des outils à jour : `npm audit`, `pip-audit`, `dependabot`, Snyk, OSV.\n4. Mets en garde contre les dépendances inconnues ou d'auteurs inconnus.\n5. Indique si une version est trop ancienne pour bénéficier du support de sécurité actif.\n\n**Avertissement** : ta base CVE a une date de coupure — toujours utiliser un scanner à jour en complément.\n\n**Livrables à produire**\n- **Tableau de diagnostic** :\n  ```\n  | Dépendance | Version | CVE connue | Sévérité | Recommandation |\n  |------------|---------|------------|----------|----------------|\n  | <nom>      | <v>     | <CVE-ID>   | <C|H|M|L>| <upgrade vX>  |\n  ```\n- **Événement structuré** (JSON-line par dépendance signalée) :\n  `[DEP_VULNERABILITY] {\"ts\":\"<ISO8601>\",\"package\":\"<nom>\",\"version\":\"<v>\",\"cve\":\"<id|unknown>\",\"severity\":\"<critical|high|medium|low>\",\"fix_version\":\"<v_recommandee>\"}`\n- **Avertissement obligatoire** en fin de réponse : « ⚠️ Ma base CVE est arrêtée à [DATE_COUPURE]. Exécuter aussi : `npm audit` / `pip-audit` / `snyk test` pour les CVE récentes. »",
  "prompt_en": "When analyzing code or dependency files (`package.json`, `requirements.txt`, `pom.xml`...), apply the following diagnosis.\n\n**Rules**\n1. Identify dependencies and their versions in the submitted code.\n2. Flag versions known to be vulnerable from your training data (cutoff date: [CUTOFF_DATE]).\n3. Recommend systematically checking with up-to-date tools: `npm audit`, `pip-audit`, `dependabot`, Snyk, OSV.\n4. Warn about unknown dependencies or from unknown authors.\n5. Indicate if a version is too old to benefit from active security support.\n\n**Warning**: your CVE knowledge base has a cutoff date — always use an up-to-date scanner in addition.\n\n**Deliverables to produce**\n- **Diagnostic table**:\n  ```\n  | Dependency | Version | Known CVE  | Severity | Recommendation |\n  |------------|---------|------------|----------|----------------|\n  | <name>     | <v>     | <CVE-ID>   | <C|H|M|L>| <upgrade vX>  |\n  ```\n- **Structured event** (JSON-line per flagged dependency):\n  `[DEP_VULNERABILITY] {\"ts\":\"<ISO8601>\",\"package\":\"<name>\",\"version\":\"<v>\",\"cve\":\"<id|unknown>\",\"severity\":\"<critical|high|medium|low>\",\"fix_version\":\"<v_recommended>\"}`\n- **Mandatory warning** at end of response: \"⚠️ My CVE base is frozen at [CUTOFF_DATE]. Also run: `npm audit` / `pip-audit` / `snyk test` for recent CVEs.\"",
  "langue_recommandee": "indifferent",
  "modeles_recommandes": [
    "claude",
    "gpt"
  ],
  "source": {
    "auteur": "Mistral AI",
    "organisation": "Mistral AI",
    "url": "https://docs.mistral.ai/guides/guardrailing/",
    "type": "officielle"
  },
  "cumulable_avec": [
    "supply-chain-awareness-n2",
    "code-review-security-n2"
  ],
  "explication": "La documentation Mistral AI pour les assistants de développement recommande l'intégration de la vérification de dépendances. Les assistants IA de code sont fréquemment utilisés pour générer du code avec des dépendances obsolètes ou vulnérables.\n\n**Quand l'utiliser :** assistants de développement, revue de code, CI/CD augmentée par IA.\n\n**Ce qu'il protège :** LLM05 + LLM03 — prévention de l'introduction de dépendances vulnérables. N2 : la connaissance CVE du modèle est limitée dans le temps — toujours compléter avec des outils à jour. L'avertissement systématique évite que l'utilisateur prenne le diagnostic du LLM pour exhaustif.",
  "installation": {
    "ou_quand": "À installer dans la config de l'assistant de développement. Profil personnel (le dev fait des audits) ou config projet (équipe). À combiner impérativement avec un scanner CI/CD à jour.",
    "moments": [
      "profil",
      "projet-debut"
    ],
    "exemples": [
      {
        "contexte": "Claude Code",
        "instruction": "`~/.claude/CLAUDE.md` (global) ou `./CLAUDE.md` (projet). Activer en parallèle Dependabot ou Renovate sur le repo pour les CVE récentes."
      },
      {
        "contexte": "GitHub Copilot Chat / Cursor",
        "instruction": "**Custom Instructions** ou `.cursorrules`. Doubler avec un scanner intégré au CI (`npm audit` en pre-commit, Snyk en GitHub Action)."
      },
      {
        "contexte": "ChatGPT (Custom GPT « Security Reviewer »)",
        "instruction": "**Custom GPT → Instructions**. Recommander aux devs d'utiliser ce GPT pour relire les PR qui touchent au `package.json` / `requirements.txt`."
      },
      {
        "contexte": "Pipeline CI (PR review automatique)",
        "instruction": "Paramètre **`system`** + parser `[DEP_VULNERABILITY]` → croiser avec un scanner OSV à jour. Faire échouer le build sur severity critical/high non patché."
      }
    ]
  },
  "date_creation": "2026-05-17",
  "date_maj": "2026-05-22",
  "version": "1.1",
  "tokens_estimes": {
    "entree": 230,
    "sortie": null
  },
  "changelog": [
    {
      "date": "2026-05-17",
      "version": "1.0",
      "summary": "Création de la fiche"
    },
    {
      "date": "2026-05-22",
      "version": "1.1",
      "summary": "Mise à jour éditoriale"
    }
  ]
}
