DF-5162 / manifest.json
{ "finding_id": "DF-5162", "title": "bktr_mem stored-address registry is never invalidated when the METEORSETGEO grow path frees the frame buffer — driver reload reinstalls the freed KVA, bzeros ~3.5 MB and RISC-DMAs video into reallocated kernel memory (write-after-free)", "verdict": "not_reproduced", "impact": "none", "reproduce": { "build": "cc -O2 -Wall -o grow_stale grow_stale.c", "run": "./grow_stale (unprivileged) ; then as root: sh reload_stale.sh", "expected": "on Bt848/878 hardware: grow ioctl accepted (registry now holds freed KVA); after kldunload/kldload of bktr the re-attach reinstalls the OLD address and bzero()s it; capture then corrupts whatever occupies that KVA. On this guest: open(/dev/bktr0) -> ENOENT (no device)." }, "kernel_refs": [ "sys/dev/video/bktr/bktr_mem.c:55", "sys/dev/video/bktr/bktr_mem.c:64", "sys/dev/video/bktr/bktr_mem.c:103", "sys/dev/video/bktr/bktr_mem.c:115", "sys/dev/video/bktr/bktr_mem.c:142", "sys/dev/video/bktr/bktr_core.c:382", "sys/dev/video/bktr/bktr_core.c:415", "sys/dev/video/bktr/bktr_core.c:1667", "sys/dev/video/bktr/bktr_core.c:1669", "sys/dev/video/bktr/bktr_core.c:429", "sys/dev/video/bktr/bktr_core.c:432", "sys/dev/video/bktr/bktr_os.c:325", "sys/dev/video/bktr/bktr_os.c:362" ], "artifacts": [ "grow_stale.c", "reload_stale.sh", "build.sh", "run.sh", "build.log", "run.log", "env.txt", "fix.diff", "README.md", "VERDICT.md", "manifest.json", "verdict.json" ] } |