DF-3901 / verdict.json
{ "finding_id": "DF-3901", "status": "inconclusive", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "Source-certain uninitialized-stack consumption: skl_dram_get_channels_info() (i915_drv.c:1219) declares ch0/ch1 without initializers; skl_dram_get_channel_info() returns -EINVAL at :1160/:1165 before writing any field when a MAD_DIMM channel register is blank (empty DIMM slot); with exactly one populated channel the caller reads ch1.rank/ch0.rank (:1243-1247), is_16gb_dimm (:1254) and ch0.s_info.* via intel_is_dram_symmetric (:1256) from uninitialized stack, steering dram_info->rank/is_16gb_dimm/symmetric_memory used by SKL watermark latency selection at every driver load on gen9 non-LP. Not attacker-influenced, no corruption, no disclosure; worst case display underruns/blank on single-channel SKL/KBL. Upstream hardened this exact function later with = {} initializers (intel_dram.c). Guest cannot execute the i915 path (virtio VGA, no /dev/dri) -> inconclusive.", "exploit_chain": "", "evidence": "VERDICT.md (field-by-field proof); skl_dram_probe.c + run.log (guest: no render node)", "kernel_refs": [ "sys/dev/drm/i915/i915_drv.c:1219", "sys/dev/drm/i915/i915_drv.c:1154", "sys/dev/drm/i915/i915_drv.c:1243", "sys/dev/drm/i915/i915_drv.c:1254", "sys/dev/drm/i915/i915_drv.c:1256" ], "poc_changes": "authored fresh; probe is reachability-only since the uninit consumption is internal", "attempts": 1, "guest_uname": "DragonFly dfbsd 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": 10, "guest_dirty": 0, "build_cmd": "cc -o skl_dram_probe skl_dram_probe.c -Wall", "run_cmd": "./skl_dram_probe", "code_hash": "sha256:edde19c5dff506f577c464b330461590464fa3e87f542833089922f37f9538a7", "fix_status": "not_applicable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "fix.diff adds the upstream = {} initializers (I915_DRAM_RANK_INVALID==0 so a blank channel then reads INVALID, is_16gb_dimm false); not build-validated on guest (i915 not buildable there)", "fix_evidence": "fix.diff", "notes": "bxt_get_dram_info() sibling path is safe (only updates dram_info fields on success); noted in file negative notes", "recommended_fix": "Zero-initialize ch0/ch1 in skl_dram_get_channels_info() (match upstream intel_dram.c = {})" } |