DF-5675 / manifest.json
{ "finding_id": "DF-5675", "title": "Recursive proplib externalize vs. iterative internalize: unbounded kernel stack recursion via DM ioctl plist echo (16KB kstack exhausted at ~192 nesting levels)", "manifest_version": 1, "verdict": "reproduced", "impact": "kernel panic (double fault); deterministic local kill for operator/root via 3KB XML", "reproduce": { "build": "sh build.sh (guest, root, /tmp/df5675; same-source libprop rig + both harnesses)", "run": "sh run.sh", "expected": "userland: depth 300 externalize OK / depth 20000 internalize OK then SIGSEGV(139); kernel: depth 64,128 survive; depth 192 -> 'Fatal double fault', page-aligned rsp, panic; patched kernel (fix.diff): 192/2048 -> ENOMEM, 32/60 -> echo OK" }, "kernel_refs": [ "sys/libprop/prop_object.c:617-659", "sys/libprop/prop_object.c:1061-1107", "sys/libprop/prop_array.c:174-186", "sys/libprop/prop_dictionary.c:455-467", "sys/dev/disk/dm/device-mapper.c:267-273" ], "artifacts": [ "README.md", "VERDICT.md", "df5675_dmcrash.c", "df5675_userland.c", "build.sh", "run.sh", "fix.diff", "panic.txt", "panic.2.txt", "fixtest.console.txt", "build.kernel.log", "run.userland.log", "manifest.json", "verdict.json" ] } |