[ sécurité · chaîne d'appro. ]● 5 créd. · 20 req/min

Analyse de vulnérabilités des dépendances

Vérifiez jusqu'à 50 dépendances open source auprès d'OSV.dev en un seul appel. Renvoie les alias CVE, un score de base CVSS calculé, les identifiants CWE et les versions exactes qui corrigent chaque avis.

Avis OSV.devNoté en CVSS v3.113 écosystèmes
auth · x-api-key

Pas encore de clé API ?

Connectez-vous à votre compte pour créer et gérer vos clés API.

[ 02 · integrate ]

Guide d'intégration

Copiez un extrait, remplacez votre clé API, exécutez. Fonctionne avec n'importe quel client HTTP — exemples ci-dessous en cURL, JavaScript et Python.

spec
POST/api/scan-dependencies
base
https://www.apipick.com

Check open-source packages against the OSV.dev vulnerability database

paramètres
packagesarrayrequis

Up to 50 objects, each with ecosystem, name, and an exact installed version. [{"ecosystem":"npm","name":"lodash","version":"4.17.15"}]

curl -X POST "https://www.apipick.com/api/scan-dependencies" \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
  "packages": [
    {
      "ecosystem": "npm",
      "name": "lodash",
      "version": "4.17.15"
    },
    {
      "ecosystem": "PyPI",
      "name": "requests",
      "version": "2.19.0"
    }
  ]
}'
● 200 · réponse
{
  "summary": {
    "packages_scanned": 2,
    "vulnerable_packages": 2,
    "total_vulnerabilities": 8,
    "by_severity": {
      "critical": 1,
      "high": 3,
      "medium": 4,
      "low": 0,
      "none": 0,
      "unknown": 0
    },
    "highest_cvss_score": 9.8
  },
  "results": [
    {
      "ecosystem": "npm",
      "name": "lodash",
      "version": "4.17.15",
      "vulnerable": true,
      "highest_severity": "HIGH",
      "highest_cvss_score": 7.4,
      "vulnerability_count": 6,
      "vulnerabilities": [
        {
          "id": "GHSA-35jh-r3h4-6jhm",
          "aliases": [
            "CVE-2021-23337"
          ],
          "cve": "CVE-2021-23337",
          "summary": "Command Injection in lodash",
          "severity": "HIGH",
          "cvss_score": 7.2,
          "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H",
          "cwe_ids": [
            "CWE-77"
          ],
          "published": "2021-02-15T00:00:00Z",
          "fixed_versions": [
            "4.17.21"
          ],
          "advisory_url": "https://osv.dev/vulnerability/GHSA-35jh-r3h4-6jhm"
        }
      ],
      "error": null
    }
  ],
  "source": "OSV.dev (Google Open Source Vulnerabilities, CC-BY-4.0)",
  "credits_used": 5,
  "remaining_credits": 95
}

Conçu pour des cas d'usage réels

🚦

Contrôle des mises en production

Faites échouer un build dès qu'une dépendance dépasse un seuil CVSS. Avec un score numérique, la règle tient en une comparaison, au lieu d'un test sur une chaîne de caractères.

🤖

Agents de développement

Laissez un agent vérifier une version avant de l'écrire dans un manifeste, et proposer la version corrigée dans le même échange.

📋

Audit de lockfiles

Envoyez un manifeste entier par lots de 50 et obtenez une synthèse par gravité pour chaque service, sans faire tourner un scanner dans la CI.

🔍

Due diligence fournisseurs

Notez le jeu de dépendances déclaré par un tiers au regard des avis publics avant de signer, avec des données que vous pouvez citer.

Champs de la réponse

