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

acpi_wmi: _WDG result consumed unvalidated β€” NULL-deref boot panic on missing Return; ACPI_OBJECT union type-confusion memcpy on non-Buffer _WDG return

Summary

read_wdg_blocks evaluates _WDG and treats out.Pointer as a Buffer with no NULL/Type validation: a _WDG without Return yields AE_OK with NULL Pointer (ACPICA contract) - boot-time NULL-deref panic; an Integer/String/Package return union-confuses Length/Pointer, feeding kmalloc+memcpy with firmware-chosen length and semi-chosen source, whose contents are installed as GUID entries and printed to the world-readable /dev/wmistat. Firmware-gated (ACPI table control), inherited from FreeBSD (their _BMOF path has the fix pattern). Validate-before-use fix.

Discussion (0)

No comments yet.

PoC verification

Evidence pack

findings/poc/DF-4511 Β· 1 files
FileTypeDescriptionSize
verdict.json file 1.1 KB view raw

Fix verification

not_testable
baseline no→ patch + rebuild →patched clean

not_testable

validate obj/Type/Length%sizeof before use (finding markdown diff)
per-fix-DF-4511

Confirmed kernel references

Detail

Exploit chain

[]

Evidence (decisive lines)

ACPICA permits AE_OK with NULL Pointer (nsxfeval.c:541-546) and any object type; read_wdg_blocks uses obj->Buffer immediately. Firmware-gated (ACPI table control). FreeBSD inherited the same defect (they validate in their _BMOF path - the fix pattern exists upstream).

Verdict

not_run: Low, firmware-gated, Phase V skipped per contract