DF-4863 / manifest.json
{ "finding_id": "DF-4863", "title": "amdgpu_cgs_get_firmware_info indexes adev->firmware.ucode[fw_type_convert(type)] without a bound: default return == array size -> one-past-end element whose .fw aliases firmware.fw_buf (type-confused deref if ever reached)", "verdict": "reproduced", "impact": "none", "confidence": "certain", "reproduce": { "build": "sh build.sh (same harness binary as DF-4862)", "run": "sh run.sh (this finding's trigger is scenario [4])", "expected": "'&firmware.ucode[MAXIMUM].fw ... == &firmware.fw_buf ... : ALIAS CONFIRMED' and, with fw_buf non-NULL, 'cgs_get_firmware_info(CGS_UCODE_ID_GMCON_RENG) = 0' with garbage image_size propagated; patched twin: '-22 (one-past-end index rejected - FIX VALIDATED)'" }, "kernel_refs": [ "sys/dev/drm/amd/amdgpu/amdgpu_cgs.c:214-215", "sys/dev/drm/amd/amdgpu/amdgpu_cgs.c:111-156", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.h:252-268", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.h:187-210", "sys/dev/drm/amd/include/cgs_common.h:46-63", "sys/sys/firmware.h:51-56" ], "artifacts": [ "cgs_mec_jt_oob.c", "cgs_mec_jt_oob_patched.c", "build.sh", "build.log", "run.log", "run.2.log", "run.3.log", "env.txt", "fix.diff", "README.md", "VERDICT.md", "manifest.json", "verdict.json" ] } |