DF-5477 / manifest.json
{ "finding_id": "DF-5477", "title": "efi_get_table(): firmware-fed physical st_cfgtbl used as kernel virtual pointer + unbounded st_entries walk", "verdict": "reproduced", "impact": "panic", "reproduce": { "build": "cd dfbsd-qemu && ssh -F config dfbsd 'mkdir -p /tmp/df5477'; ssh -F config dfbsd 'cat > /tmp/df5477/df5477_harness.c' < findings/poc/DF-5477/df5477_harness.c; then Makefile (KMOD=df5477_harness) + make obj + make", "run": "kldload /usr/obj/tmp/df5477/df5477_harness.ko; sysctl debug.df5477=1 (OOB walk, safe); sysctl debug.df5477=2 (panic; reset guest afterwards)", "expected": "Part A: FOUND entry 199 past table end -> kernel DMAP pointer 0xffffc5eadbeef000. Part B: Fatal user address access from kernel mode; Fatal trap 12; fault va 0x7fb1c000; Stopped at bcmp+0x11" }, "kernel_refs": [ "sys/platform/pc64/x86_64/efirt.c:411", "sys/platform/pc64/x86_64/efirt.c:477", "sys/platform/pc64/x86_64/efirt.c:478", "sys/platform/pc64/x86_64/efirt.c:480", "sys/platform/pc64/x86_64/efirt.c:481", "sys/platform/pc64/x86_64/efirt.c:484", "sys/dev/misc/efirt/efidev.c:77", "sys/platform/pc64/x86_64/trap.c:917", "stand/boot/efi/loader/bootinfo.c:397" ], "artifacts": [ "df5477_harness.c", "df5477_fixed.c", "build.sh", "run.sh", "build.log", "run.log", "run.2.log", "panic.txt", "fix.diff", "fix_build.log", "fix_run.log", "env.txt", "VERDICT.md", "manifest.json", "verdict.json" ] } |