⬢ DragonFlyBSD Kernel Audit
DF-3783 / verdict.json
← back to finding ↓ download raw
{
  "finding_id": "DF-3783",
  "status": "reproduced",
  "reproduced": 1,
  "impact": "dos",
  "confidence": "certain",
  "verdict": "REPRODUCED at source level (arithmetic harness). The verbatim-ported emission code (split/getline/notclipped + rgb_prog loop) proves the program size is 8.7x-37x the 8-page buffer for validated clip lists, and 1.25x for a plain 2046-row odd-only YUV4:2:2 geometry. Runtime kernel trigger impossible on this guest (no Bt848 hardware, driver not built); on real hardware the METEORCAPTUR ioctl linearly overwrites ~0.25-1.2 MiB of kernel heap during program build.",
  "exploit_chain": "open /dev/bktr0 (0444) -> BT848SCLIP(99 nodes) -> METEORCAPTUR -> build_dma_prog/rgb_prog writes 71k+ dwords into 8192-dword buffer -> kernel heap corruption during the ioctl (panic / groomable corruption).",
  "evidence": "run.log: [A] 640x480 99 clips -> 71526/71526 dwords vs cap 8192 (8x, 254 KiB past end each buffer); [B] 2046x1022 -> 304860 dwords (37x, 1.19 MiB past end); [C] yuv422 odd-only rows=2046, no clips -> 10236 dwords (8176 B past end). Clip list passes the drivers own validation (rc=0, max_clip_node=99). fix_build.log: all-fpatches module builds with -Werror.",
  "kernel_refs": [
    "sys/dev/video/bktr/bktr_core.c:141",
    "sys/dev/video/bktr/bktr_core.c:395",
    "sys/dev/video/bktr/bktr_core.c:1219",
    "sys/dev/video/bktr/bktr_core.c:2465",
    "sys/dev/video/bktr/bktr_core.c:2536",
    "sys/dev/video/bktr/bktr_core.c:2857",
    "sys/dev/video/bktr/bktr_core.c:3126",
    "sys/dev/video/bktr/bktr_reg.h:455"
  ],
  "poc_changes": "none - verbatim port compiled on first syntax fix (errno.h include)",
  "attempts": 3,
  "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT #0: Thu Jul  2 06:02:54 UTC 2026 root@dfbsd:/usr/obj/usr/src/sys/X86_64_GENERIC x86_64",
  "runtime_sec": 240,
  "guest_dirty": 0,
  "build_cmd": "cc -O -Wall -o harness harness.c",
  "run_cmd": "./harness",
  "code_hash": "3cdd2727f2024f0df6419ede30276a5bb2c4415b4fb79ce85767bfb6ab83e1ad",
  "notes": "No hardware on guest; privesc chain not developed beyond the corruption primitive.",
  "recommended_fix": "Add dma_prog_limit bound-checks to split() and the yuv emit loops (fix.diff)",
  "fix_status": "not_testable",
  "fix_baseline_reproduced": 1,
  "fix_patched_reproduced": 0,
  "fix_verdict": "Runtime fix validation impossible on this guest (no Bt848/878 hardware, driver not in GENERIC, no module dir). fix.diff applies cleanly to sys/ and the patched bktr KLD module compiles with -Werror on the guests /usr/src (fix_build.log).",
  "fix_evidence": "fix.diff; fix_build.log (all-8-fixes module build, MAKE_RC=0)"
}