DF-4359 / verdict.json
{ "finding_id": "DF-4359", "status": "untested", "reproduced": 0, "impact": "none", "confidence": "certain", "verdict": "cik_sdma_init_microcode() assigns the amdgpu_ucode_validate() result to err but never checks it inside the per-instance loop, so only the final instances result is honored; a corrupt instance-0 SDMA firmware blob that fails the only consistency gate (fw->datasize == hdr->size_bytes) is accepted with err==0 and later consumed unvalidated by cik_sdma_load_microcode (the DF-1553 sink) \u2014 a distinct missed-error-propagation defect that a DF-1553 fix alone does not close. Runtime PoC impossible on the audit guest (no CIK AMD PCI device), static proof line-accurate; low severity since firmware replacement requires root.", "exploit_chain": "", "evidence": "README.md (loop excerpt cik_sdma.c:133-152 + validate body amdgpu_ucode.c:251-260); VERDICT.md (full narrative + guest pciconf check); guest pciconf shows no 0x1002 device", "kernel_refs": [ "sys/dev/drm/amd/amdgpu/cik_sdma.c:141", "sys/dev/drm/amd/amdgpu/cik_sdma.c:950", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:251", "sys/dev/drm/amd/amdgpu/cik_sdma.c:552" ], "poc_changes": "none \u2014 no PoC seed; static verification only (hardware-gated path)", "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": "Pass-2 finding on sys/dev/drm/amd/amdgpu/cik_sdma.c. Skipped runtime PoC per contract: Low severity, non-hot-bucket, path requires CIK AMD ASIC absent from QEMU guest (pciconf verified 2026-09-19). Distinct from known DF-1553 (different function/root cause); not a re-report.", "recommended_fix": "In cik_sdma_init_microcode, if (err) goto out; immediately after amdgpu_ucode_validate() so a failed validation of any instance aborts the load", "fix_status": "not_testable", "fix_baseline_reproduced": 0, "fix_patched_reproduced": 0, "fix_verdict": "not_testable \u2014 no CIK hardware on the audit guest; fix is a two-line error check mirroring the adjacent request_firmware check", "fix_evidence": "fix diff in README.md; no baseline/patched runs possible without the ASIC" } |