DF-2233 / manifest.json
{ "finding_id": "DF-2233", "title": "Lockless iconv list traversal vs concurrent module unload (UAF)", "verdict": "reproduced", "impact": "panic", "privesc_candidate": false, "kernel_refs": [ "sys/libiconv/iconv.c:145", "sys/libiconv/iconv.c:150", "sys/libiconv/iconv.c:162", "sys/libiconv/iconv.c:167", "sys/libiconv/iconv.c:232", "sys/libiconv/iconv.c:243", "sys/libiconv/iconv.c:251", "sys/libiconv/iconv.c:418", "sys/libiconv/iconv.c:133", "sys/libiconv/iconv.c:218", "sys/libiconv/iconv.c:80", "sys/kern/subr_kobj.c:225", "sys/kern/kern_sysctl.c:1447" ], "reproduce": { "build": "sh build.sh (guest, root): bundles pristine /usr/src/sys/libiconv sources + race2233_harness.c into race2233.ko; cc -O churnadd.c", "run": "sh run.sh (guest, root): 4x churnadd walk 200000000 + loop { kldunload libiconv; kldload libiconv }", "expected": "Fatal trap 12 within 45 s: fault virtual address = 0x800, Stopped at iconv_lookupconv+0x30: movq 0x800(%rsi),%rdi (twice reproduced on independent boots; panic.txt / panic.2.txt)" }, "artifacts": [ "README.md", "VERDICT.md", "Makefile", "race2233_harness.c", "churnadd.c", "build.sh", "run.sh", "build.log", "run.log", "panic.txt", "panic.2.txt", "env.txt", "fix.diff", "fixvalidation.log", "manifest.json", "verdict.json" ] } |