DF-4435 / verdict.json
{ "finding_id": "DF-4435", "status": "untested", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "Certain static defect, no runtime security impact demonstrable on available hardware. CRTC_REG_UPDATE_4/_5 in dce120_timing_generator.c:57-61 pass pair-count 3 to CRTC_REG_UPDATE_N; generic_reg_update_ex (dc_helper.c:32-58) consumes exactly n (shift,mask,value) triples, so the 4th/5th field updates are silently dropped: CRTC_TEST_PATTERN_COLOR_FORMAT is never programmed (dce120:921-925,1023-1027) and CRTC_TEST_PATTERN_VRES/RAMP0_OFFSET never programmed (dce120:1062-1087). Reading fewer varargs than supplied is defined behavior - no memory-safety primitive; all sinks are masked MMIO RMWs to constant CRTC registers. Upstream-inherited verbatim (Linux v4.15 and current master both carry n=3). Untested because it requires Vega10/DCE12 display hardware; the audit QEMU guest has no DRM device at all (/dev/dri absent). Info severity - QEMU verification not mandated.", "exploit_chain": "", "evidence": "findings/poc/DF-4435/VERDICT.md (line-by-line macro/varargs proof + upstream parity URLs); fix.diff (applies cleanly, patch --dry-run verified)", "kernel_refs": [ "sys/dev/drm/amd/display/dc/dce120/dce120_timing_generator.c:57", "sys/dev/drm/amd/display/dc/dce120/dce120_timing_generator.c:60", "sys/dev/drm/amd/display/dc/dce120/dce120_timing_generator.c:921", "sys/dev/drm/amd/display/dc/dce120/dce120_timing_generator.c:1023", "sys/dev/drm/amd/display/dc/dce120/dce120_timing_generator.c:1062", "sys/dev/drm/amd/display/dc/dc_helper.c:32", "sys/dev/drm/amd/display/dc/dm_services.h:169" ], "poc_changes": "No PoC authored: code path needs DCE12 ASIC hardware; guest lacks any DRM device", "attempts": 0, "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": 0, "guest_dirty": 0, "build_cmd": "", "run_cmd": "", "code_hash": "", "notes": "Upstream-inherited (identical in Linux v4.15 and master as of 2026-09); worth reporting upstream. Known-family findings DF-1618 (validate_timing underflow) and DF-4091 (dce110 validate) not re-reported.", "recommended_fix": "Correct CRTC_REG_UPDATE_4/_5 to pass 4 and 5 respectively to CRTC_REG_UPDATE_N", "fix_status": "not_applicable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "No behavior validation possible (no DCE12 hardware, guest has no DRM device); fix.diff is a 2-literal correction that makes the macros consistent with the _2/_3 siblings and the explicit 6-pair call at dce120:273; verified to apply cleanly with patch --dry-run", "fix_evidence": "findings/poc/DF-4435/fix.diff (patch -p1 --dry-run: OK)" } |