DF-4761 / verdict.json
{ "finding_id": "DF-4761", "status": "untested", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "Analysis-only. 60 * crystal_clock_freq * 10000 (u32) wraps for any realistic xclk (25 MHz-class -> 1.5e10 > UINT32_MAX) in both the fan-RPM read (vega10_thermal.c:115) and the TACH-target set (:325) paths, producing systematically wrong fan telemetry and a skewed fan-regulation reference. The div-by-zero variant needs 8*speed==0 (speed==2^29) which the firmware-provided ulMinRPM/ulMaxRPM clamp makes unreachable on real VBIOS (crafted VBIOS + root hwmon write required). No memory-safety impact: all writes are masked register fields or named PPTable members; div-by-zero guards exist on the get paths. Guest has no AMD GPU, so not testable here; the arithmetic is source-provable (same expression as long-standing upstream Linux code).", "exploit_chain": "", "evidence": "findings/poc/DF-4761/README.md (arithmetic walkthrough; no guest artifacts)", "kernel_refs": [ "sys/dev/drm/amd/powerplay/hwmgr/vega10_thermal.c:115", "sys/dev/drm/amd/powerplay/hwmgr/vega10_thermal.c:110-111", "sys/dev/drm/amd/powerplay/hwmgr/vega10_thermal.c:314-325", "sys/dev/drm/amd/powerplay/hwmgr/vega10_thermal.c:80-84" ], "poc_changes": "none (no hardware on the audit guest)", "attempts": 0, "guest_uname": "n/a (guest has no AMD GPU; QEMU virtio hardware only)", "runtime_sec": 0, "guest_dirty": 0, "build_cmd": "", "run_cmd": "", "code_hash": "", "notes": "Info severity: correctness/hardening with no demonstrated security impact. File otherwise clean at the memory-safety level (audited end-to-end: register writes are REG_SET_FIELD-masked, PPTable writes are named fields, range inputs are driver-constant, no user pointers, no allocations, no work items, no IRQ registration in this file).", "recommended_fix": "Compute the RPM/TACH numerators in 64 bits (60ULL * crystal_clock_freq * 10000) before dividing", "fix_status": "not_testable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "not tested (no AMD GPU on the audit guest)", "fix_evidence": "" } |