DF-5011 / manifest.json
{ "finding_id": "DF-5011", "title": "dimm_mod_unload() drains foreign dimm_softc references and kfrees live objects (UAF -> kernel panic)", "file": "sys/dev/misc/dimm/dimm.c", "verdict": "reproduced", "impact": "panic", "severity": "Low", "confidence": "certain", "reproduce": { "build": "sh build.sh (in guest, kernel built without `device dimm`; see README.md precondition)", "run": "sh run.sh", "expected": "kldunload dimm returns 0 while a KPI user holds the only reference; hw.dimminfo disappears (live softc kfreed); victim's next dimm KPI call -> Fatal trap 12 at dimm.ko+0x4a0 (unmapped module text), system down at db> prompt" }, "kernel_refs": [ "sys/dev/misc/dimm/dimm.c:305", "sys/dev/misc/dimm/dimm.c:316", "sys/dev/misc/dimm/dimm.c:184", "sys/dev/misc/dimm/dimm.c:195", "sys/dev/misc/ecc/ecc_e3.c:156", "sys/dev/misc/ecc/ecc_e3.c:387", "sys/kern/kern_linker.c:477", "sys/config/X86_64_GENERIC:189" ], "artifacts": [ "README.md", "VERDICT.md", "drainpoc.c", "build.sh", "run.sh", "run-control.sh", "run-fix.sh", "build.log", "run.log", "run.2.log", "run.3.log", "panic.txt", "env.txt", "fix.diff", "manifest.json", "verdict.json" ] } |