⬢ DragonFlyBSD Kernel Audit
DF-5477 / manifest.json
← back to finding ↓ download raw
{
  "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"
  ]
}