Auth & SécuritéSûr100100/100
cve-scan
Scans project dependencies against CVE databases (OSV.dev, NVD) from package.json and other lockfiles. Use when the user asks for CVE, vulnerabilities, security advisories, OSV, NVD, npm audit, or /cve.
ou envoie-le directement à ton agent.
Installer dans ton projet
$ npx arboris-cli install cve-scanContenu à copier
---
name: cve-scan
description: >-
Scans project dependencies against CVE databases (OSV.dev, NVD) from
package.json and other lockfiles. Use when the user asks for CVE, vulnerabilities,
security advisories, OSV, NVD, npm audit, or /cve.
metadata:
origin: Arboris
---
# CVE scan — dépendances
Interroge les **API CVE** (source de vérité : [OSV.dev](https://osv.dev)) à partir des manifests du repo. Ne pas se limiter à `npm audit`.
## When to Activate
- Scan CVE / vulnérabilités de dépendances (`/cve`, « y a-t-il une faille ? »)
- Revue d’un `package.json`, lockfile, SBOM ou bump de deps
- Avant merge / release, ou après une alerte (GHSA, CVE-…)
- Projet polyglot (npm, PyPI, Maven, Go, Cargo, Ruby, PHP, NuGet, …)
## 1. Inventaire des manifests
Cherche à la racine **et** dans les workspaces (ignore `node_modules`, `vendor`, `dist`, `.git`) :
| Écosystème OSV | Manifests / lockfiles |
|---|---|
| `npm` | `package.json`, `package-lock.json`, `pnpm-lock.yaml`, `yarn.lock`, `bun.lock` |
| `PyPI` | `requirements.txt`, `poetry.lock`, `Pipfile.lock`, `pyproject.toml` |
| `Maven` | `pom.xml`, `gradle.lockfile` |
| `Go` | `go.mod`, `go.sum` |
| `crates.io` | `Cargo.lock` |
| `RubyGems` | `Gemfile.lock` |
| `Packagist` | `composer.lock` |
| `NuGet` | `packages.lock.json`, `*.csproj` |
| `Hex` | `mix.lock` |
| `Pub` | `pubspec.lock` |
**Versions résolues** : lockfile > manifest. Sans lockfile, scanner au moins les deps **directes** et le signaler (faux négatifs transitifs).
Prod + dev par défaut (supply chain). Prod-only seulement si l’utilisateur le demande.
## 2. Extraire `(ecosystem, name, version)`
Pour npm, extraire depuis le lockfile (pas à la main sur un gros `package-lock.json`) :
```bash
node --input-type=module -e '
import { readFileSync } from "node:fs"
const lock = JSON.parse(readFileSync("package-lock.json","utf8"))
const pkgs = lock.packages ?? {}
const out = []
for (const [path, meta] of Object.entries(pkgs)) {
if (!path || path === "") continue
const name = path.replace(/^node_modules\//, "").replace(/\/node_modules\//g, "/")
if (meta.version) out.push({ name, version: meta.version, ecosystem: "npm" })
}
console.log(JSON.stringify(out))
'
```
Déduplique `(ecosystem, name, version)`. Cap : lots de **1000** max pour `querybatch`.
## 3. Interroger OSV (obligatoire)
Base : `https://api.osv.dev` — pas de clé. Ne pas inventer de CVE.
**Un package** (détail complet) :
```bash
curl -sS https://api.osv.dev/v1/query \
-H 'Content-Type: application/json' \
-d '{"version":"4.17.20","package":{"name":"lodash","ecosystem":"npm"}}'
```
**Lot** (IDs seulement, même ordre que `queries`) :
```bash
curl -sS https://api.osv.dev/v1/querybatch \
-H 'Content-Type: application/json' \
-d '{"queries":[{"package":{"name":"lodash","ecosystem":"npm"},"version":"4.17.20"}]}'
```
Règles OSV :
- `name` + `ecosystem` **ou** `purl`, pas les deux
- `version` **ou** purl versionné, pas les deux
- écosystème et nom **case-sensitive** (`npm`, `PyPI`, `Maven`, `Go`, `crates.io`, `RubyGems`, `Packagist`, `NuGet`, `Hex`, `Pub`)
**Détail** pour chaque ID touché (critique/haut en priorité) :
```bash
curl -sS "https://api.osv.dev/v1/vulns/GHSA-xxxx-xxxx-xxxx"
```
Champs utiles : `id`, `aliases` (CVE-…), `summary`, `severity`, `affected[].ranges`, `references`.
Pagination `querybatch` : si `next_page_token` sur un item, relancer **cet** item avec `page_token`.
## 4. Enrichir (optionnel)
- **NVD** (score CVSS d’un CVE connu) :
`curl -sS "https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2024-XXXXX"`
Rate-limit sans clé : rester sobre (seulement les HIGH/CRITICAL).
- **Audit natif** en complément, pas en remplacement :
- npm / pnpm / yarn / bun → `npm audit --json` (ou équivalent)
- Python → `pip-audit` si dispo
- Go → `govulncheck` si dispo
- Rust → `cargo audit` si dispo
Ne pas installer d’outil lourd (`osv-scanner` Go, Docker) si l’API suffit.
## 5. Compte-rendu
Trier **CRITICAL → HIGH → MODERATE → LOW**. Ignorer le bruit LOW hors runtime sauf demande.
Tableau :
| Package | Version | Éco | ID (CVE / GHSA) | Sévérité | Fix | Action |
|---|---|---|---|---|---|---|
Pour chaque finding actionnable :
1. version corrigée (`affected` / `database_specific` / advisory)
2. directe vs transitive
3. action : bump ciblé, `overrides`/`resolutions`, ou *risk accepted* (justifié)
**Ne pas** modifier `package.json` / lockfiles sauf si l’utilisateur demande le fix. Proposer `/audit-deps` (fix npm) et `/ncu` (maj versions).
Si aucun manifest : expliquer et s’arrêter. Si l’API échoue : coller l’erreur, basculer sur l’audit natif, le dire.
## Compléments
- Revue code (auth, XSS, secrets) → skill `security-review`, commande `/security-diff`
- Config agent (`.claude/`) → skill `security-scan` — **pas** un scan de depsColle ce Markdown dans ton agent ou utilise les boutons ci-dessus pour l’écrire dans ton projet.
Ce que fait cve-scan
Scan CVE / vulnérabilités de dépendances (`/cve`, « y a-t-il une faille ? »)
Revue d’un `package.json`, lockfile, SBOM ou bump de deps
Avant merge / release, ou après une alerte (GHSA, CVE-…)
Projet polyglot (npm, PyPI, Maven, Go, Cargo, Ruby, PHP, NuGet, …)
Comment utiliser cve-scan
1
Copie le prompt
Un clic copie le prompt packagé (ou l'envoie à ton agent).
2
L'agent installe le skill
Il ajoute le SKILL.md et ses ressources à ton projet.
3
Activation automatique
Le skill s'active dès que le contexte correspond.
Déclencheurs pour cve-scan
Dis simplement à ton agent quelque chose comme :
Applique le skill cve-scan à cette tâche
Utilise cve-scan pour améliorer cette implémentation
Passe en revue ce sujet avec cve-scan
Skills liés à cve-scan
1password__nousresearch-hermes-agent__optional-skills-security-8c6b9c4182d0
Set up op CLI, sign in, and read or inject secrets.aibast_approval-routing_03__microsoft-aibast-agents-library__solutions-procurement-agent-manual-skills-e0f04224c5d0
Use when a department approver asks which authorization threshold applies to a request.aibast_certification-tracker_rc05__microsoft-aibast-agents-library__solutions-fs-regulatory-compliance-manual-skills-298b575c90bd
Use for who may trade, lapsed or upcoming certifications, supervisor escalation, and training-session planning.