Ga naar inhoud

OS-pakket CVE matching (OSV.dev)

monsys neemt de pakket-inventaris die de agent al rapporteert — apt, dpkg, dnf, yum, rpm, apk, zypper — en vraagt OSV.dev naar bekende CVE’s tegen de exact geïnstalleerde versies. Er draait geen extra scanner; geen wijziging op de host. De matching gebeurt in de hub tegen een open publieke dataset.

Waarom dit bestaat

De hub draait al drie CVE-pipelines:

  1. Applicatie-dependencies — OSV.dev tegen package.json, requirements.txt, composer.lock, go.sum. Geshipt in schema 035.
  2. Container-images — Trivy tegen image manifests. Schema 035.
  3. Kernel — Distro-trackers (USN, Debian Security Tracker, RHEL CSAF, Gentoo GLSA) tegen de draaiende kernel-release. Schema 093.

Het gat was OS-pakketten op de host zelf: een niet-gepatchte libssl3, apache2, nginx, glibc. Schema 100 sluit dat gat door dezelfde backend te hergebruiken die we al vertrouwen voor app-deps.

Dekking

OSV.dev dekt deze OS-ecosystemen, continu bijgewerkt:

Distro-familieOSV ecosysteem
UbuntuUbuntu:24.04, Ubuntu:22.04, Ubuntu:20.04, Ubuntu:18.04
DebianDebian:12, Debian:11, Debian:10
AlpineAlpine:v3.19, Alpine:v3.18, …
Rocky LinuxRocky Linux:9, Rocky Linux:8
AlmaLinuxAlmaLinux:9, AlmaLinux:8
openSUSE TumbleweedopenSUSE:Tumbleweed
WolfiWolfi
ChainguardChainguard
SUSE SLES 15SUSE:SLES15

Distros zonder OSV-ecosysteem (Arch, Gentoo, FreeBSD, custom builds) worden stil overgeslagen — de Trust Score sub-component wordt blanked in plaats van straffen.

Hoe het werkt

  1. Elke 2 uur leest OSPackageCveWorker de laatste inventory-snapshot per agent, leidt een OSV-ecosysteem af uit os_name + os_version, en stuurt (ecosystem, package_name, version) in chunks van 1000 naar POST https://api.osv.dev/v1/querybatch.
  2. Elk uniek vuln-ID wordt eenmalig opgehaald via GET https://api.osv.dev/v1/vulns/{id}, gecached binnen de cyclus.
  3. Elke (agent, package, version, vuln_id) match wordt geüpsert in os_package_cves met severity, fixed-versie, samenvatting, aliases.
  4. De /recommendations-pagina pikt ze automatisch op, en het per-agent CVE-tabblad UNIONt ze met de bestaande app-dep en Trivy bevindingen.

Impact op Trust Score

De patch_hygiene-component (gewicht 30%) wordt een 3-weg composite zodra alle drie sub-componenten data hebben:

  • application_cves — 50%
  • kernel_currency — 25%
  • os_packages — 25%

Wanneer een host nog te nieuw is om OS-pakket-data te hebben, wordt de sub-component blanked (gewicht 0) — de score blijft stabiel in plaats van stilletjes te straffen.

Privacy

We sturen alleen (ecosystem, name, version)-triples naar OSV.dev. Geen hostnames, geen tenant-ID’s, geen agent-ID’s. De exposure is dezelfde als iemand die apt list --installed draait op de host met shell-toegang. OSV.dev wordt beheerd door Google’s Open Source Security Team onder Apache 2.0 licentie; de lookup zelf is ongeauthenticeerd en gratis.

Actie ondernemen op een bevinding

Elke bevinding is observe-only — volgens het monsys human-in-the-loop principe draait de hub nooit automatisch apt upgrade of een andere mutatie. De /recommendations-pagina toont per host een preview-commando:

DistroPreview
Ubuntu / Debiansudo apt-get update && sudo apt-get upgrade -y
RHEL / Rocky / Almasudo dnf upgrade --security -y
Alpinesudo apk update && sudo apk upgrade
openSUSE / SLESsudo zypper patch

Voor gecontroleerde uitvoering bestaat de bestaande package_update EAT-flow op de agent — operator keurt de upgrade goed via TOTP, de EAT autoriseert een single-shot apt upgrade <pkg>=<version> met een signed audit-log-entry. Dat deel is niet veranderd.

MCP tool

Voor Claude Connector-gebruikers exposeert de nieuwe tool monsys_list_os_cves dezelfde data met filters voor min_severity, only_with_fix, en agent_id. Zoals alle detection-tools is hij read-only.