ChampTypeDescription
summary.vulnerable_packagesintegerNombre de paquets soumis présentant au moins un avis
summary.by_severityobjectNombre d'avis par critical / high / medium / low / none / unknown
summary.highest_cvss_scorenumber | nullScore de base CVSS le plus élevé de toute l'analyse
results[].vulnerablebooleanIndique si cette version du paquet fait l'objet d'un avis non retiré
results[].vulnerabilities[].idstringIdentifiant de l'avis OSV, par ex. GHSA-35jh-r3h4-6jhm
results[].vulnerabilities[].cvestring | nullAlias CVE lorsqu'il en existe un
results[].vulnerabilities[].severitystringCRITICAL, HIGH, MEDIUM, LOW, NONE ou UNKNOWN
results[].vulnerabilities[].cvss_scorenumber | nullScore de base CVSS v3.1 calculé à partir du vecteur de l'avis
results[].vulnerabilities[].cwe_idsstring[]Classifications de faiblesse CWE de l'avis
results[].vulnerabilities[].fixed_versionsstring[]Versions de ce paquet qui corrigent l'avis
results[].errorstring | nullRenseigné lorsque ce paquet précis n'a pas pu être vérifié ; les autres sont bien renvoyés
credits_usedintegerCrédits déduits pour cette requête
remaining_creditsintegerCrédits restants sur votre compte
[ 03 · limits ]

Limites de débit

La limitation est par clé API, fenêtre glissante de 60 secondes. En cas de dépassement, vous recevez un 429 propre avec un en-tête Retry-After.

débit de requêtes

20req/min

Par clé API, par endpoint. Fenêtre glissante de 60 secondes.

concurrence

3concurrent

Nombre maximal de requêtes simultanées en cours par clé API.

en-têtes de réponse
X-RateLimit-LimitNombre maximal de requêtes autorisées par minute
X-RateLimit-RemainingRequêtes restantes dans la fenêtre actuelle
X-RateLimit-ResetSecondes avant la réinitialisation de la fenêtre actuelle
Retry-AfterSecondes à attendre avant de réessayer (uniquement sur 429)
● 429 · trop de requêtes
HTTP/1.1 429 Too Many Requests
Retry-After: 12
X-RateLimit-Limit: 20
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 12

{
  "error": "rate_limit_exceeded",
  "message": "Rate limit exceeded: 20 requests/minute per API key. Retry after 12s.",
  "retry_after": 12
}

Source des données et licence

Les avis proviennent d'OSV.dev, la base de vulnérabilités ouverte de Google, publiée sous CC-BY-4.0. OSV réunit dans un schéma unique la GitHub Advisory Database, la base de vulnérabilités Go, RustSec, PyPA et les suivis de sécurité des principales distributions. Nous y ajoutons le calcul du score de base CVSS et la synthèse par paquet.

Questions fréquentes

Q : D'où viennent les données de vulnérabilités ?

R : D'OSV.dev, la base de vulnérabilités ouverte de Google. Elle réunit dans un schéma unique la GitHub Advisory Database, la base de vulnérabilités Go, RustSec, PyPA et les suivis de sécurité des distributions, et la publie sous CC-BY-4.0. Les avis sont généralement disponibles quelques heures après leur publication.

Q : Comment le score CVSS est-il calculé ?

R : Les avis OSV contiennent la chaîne du vecteur CVSS, mais pas le nombre. Nous calculons le score de base CVSS v3.1 à partir de ce vecteur selon la formule officielle : vous obtenez donc une valeur directement utilisable comme seuil. Lorsqu'un avis n'a pas de vecteur v3 (uniquement v4, ou avis d'écosystème sans vecteur), cvss_score vaut null et severity reprend la notation de l'éditeur de l'avis.

Q : Puis-je analyser un lockfile complet ?

R : Oui : analysez-le de votre côté et envoyez jusqu'à 50 paquets par appel. Un appel coûte 5 crédits quel que soit le nombre de paquets, donc un lot de 50 revient à 0,1 crédit par paquet. Pour des manifestes plus volumineux, découpez en lots de 50.

Q : Les plages de versions sont-elles prises en charge ?

R : Non. Envoyez la version exacte installée, telle qu'elle figure dans votre lockfile (4.17.15, pas ^4.17.0). OSV compare les plages à une version concrète pour déterminer si celle-ci est affectée : une plage en entrée n'a donc pas de réponse unique.

Q : Que se passe-t-il si la recherche d'un paquet échoue ?

R : L'analyse est tout de même renvoyée. Ce paquet porte un champ error et est exclu des totaux de la synthèse, tandis que tous les autres remontent normalement. La réponse contient aussi packages_failed pour vous signaler que la synthèse est incomplète.