DF-5592 / manifest.json
{ "finding_id": "DF-5592", "title": "cam_sim freed while pending in the camisr completion softint (UAF: write + function-pointer dispatch from freed object)", "verdict": "reproduced", "impact": "panic", "reproduce": { "build": "sh build.sh (in guest /root/df5592; builds ptsim3/ptsim3.ko)", "run": "kldload ./ptsim3/ptsim3.ko; sleep 2; sysctl debug.ptsim3.go=1 # =2 panic, =4 fix-check", "expected": "mode 1: '*** UAF CONFIRMED: kernel ran a completion callback out of a cam_sim chunk that cam_sim_free() had already kfree()'d ***'; mode 2: [Stopped at camisr_runqueue+0x53] DDB/fatal trap; mode 4 on fixed kernel: chunk refcount reads 1 after cam_sim_free (pin held), marker fires with sim valid" }, "kernel_refs": [ "sys/bus/cam/cam_sim.c:241-256", "sys/bus/cam/cam_xpt.c:4891-4926", "sys/bus/cam/cam_xpt.c:7389-7407", "sys/bus/cam/cam_xpt.c:7506", "sys/dev/disk/ahci/ahci_cam.c:210-227" ], "artifacts": [ "ptsim3.c", "build.sh", "run.sh", "build.log", "run.log", "panic.txt", "fix.diff", "fix_build.log", "fix_run.log", "README.md", "VERDICT.md", "manifest.json", "verdict.json", "env.txt" ] } |