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.

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.

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

Distro-familie OSV ecosysteem
Ubuntu Ubuntu:24.04, Ubuntu:22.04, Ubuntu:20.04, Ubuntu:18.04
Debian Debian:12, Debian:11, Debian:10
Alpine Alpine:v3.19, Alpine:v3.18, …
Rocky Linux Rocky Linux:9, Rocky Linux:8
AlmaLinux AlmaLinux:9, AlmaLinux:8
openSUSE Tumbleweed openSUSE:Tumbleweed
Wolfi Wolfi
Chainguard Chainguard
SUSE SLES 15 SUSE:SLES15

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

  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.

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.

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.

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:

Distro Preview
Ubuntu / Debian sudo apt-get update && sudo apt-get upgrade -y
RHEL / Rocky / Alma sudo dnf upgrade --security -y
Alpine sudo apk update && sudo apk upgrade
openSUSE / SLES sudo 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.

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.

De pagina Kwetsbaarheden in gebruik toont elke kritieke kwetsbaarheid één keer en rangschikt ze. Bovenaan staat wat actief misbruikt wordt én bereikbaar is. Per regel staat waarom: actief misbruikt (CISA KEV), misbruik waarschijnlijk (EPSS van 10 procent of meer), bereikbaar vanaf internet, bedient websites, ernst kritiek, oplossing beschikbaar.

Toestand Wanneer In de problemenlijst
Kritiek misbruikt en bereikbaar ja, en je telefoon gaat
Waarschuwing misbruikt, of bereikbaar met een oplossing klaar ja
Opgevolgd geen oplossing en niet misbruikt nee, wel op deze pagina; wordt een probleem zodra dat verandert

Is de kwetsbare versie niet meer te vinden in de inventaris, dan sluit het probleem vanzelf met die vaststelling als bewijs.