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

clockmod: raw wrmsr(MSR_THERM_CONTROL) without a fault-safe accessor β€” a VMM advertising CPUID ACPI+TM but faulting the MSR turns the root sysctl select / kldunload raise-to-100% into an unrecoverable #GP panic (DF-4735 family)

Summary

Bare wrmsr per target CPU; the attach gate matches the SDM so real silicon is safe, but a CPUID-lying VMM converts the root sysctl write and the unload-time raise into #GP. Guest-negative-verified (this CPU lacks both bits - clockmod never attaches). wrmsr_safe + error-propagation fix.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

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

Fix verification

not_testable
per-fix-DF-4825

Confirmed kernel references

Detail

Exploit chain

CPUID-lying VMM -> root sysctl machdep.clockmod_domN.select=50.00% (or kldunload) -> wrmsr #GP -> panic

Evidence (decisive lines)

findings/poc/DF-4825/ (this verdict)

Verdict

Hardening (DF-4735 family): clockmod_select_handler issues a bare wrmsr(MSR_THERM_CONTROL) per target CPU - any VMM advertising CPUID ACPI+TM but faulting the MSR turns the root sysctl select write and the kldunload raise-to-100% into a kernel #GP panic. Safe on real silicon (gate matches SDM). Guest-negative-verified: this QEMU CPU lacks both bits so clockmod never attaches (no machdep.clockmod_dom0 oid, kldload inert) - unreachable here. rdmsr_safe/wrmsr_safe-with-error-propagation fix.