DF-4171 / manifest.json
{ "finding_id": "DF-4171", "verdict": "reproduced", "impact": "leak", "severity": "Medium", "confidence": "certain", "mechanism_correction": "count is uint8_t (hwmgr.h:137-141/183-186): count-1 promotes to int -1, so the access is entries[-1] at table-8, NOT index 0xFFFFFFFF/~16GB; no in-kernel panic -- silent 8-byte heap under-read feeding hard_min_clk/SMU clock params. The finding's defect class (CWE-125 count==0 OOB read, load-time guard passthrough, StablePState/en_umd_pstate triggers) is confirmed verbatim.", "reproduce": { "build": "cd rig && sh build.sh /usr/src # 26 verbatim blocks checker-proven byte-identical on the guest; builds rig_base (verbatim slice) + rig_fixed (same slice + this pack's fix.diff)", "run": "cd rig && sh run.sh # 11 modes x {baseline, fixed}; decisive modes: 4171-vce-count0 (StablePState cap), 4171-uvd-count0-en-umd (en_umd_pstate sysfs route), clean-valid", "expected": "baseline: both 4171 modes SIGSEGV READ classified '8 bytes BEFORE the start of the 8B table object: NEGATIVE-INDEX UNDERFLOW READ', fault address == the predicted table-8 printed beforehand (entries at +4, record 12B). fixed build: both return rc=-EINVAL with no fault; clean-valid byte-identical; 4169 modes still fault (orthogonal). Three runs byte-identical (run.log, run.2.log, run.3.log)." }, "kernel_refs": [ "sys/dev/drm/amd/powerplay/hwmgr/smu8_hwmgr.c:471", "sys/dev/drm/amd/powerplay/hwmgr/smu8_hwmgr.c:473", "sys/dev/drm/amd/powerplay/hwmgr/smu8_hwmgr.c:1260", "sys/dev/drm/amd/powerplay/hwmgr/smu8_hwmgr.c:1261", "sys/dev/drm/amd/powerplay/hwmgr/smu8_hwmgr.c:1856", "sys/dev/drm/amd/powerplay/hwmgr/smu8_hwmgr.c:1857", "sys/dev/drm/amd/powerplay/inc/hwmgr.h:137", "sys/dev/drm/amd/powerplay/inc/hwmgr.h:183", "sys/dev/drm/amd/powerplay/hwmgr/processpptables.c:1119", "sys/dev/drm/amd/powerplay/amd_powerplay.c:310" ], "artifacts": [ "README.md", "VERDICT.md", "env.txt", "fix.diff", "build.log", "run.log", "run.2.log", "run.3.log", "verdict.json", "manifest.json", "rig/gen_rig.sh", "rig/check_verbatim.sh", "rig/rig_shims.h", "rig/smu8_rig.c", "rig/Makefile", "rig/build.sh", "rig/run.sh", "rig/smu8_slice.inc", "rig/smu8_slice_fixed.inc", "rig/smu8_slice_verbatim.h", "rig/rig_fix.diff" ] } |