Ga naar inhoud

Kernel-CVE pipeline

De kernel-CVE pipeline kijkt anders naar kernel-kwetsbaarheden dan een generieke OS-CVE scanner: hij praat rechtstreeks met de distro-trackers zodat een back-port niet meer als false-positive wordt geflagd.

Waarom een aparte pipeline

Generieke OSV/NVD matching geeft floods van false positives op kernels: de upstream-kernel meldt “fixed in 6.11.5” terwijl je distro (Debian 6.8.0-49, Ubuntu 6.8.0-49.49, RHEL 5.14.0-410, …) de patch al binnen de eigen LTS-lijn heeft back-geport. De pipeline matcht per running release tegen de tracker van die distro:

Wat overblijft zijn de echte open kernel-CVEs voor jouw host — vulnerable (geen patch in jouw kernel), patched (distro heeft het opgelost in jouw versie, alleen reboot nodig) of no-backport (distro heeft besloten niet te patchen, alternatief vereist).

Wat de agent rapporteert

In ExtendedInventorySnapshot.kernel_inventory (zichtbaar in de Kernel-tab op elke agent-detailpagina):

veldbron
running_releaseuname -r
running_versionuname -v (build string)
last_boot_time/proc/stat btime
installed_kernels[]dpkg-query / rpm / pacman / qlist / apk
default_kernel/boot/grub/grubenv (saved_entry) of grubby --default-kernel
reboot_required/var/run/reboot-required of dnf needs-restarting -r
mitigations_status/sys/devices/system/cpu/vulnerabilities/*
is_custom_buildtrue als running release in geen enkel installed package zit
kernel_cmdline/proc/cmdline

Oudere agent-binaries (vóór mei 2026) sturen kernel_inventory: null; de hub-side worker slaat die hosts stilzwijgend over — geen false positives, geen false negatives.

Roll-out: canary → primary

Een KernelUpdateBatch is één operator-beslissing (“patch CVE-2026-XXXX op alle hosts in tag web-fleet”). De orchestrator (KernelUpdateOrchestratorWorker, elke 60s) splitst dat in:

  1. Canary: 10% van de geselecteerde hosts, max 3, min 1. Krijgt direct een Level-3 EAT met update_kernel-actie. Phase tracking via kernel_update_progress.phase (queued → installing → installed → reboot_pending → rebooted_new).
  2. Primary: pas geactiveerd als alle canary-hosts rebooted_new bereiken. Bij één canary-failure wordt de hele batch geaborteerd met abort_reason.

Elk EAT loopt door dezelfde pipeline als handmatige acties: signing via MONSYS_EMERGENCY_PRIVATE_KEY, append-only transparency_log entry, persistente audit_log rij.

Hostside wrapper

De agent draait nooit als root. Kernel-installs gaan via /usr/local/sbin/monsys-kernel-update met een specifieke sudoers-regel:

monsys ALL=(root) NOPASSWD: /usr/local/sbin/monsys-kernel-update

De wrapper valideert zelf elk argument (allowlist regex per package manager), snapshot de pre-install kernel-set, runt de juiste install (apt/dnf/zypper/pacman/portage), updatet de bootloader en initramfs, en zet /var/run/reboot-required zodat de hub het oppikt op de volgende inventory-cyclus.

--reboot-strategy opties:

  • none — operator reboot manueel (default, safest)
  • manual — agent toont banner; geen actie
  • auto-at-windowshutdown -r +5 (alleen binnen maintenance window)

Trust Score impact

patch_hygiene is sinds deze pipeline een composiet:

final = 0.7 × application_cves + 0.3 × kernel_currency

Kernel currency strafpunten (max −100):

  • elke open vulnerable finding tegen running release: −3 (cap −30)
  • reboot_required > 7 dagen: −15, > 30 dagen: −25
  • is_custom_build (geen tracker-visibility): −10
  • nieuwere installed kernel dan running (geïnstalleerd, niet gereboot): −10

Hosts op een pre-pipeline agent worden blanked (geen score-drop, UI toont “agent verouderd”).

Audit Pack sectie

De maandelijkse Audit Pack (zie Monthly Audit Pack) bevat sinds deze pipeline vier kernel-emitters:

kindinhoud
kernel_runningper agent: huidige release, distro, reboot-required, last boot
kernel_cve_findingper maand: alle gedetecteerde CVEs met tracker bron + distro status
kernel_rebootper maand: elke reboot met prev/new release + expected flag (EAT-driven of niet)
kernel_update_batchper maand: alle orchestrator-batches met canary/primary status + abort reasons

In de PDF verschijnt een eigen sectie “Kernel currency” tussen de KEV-CVE tabel en de Emergency Action Tokens log.

Compliance mapping

Migratie 095 voegt 7 controls toe (alle draft tot legal review):

  • NIS2 Art21 §2(e) — kernel-CVE patching met canary + audit log
  • NIS2 Art21 §2(g) — kernel currency hygiene (outdated kernels)
  • CRA AnnexI §6 — secure kernel updates (Ed25519-signed)
  • CRA AnnexI §11 — vulnerability handling — kernel (backport-aware)
  • CRA AnnexI §12 — capability to deploy kernel patches
  • ISO 27001 A.8.8 — detection (continuous tracker monitoring)
  • ISO 27001 A.8.8 — patching cadence (vulnerable > 30 dagen)