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
$ curl -fsSL https://arboristhree.xyz/cli/install-skill.mjs -o /tmp/arboris-install-skill.mjs && node /tmp/arboris-install-skill.mjs cve-scanArboris
affaan-m/ECC
Contenu à 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 (Nous Research)
Set up op CLI, sign in, and read or inject secrets.Aibast Approval Routing 03 (Microsoft)
Use when a department approver asks which authorization threshold applies to a request.Aibast Certification Tracker Rc05 (Microsoft)
Use for who may trade, lapsed or upcoming certifications, supervisor escalation, and training-session planning.