DF-5064 / manifest.json
{ "finding_id": "DF-5064", "verdict": "not_reproduced", "impact": "stale /dev/dri entry points into unloaded module memory (UAF-class) + unbounded drm_device leak; GPU + root-kldunload gated", "confidence": "certain", "reproduce": { "build": "cp patched drm_dragonfly.c /usr/src/sys/dev/drm/; cd /usr/src/sys/dev/drm && make # rc=0", "run": "on GPU-equipped hardware: kldload i915kms; open /dev/dri/card0 (as user); kldunload i915kms; open /dev/dri/card0 again -> drm_minor_acquire succeeds (minor never unregistered) and dev->driver->open resolves into freed module text. Patched: second open fails ENODEV.", "expected": "vulnerable: stale minors stay openable after unload (UAF window for unprivileged users) + drm_device graph leaked per cycle. patched: drm_dev_unregister removes minors from the idr (ENODEV) and drm_dev_put frees the device graph." }, "kernel_refs": [ "sys/dev/drm/drm_dragonfly.c:250-296", "sys/dev/drm/i915/i915_pci.c:680-691", "sys/dev/drm/drm_drv.c:274-282", "sys/dev/drm/drm_sysfs.c:84-113", "sys/dev/drm/i915/i915_drv.c:3279-3313" ], "artifacts": [ "README.md", "VERDICT.md", "fix.diff", "fix_build.log", "env.txt", "manifest.json", "verdict.json" ] } |