PinTheft (PSA-2026-00022-1) — detectie + mitigatie
PinTheft is een lokale privilege-escalatie-ketting die een double-free
in de Linux RDS-module (Reliable Datagram Sockets) combineert met een
io_uring fixed-buffer overwrite om elke unprivileged user naar root
te tillen. Gepubliceerd als
PSA-2026-00022-1
op 2026-05-19; raakt elke huidige Proxmox-kernel en de meeste
stock-Linux distributies met de rds-modules gebouwd. Op het moment
van schrijven is er nog geen gepatchte kernel in de distro-repos.
Hoe monsys helpt
| Laag | Wat |
|---|---|
| Inventaris | Agent stuurt /proc/modules mee per inventory-cyclus naar POST /api/v1/kernel-modules. Schema 103. |
| Detectie | Per-tenant geseede regel kernel_module_suspicious matcht rds, rds_tcp, rds_rdma tegen de geladen set. Hits genereren een detected_events rij met severity critical. |
| Mitigatie | Operator-getriggerde, TOTP-gated Emergency Action pintheft_mitigate. Wrapper schrijft /etc/modprobe.d/pintheft.conf (met install <mod> /bin/false + blacklist) en doet rmmod voor alle geladen RDS-modules. Idempotent. |
Volgens het human-in-the-loop principe ontlaadt monsys nooit automatisch modules. De detectie vuurt; operator beoordeelt het detection event; operator tekent een EAT via TOTP; agent voert uit.
Waarom dit veilig is als default-regel
Op Ubuntu 24.04 ontkracht de meegeleverde blacklist-rare-network.conf
al socket(AF_RDS, ...) auto-loading via alias net-pf-21 off. Een
unprivileged aanvaller kan de module daarom NIET via de syscall-truc
laden — maar een vijandige cron-job, een buggy installer, of een admin
die modprobe rds draait voor onverwante redenen kan het wel. De
detectie dekt al die gevallen door /proc/modules te pollen. De
mitigatie sluit het install-pad af dat blacklist-rare-network.conf
niet behandelt.
Note: voor deze mitigatie hoef je niet te wachten op een gepatchte kernel — RDS wordt niet gebruikt op vrijwel elke Belgische/EU productieserver die we geaudit hebben. Heeft de operator wél RDS nodig voor legitieme redenen (sommige IBM DB2 RAC clusters en een handvol HPC-setups), laat de detectie aan staan en accepteer het alert als geïnformeerde uitzondering.
Detectie-regel config
De seed-rij (per tenant, automatisch ingevoegd op mig 103 apply):
{ "module_names": ["rds", "rds_tcp", "rds_rdma"], "advisory": "PSA-2026-00022-1", "description": "rds + io_uring double-free chain → local privilege escalation. Unload and blacklist if unused."}Dezelfde rule_kind (kernel_module_suspicious) wordt hergebruikt voor
toekomstige kernel-LPE-disclosures — alleen module_names verandert
per CVE.
EAT action-vorm
{ "kind": "pintheft_mitigate"}Geen parameters: deze actie blacklist altijd rds, rds_tcp,
rds_rdma. De wrapper op /usr/local/sbin/monsys-pintheft-mitigate is
het enige pad met sudo NOPASSWD; hij schrijft
/etc/modprobe.d/pintheft.conf en roept rmmod aan voor elke
geladen module. Output (stdout + stderr) wordt opgevangen en
teruggestuurd naar de hub als EAT-resultaat voor de audit log.
Verifiëren dat mitigatie werkte
Nadat de EAT geland is:
lsmod | grep -E '^rds|^rds_tcp|^rds_rdma' # leeg verwachtsudo modprobe -nv rds # zou "install /bin/false" moeten tonencat /etc/modprobe.d/pintheft.conf # blacklist+install regelsDe volgende agent-inventory cyclus herzendt /proc/modules. Met RDS
afwezig vuurt de detectie-regel niet meer, en de eerder open
detected_events-rij wordt in-line gededupliceerd (24h venster) tot
operator hem ackt in dashboard.
Compliance mapping
ISO 27001 A.8.7 (Bescherming tegen malware) — automatisch geëvalueerd
door unacknowledged kernel_module_suspicious events per tenant te
tellen. De control-rij is in mig 103 toegevoegd aan
compliance_framework_controls.