⬢ DragonFlyBSD Kernel Audit
DF-5640 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-5640",
  "title": "TSC cputimer registered with unvalidated tsc_frequency -> division by zero (boot-time kernel panic)",
  "verdict": "reproduced",
  "impact": "panic",
  "confidence": "certain",
  "reproduce": {
    "build": "cd findings/poc/DF-5640 && ./build.sh   (builds df5640.ko on the guest against /usr/src)",
    "run": "./run.sh   (kldload /root/df5640/df5640.ko on unpatched kernel)",
    "expected": "Fatal trap 18: integer divide fault while in kernel mode; Stopped at cputimer_select+0x29: divq %rcx,%eax; guest drops to DDB, ssh dies"
  },
  "kernel_refs": [
    "sys/cpu/x86_64/misc/cputimer_tsc.c:145",
    "sys/cpu/x86_64/misc/cputimer_tsc.c:155",
    "sys/cpu/x86_64/misc/cputimer_tsc.c:156",
    "sys/cpu/x86_64/misc/cputimer_tsc.c:162",
    "sys/kern/kern_cputimer.c:99",
    "sys/kern/kern_cputimer.c:190",
    "sys/kern/kern_cputimer.c:191",
    "sys/platform/pc64/isa/clock.c:871",
    "sys/platform/pc64/isa/clock.c:980",
    "sys/platform/pc64/isa/clock.c:1038",
    "sys/platform/pc64/isa/clock.c:1513",
    "sys/platform/pc64/isa/clock.c:1522",
    "sys/platform/pc64/x86_64/initcpu.c:375",
    "sys/platform/pc64/x86_64/initcpu.c:411"
  ],
  "artifacts": [
    "df5640.c", "build.sh", "run.sh", "README.md", "VERDICT.md",
    "build.log", "run.log", "panic_serial.log", "panic.txt",
    "forced_boot_dmesg.txt", "env.txt",
    "fix.diff", "fix_build.log", "fix_run.log", "fix_forced_boot.txt",
    "manifest.json", "verdict.json"
  ]
}