Aller au contenu principal
Tout le programme
Conférence 55min

Le CVSS ne voit pas votre déploiement : trier ses CVE avec un LLM et le contexte

dorgaa

samedi 14 novembre11:00 — 11:5555 minSalle A302

Description

Description (détaillée)

Je montre deux runs CI sur la même image, avec deux fichiers de contexte différents : l'un casse le build, l'autre passe. Même liste de CVE, même scanner. Et je ne cache pas là où ça casse.

D'abord le mécanisme, parce qu'il est plus honnête qu'il n'en a l'air. Le modèle ne note que quatre facteurs, entre 0 et 9, dans un schéma qui lui interdit structurellement d'écrire un score. La composition, le clamp et la bande de sévérité sont du Go déterministe. Et le fichier de contexte ne touche jamais l'arithmétique : il part en prose dans le prompt. C'est voulu, ça garde le score auditable, et ça pose la vraie question du talk : est-ce que le LLM gagne son coût, ou est-ce qu'une table de correspondance ferait pareil ?

Le modèle se trompe sur certaines classes de CVE, et avec le même aplomb que quand il a raison. Il n'est pas déterministe non plus : le même scan peut ressortir avec des scores différents. Un contexte précis et l'épinglage du seed et de la température stabilisent le tir, mais rien ne dépasse ce qu'un humain a écrit dans un YAML. C'est un système décrit, pas de la vraie reachability.

Le verdict et ses preuves partent dans deux fichiers : le score dans un CycloneDX VEX, l'attestation CDXA à côté. Elle garde l'empreinte de ce qui a produit le score : le modèle, le prompt, les hashs d'entrée. Et comme le verdict est juste un VEX, le même scoring tourne en CI, où une GitHub Action casse le build sur le score OWASP plutôt que sur le CVSS.

Puis le benchmark, parce que si vous mettez un LLM dans la boucle, la question c'est lequel. J'ai comparé douze modèles, huit dans le cloud et quatre en local, contre une baseline sans LLM : une simple constante. La précision est le problème facile, un modèle à 0,48 $ finit à 0,085 point d'un modèle à 4,12 $. C'est sur le contexte que ça se joue, et c'est là qu'un modèle peut décrocher sans prévenir : l'un d'eux a ré-gonflé Log4Shell au lieu de le faire tomber, trois fois de suite. Et les modèles locaux restent, pour l'instant, indistinguables de la constante. Je dis lesquels utiliser et lesquels éviter.

Tout est libre : vens (github.com/venslabs/vens) est sous Apache-2.0, c'est un plugin Trivy officiel et il alimente Dependency-Track. Rien à vendre, la méthode marche sur n'importe quel scanner et n'importe quel LLM correct.

Public visé

Intermédiaire, mais accessible. DevSecOps, platform/ops, dev qui gèrent des images conteneurs. Une familiarité avec Trivy ou Grype suffit.

Intervenant·e

dorgaa

Senior software engineer working on vulnerability management and software supply chain security. Maintainer of nerdctl in the containerd community, and contributor to Crossplane. Creator of vens (https://github.com/venslabs/vens), an open-source tool that uses LLMs to score CVEs against their deployment context.

Dans le même créneau

Cette session vous intéresse ?

L'entrée est libre et gratuite, mais l'inscription nous aide à préparer au mieux votre venue.

S'inscrire gratuitement— 14 & 15 novembre 2026