DF-4487 / verdict.json
{ "finding_id": "DF-4487", "status": "untested", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "vo is kmallocd without M_ZERO (acpi_video.c:513) and vo_sysctl_tree is only assigned inside if (acpi_video_sysctl_tree != NULL) (:535-539); when the global node failed to be created (SYSCTL_ADD_NODE failure/OOM at attach, or MOD_UNLOAD NULLing it, :204-205) the unconditional read at :540 uses an uninitialized heap value as struct sysctl_oid* and passes it to SYSCTL_CHILDREN in five SYSCTL_ADD_PROC calls -> garbage-pointer dereference. OOM-gated, Info severity.", "exploit_chain": "", "evidence": "VERDICT.md (code path)", "kernel_refs": [ "sys/dev/acpica/acpi_video/acpi_video.c:513", "sys/dev/acpica/acpi_video/acpi_video.c:535", "sys/dev/acpica/acpi_video/acpi_video.c:540" ], "poc_changes": "", "attempts": 0, "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT #0: Thu Jul 2 06:02:54 UTC 2026 root@dfbsd:/usr/obj/usr/src/sys/X86_64_GENERIC x86_64", "runtime_sec": 0, "guest_dirty": 0, "build_cmd": "", "run_cmd": "", "code_hash": "", "notes": "Trigger requires forcing SYSCTL_ADD_NODE failure at attach (memory exhaustion); not deterministic on the guest.", "recommended_fix": "kmalloc(..., M_NOWAIT | M_ZERO) in acpi_video_vo_init (or explicitly init vo_sysctl_tree = NULL)", "fix_status": "not_testable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "Info-severity hardening; not runtime-tested.", "fix_evidence": "" } |