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:
- Debian — security-tracker.debian.org
- Ubuntu — ubuntu.com/security/notices (USN)
- RHEL / Rocky / Alma / Fedora — access.redhat.com CSAF v2
- Gentoo — security.gentoo.org/glsa
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):
| veld | bron |
|---|---|
running_release | uname -r |
running_version | uname -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_build | true 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:
- Canary: 10% van de geselecteerde hosts, max 3, min 1.
Krijgt direct een Level-3 EAT met
update_kernel-actie. Phase tracking viakernel_update_progress.phase(queued → installing → installed → reboot_pending → rebooted_new). - Primary: pas geactiveerd als alle canary-hosts
rebooted_newbereiken. Bij één canary-failure wordt de hele batch geaborteerd metabort_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-updateDe 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 actieauto-at-window—shutdown -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_currencyKernel currency strafpunten (max −100):
- elke open vulnerable finding tegen running release: −3 (cap −30)
reboot_required> 7 dagen: −15, > 30 dagen: −25is_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:
| kind | inhoud |
|---|---|
kernel_running | per agent: huidige release, distro, reboot-required, last boot |
kernel_cve_finding | per maand: alle gedetecteerde CVEs met tracker bron + distro status |
kernel_reboot | per maand: elke reboot met prev/new release + expected flag (EAT-driven of niet) |
kernel_update_batch | per 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)