{
  "finding_id": "DF-3746",
  "status": "inconclusive",
  "reproduced": 0,
  "impact": "none",
  "confidence": "certain",
  "verdict": "The voltage-object family reads past the VBIOS image on self-declared data: (1) atom_lookup_voltage_object_v1/v2/v3 (:3382-3431) walk bounded only by the tables own usStructureSize (u16) \u2014 size=0xFFF8 walks ~16k objects over a 64-byte table and past the image (harness: 16290 OOB reads); returned OOB objects are then dereferenced by radeon_atom_get_max/min_voltage, get_voltage_step, get_svi2_info. (2) v1 advance bug: offset += offsetof(...)+ucNumOfVoltageEntries BYTES while entries are VOLTAGE_LUT_ENTRY=4 bytes (:3393-3394) \u2014 v2 correctly multiplies by sizeof (:3410-3411) \u2014 so v1 mis-parses every subsequent object. (3) radeon_atom_get_leakage_vddc_based_on_leakage_params checks only size<sizeof(header) (:3237) then indexes vddc_buf[j*ucElbVDDC_Num+i] with two BIOS u8 counts \u2014 up to element 65024 (~130 KB past the array base, far past any VBIOS image). Kernel path unreachable on this guest.",
  "exploit_chain": "crafted VoltageObjectInfo/ASIC_ProfilingInfo tables -> OOB heap reads at DPM init -> wrong voltage objects used (mis-programmed voltages) and/or crash",
  "evidence": "harness_voltobj.c + build.log + run.log; VERDICT.md; kernel refs sys/dev/drm/radeon/radeon_atombios.c:3382-3397",
  "kernel_refs": [
    "sys/dev/drm/radeon/radeon_atombios.c:3382-3397",
    "sys/dev/drm/radeon/radeon_atombios.c:3399-3414",
    "sys/dev/drm/radeon/radeon_atombios.c:3416-3431",
    "sys/dev/drm/radeon/radeon_atombios.c:3224-3280",
    "sys/dev/drm/radeon/atombios.h:4484-4495"
  ],
  "poc_changes": "harness written from scratch (no seed PoC): verbatim kernel arithmetic replica with canary-guarded destination model, built and executed on the DragonFly guest (cc 8.3); fixed nested-comment, stddef/stdint includes and volatile divisors during bring-up",
  "attempts": 3,
  "guest_uname": "DragonFly dfbsd 6.5-DEVELOPMENT DragonFly 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": 6,
  "guest_dirty": 0,
  "build_cmd": "./build.sh",
  "run_cmd": "./run.sh (after ./build.sh)",
  "code_hash": "5a0512c32c732508b02f5f14ffd1da2dc1eb23af578653b0aa3bbecb91fa0281",
  "notes": "Guest has NO AMD/radeon GPU (virtio-only); /boot/kernel/radeon.ko exists (code shipped in the default install) but cannot attach, so the kernel code path is unreachable at runtime on this guest. Evidence is source-level certainty (path:line traced) plus a verbatim-arithmetic userland harness compiled and executed on the guest (build.log/run.log).",
  "recommended_fix": "bound walks by the image length (bios_size plumbing) and fix the v1 stride",
  "fix_status": "not_tested",
  "fix_baseline_reproduced": 0,
  "fix_patched_reproduced": 0,
  "fix_verdict": "fix.diff authored after source-level verification; cannot be validated on this guest (no AMD GPU; radeon.ko cannot attach). Compiling the module or booting a patched kernel would not exercise the path without hardware.",
  "fix_evidence": "fix.diff (unified, against read-only sys/ tree; never applied)"
}