β¬’ DragonFlyBSD Kernel Audit
← triage Β· dashboard
DF-5526

npxprobemask() lacks the mxcsr_mask==0 fallback guard: a non-conforming FXSAVE probe zeroes npx_mxcsr_mask, forcing MXCSR=0 (all SIMD FP exceptions unmasked) and a SIGFPE on every FPU restore

Summary

The probe stores the raw FXSAVE mxcsr_mask word; Intel documents it may read 0 where software must use the 0xFFBF default (the FreeBSD heritage carries the fallback, DFly dropped it): every consumer test classifies all MXCSR bits illegal, the restore paths clear all six exception-mask bits, and SIGFPE fires on each first-use restore - userland SIMD effectively unusable on such CPUs/VMs. Conforming hardware (incl. the audit guest) unaffected; hardening with a one-line fix. Pass-2 weight: guest-verified negatives - cross-process marker leakage 0/48 across 40 sibling exits (whole-pcb fork copy), tail [832..1023] process-owned roundtrip 3x, exec npxinit reset.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-5526 Β· 1 files
FileTypeDescriptionSize
verdict.json file 979 B view raw

Fix verification

not_testable
baseline no→ patch + rebuild →patched clean
per-fix-DF-5526

Confirmed kernel references

Detail

Evidence (decisive lines)

static trace + guest-verified negative proofs in finding markdown

Verified recommended fix

0->0xFFBF fallback in npxprobemask

Verdict

untested (Info hardening; needs a non-conforming FXSAVE CPU - the QEMU guest reports a proper mask)