{
  "finding_id": "DF-4880",
  "status": "untested",
  "attempts": 0,
  "reproduced": 0,
  "impact": "infoleak",
  "confidence": "certain",
  "verdict": "Hardware-gated (no AMD GPU on guest): each amdgpu_ucode_print_* helper dispatches on the attacker-controlled header_version and container_ofs into a versioned sub-struct then loads its fields - DRM_DEBUG expands to a real variadic call so the loads EXECUTE UNCONDITIONALLY on every attach/resume (drm.debug only gates printing). A 33-byte crafted blob with size_bytes==datasize passes validate and even a datasize>=32 minimum-size fix; claiming rlc 2.1 reads offsets 108..155 (~124 bytes past the kmallocd buffer). Same shape for mc(+36)/smc(+32)/gfx(+36)/sdma(+52). Values surface to dmesg only with drm.debug (heap info leak); page-boundary panic possible. Distinct sink from DF-1946 that survives its proposed minimum fix. Per-branch size-floor-gate fix.",
  "exploit_chain": "root-placed 40-byte amdgpufw_*_rlc claiming v2.1 -> print helper loads fields at +108..155 of a 40-byte allocation -> adjacent heap to dmesg under drm.debug",
  "evidence": "findings/poc/DF-4880/ (this verdict)",
  "kernel_refs": [
    "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:54",
    "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:166",
    "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:256"
  ],
  "guest_uname": "",
  "code_hash": ""
}