⬢ DragonFlyBSD Kernel Audit
DF-2426 / manifest.json
← back to finding ↓ download raw
{
  "verdict": "reproduced",
  "impact": "panic",
  "confidence": "certain",
  "finding_id": "DF-2426",
  "reproduce": {
    "build": "cd findings/poc/DF-2426 && ./build.sh   (sha256-gated verbatim amd.c TU df_pre.c + amd.c + df_post.c compiled into X86_64_GENERIC as dev/disk/amd/dfamd_harness.c; device amd commented out of the guest config so the verbatim copy is the only instance; nativekernel, installkernel, reboot)",
    "run": "vm.sh up && ./run.sh   (sysctl debug.df2426.control=1 -> CAM_REQ_CMP 64/32/100; sysctl debug.df2426.trigger0=1 -> Fatal trap 18 idivq in amd_action; reboot; sysctl debug.df2426.trigger_big=1 -> Fatal trap 18 divq, the XPT-filter-passing block_size=2MiB form). A/B: ./make_fixed.sh && ./run_fixed.sh",
    "expected": "Baseline: control returns CAM_REQ_CMP heads=64 secs=32 cylinders=100; trigger0 -> Fatal trap 18: integer divide fault while in kernel mode, Stopped at amd_action+0x16d: idivq %rsi,%eax, guest in DDB; trigger_big -> Fatal trap 18, Stopped at amd_action+0x178: divq %rsi,%eax. Fixed kernel (cam_calc_geometry): both triggers return status=0x04 CAM_REQ_CMP_ERR with heads=0 secs=0 cylinders=0, no trap, guest stays up, control unchanged."
  },
  "kernel_refs": [
    "sys/dev/disk/amd/amd.c:683",
    "sys/dev/disk/amd/amd.c:678",
    "sys/bus/cam/cam_xpt.c:3062",
    "sys/bus/cam/cam_xpt.c:3070",
    "sys/bus/cam/scsi/scsi_pass.c:474",
    "sys/bus/cam/scsi/scsi_da.c:2301",
    "sys/bus/cam/cam.c:376",
    "sys/dev/disk/trm/trm.c:994"
  ],
  "artifacts": [
    "README.md",
    "VERDICT.md",
    "amd.fixed",
    "amd.fixed.sha256",
    "build.log",
    "build.sh",
    "build_outer.log",
    "df_post.c",
    "df_pre.c",
    "env.txt",
    "fix.diff",
    "fix_build.log",
    "fix_installkernel.log",
    "fix_outer.log",
    "gen.log",
    "gen.sh",
    "gen_fixed.log",
    "make_fixed.sh",
    "manifest.json",
    "panic0.txt",
    "panic_big.txt",
    "run.log",
    "run.sh",
    "run_control.log",
    "run_fixed.sh",
    "run_fixed_control.log",
    "run_fixed_dmesg.log",
    "run_fixed_trigger0.log",
    "run_fixed_trigger_big.log",
    "run_trigger0.log",
    "run_trigger_big.log",
    "verdict.json"
  ]
}