DF-1947 / manifest.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | { "finding_id": "DF-1947", "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", "code_hash": "b9a306d0f9e7f73e4c245b4cc038294a3be6c13dd327ab55b89b5a9764a94a47", "tested_at": "2026-07-22T18:10:00Z", "verdict": "REPRODUCED", "impact": "panic", "confidence": "certain", "reproduce": { "build": "./build.sh", "run": "./run.sh", "expected": "Harness prints the MEC1/MEC2 underflow arithmetic (ucode_size_bytes=0x10, jt_size*4=0x100 -> memcpy len=0xFFFFFF10 = ~4 GiB), then triggers SIGSEGV at BO+4096 in the guard-page proof, proving the memcpy length writes past the destination. Also analytically shows the DMCU_ERAM and patch_jt wrap paths. After applying fix.diff to /usr/src and rebuilding amdgpu.ko, the build returns rc=0 with the underflow/bounds guards compiled in." }, "kernel_refs": [ "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:354", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:355", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:356", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:357", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:358", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:359", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:369", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:370", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:371", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:372", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:373", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:374", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:412", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:413", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:414", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:415", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:416", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:417", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:418", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:251", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:423", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.c:449", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.h:61", "sys/dev/drm/amd/amdgpu/amdgpu_ucode.h:160" ], "artifacts": [ { "path": "oob_write.c", "type": "trigger-source", "desc": "userspace replica of amdgpu_ucode_init_single_fw MEC1/MEC2 path + guard-page proof + DMCU/patch_jt analytics" }, { "path": "build.sh", "type": "build-script", "desc": "cc -O2 -Wall -Wextra -o oob_write oob_write.c" }, { "path": "run.sh", "type": "run-script", "desc": "executes ./oob_write" }, { "path": "build.log", "type": "build-log", "desc": "final successful build, full output" }, { "path": "run.log", "type": "run-log", "desc": "decisive run, full output incl underflow + SIGSEGV" }, { "path": "fix.diff", "type": "suggested-fix", "desc": "git-apply-able: underflow/multiplication guards + arr_off+ucode_size bounds in init_single_fw and patch_jt" }, { "path": "fix_build.log", "type": "build-log", "desc": "Phase 8: amdgpu.ko build with fix applied, rc=0" }, { "path": "env.txt", "type": "environment", "desc": "uname, cc version, sysctls" }, { "path": "dmesg.txt", "type": "dmesg", "desc": "proof no AMD GPU is present on the guest (HW-gated)" }, { "path": "VERDICT.md", "type": "verdict", "desc": "full narrative + Phase 6 hard-blocker analysis + primitive characterization" }, { "path": "README.md", "type": "readme", "desc": "human-facing summary + reproduce instructions" }, { "path": "manifest.json", "type": "manifest", "desc": "this catalog" }, { "path": "fix_apply.log", "type": "apply-log", "desc": "patch --dry-run output proving fix.diff applies cleanly on with-src" }, { "path": "../fix_build_combined.log", "type": "build-log", "desc": "Combined 41-finding kernel build (rc=0, -Werror clean)" }, { "path": "../fix_build_summary.txt", "type": "build-summary", "desc": "Summary of the combined 41-finding kernel build" } ] } |