DF-5326 / manifest.json
{ "finding_id": "DF-5326", "title": "mp_bootaddress() integer underflow corrupts the kernel physical memory map", "file": "sys/platform/pc64/x86_64/mp_machdep.c", "verdict": "untested (kernel-boot manifestation) / arithmetic reproduced on guest", "impact": "boot-time kernel memory-map corruption from crafted firmware/boot chain; not demonstrated on guest", "reproduce": { "build": "on guest (via vm.sh run_root): echo <b64> | openssl base64 -d -A > /tmp/mpb.c && cc -O2 -Wall -Wextra -o /tmp/mpb /tmp/mpb.c (or any host: cc -O2 -o mp_bootaddr_underflow mp_bootaddr_underflow.c)", "run": "/tmp/mpb (or ./mp_bootaddr_underflow)", "expected": "bootMP_size = 170; basemem<=12 -> mptramp_pagetables wraps to 0xFFFFD000-0xFFFFC000 (physmap[1] ~= 4GB); basemem 13-16 -> 0x0 (PTs smash IVT/BDA); basemem>=17 sane; 638 -> 0x9c000 (real SeaBIOS value)" }, "kernel_refs": [ "sys/platform/pc64/x86_64/mp_machdep.c:206", "sys/platform/pc64/x86_64/mp_machdep.c:212", "sys/platform/pc64/x86_64/mp_machdep.c:216", "sys/platform/pc64/x86_64/mp_machdep.c:414", "sys/platform/pc64/x86_64/machdep.c:2270", "sys/platform/pc64/x86_64/machdep.c:2272" ], "artifacts": [ "README.md", "VERDICT.md", "mp_bootaddr_underflow.c", "build.sh", "run.sh", "build.log", "run.log", "env.txt", "fix.diff", "manifest.json", "verdict.json" ] } |