DF-4311 / manifest.json
{ "finding_id": "DF-4311", "finding": "vga_switcheroo MOD_UNLOAD/MOD_SHUTDOWN frees state and unloads while DRM modules hold live symbol references and registered clients -> use-after-unload panic / heap UAF", "file": "sys/dev/video/vga/vga_switcheroo.c", "lines": [1022, 1027], "verdict": "reproduced", "impact": "panic (root-triggered; privileged-user UAF, not unpriv escalation)", "confidence": "certain", "reproduce": { "build": "cd /root/uaftrig && make SYSDIR=/usr/src/sys (guest, root)", "run": "kldload vga_switcheroo; kldload ./uaftrig.ko; echo trigger > /dev/uaftrig; kldunload vga_switcheroo; echo trigger-after-unload > /dev/uaftrig", "expected": "unpatched: Fatal trap 12 page fault, IP == fault VA inside the unloaded module text (0xffffffff82601040), guest down. patched+MODULE_DEPEND: module stays resident after kldunload, trigger returns -19/-19, no panic." }, "kernel_refs": [ "sys/dev/video/vga/vga_switcheroo.c:1022", "sys/dev/video/vga/vga_switcheroo.c:1024", "sys/dev/video/vga/vga_switcheroo.c:1026", "sys/kern/kern_linker.c:605", "sys/kern/kern_linker.c:627", "sys/kern/kern_linker.c:1633", "sys/dev/drm/drm_edid.c:1770", "sys/dev/drm/i915/i915_drv.c:742", "sys/dev/drm/amd/amdgpu/amdgpu_kms.c:950" ], "artifacts": [ "uaftrig.c", "Makefile", "run.sh", "run.log", "panic.txt", "panic-full.log", "fix.log", "fix.diff", "env.txt", "README.md", "VERDICT.md", "verdict.json", "manifest.json" ], "fix_validated": true } |