ACPIIO_DO_MCALL leaks kernel heap pointers via PACKAGE results (incomplete pointer fixup)
Summary
acpi_call_fixup_pointers() at acpi.c:3380-3391 only switches on top-level p->Type for STRING/BUFFER, does NOT recurse into Package.Elements. For PACKAGE result: Elements pointer + nested String.Pointer/Buffer.Pointer are kernel addresses, copied verbatim to userspace by copyout at :3368. Requires /dev/acpi FWRITE (root) AND debug.acpi.allow_method_calls=1 (default off). Attacker evaluates any ACPI method returning Package (_PRW/_CST/_PSS) to learn ACPICA heap address -> KASLR bypass. Fix: reject Package results or recursively relocate all nested pointers.
Discussion (0)
PoC verification
Evidence pack
findings/poc/DF-1219 Β· 1 files| File | Type | Description | Size | |
|---|---|---|---|---|
| manifest.json | file | 387 B | view raw |
Fix verification
not_testablerecommended fix identified; fix.diff not authored/validated in this batch
recommended fix identified; fix.diff not authored/validated in this batch
Confirmed kernel references
β
Detail
Exploit chain
none (Info severity)
Evidence (decisive lines)
Source-confirmed at sys/dev/acpica/acpi.c:3364: ACPIIO_DO_MCALL leaks kernel heap pointers via PACKAGE results
Verified recommended fix
Source-confirmed at sys/dev/acpica/acpi.c:3364: ACPIIO_DO_MCALL leaks kernel heap pointers via PACKAGE results
Verdict
Source-confirmed at sys/dev/acpica/acpi.c:3364: ACPIIO_DO_MCALL leaks kernel heap pointers via PACKAGE results
No comments yet.