⬢ DragonFlyBSD Kernel Audit
DF-4370 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-4370",
  "file": "sys/dev/drm/amd/amdgpu/amdgpu_object.c",
  "title": "Placement-walk overflow + reachable BUG_ON panic from unprivileged GEM_CREATE domain mask (AMDGPU_BO_MAX_PLACEMENTS=3)",
  "verdict": "not_reproduced (target device absent on audit VM; static proof certain)",
  "impact_real_world": "unprivileged local kernel panic (DoS) on amdgpu systems; 12-36B constant OOB write inside the amdgpu_bo allocation before the panic",
  "reproduce": {
    "build": "cc -O2 -o /tmp/poc_df4370 /tmp/poc_df4370.c",
    "run": "/tmp/poc_df4370   # on any machine with an amdgpu /dev/dri node",
    "expected": "vulnerable: 'panic: BUG in amdgpu_bo_placement_from_domain at amdgpu_object.c:209' on first GEM_CREATE (domains=0x7); fixed: ioctl returns error/handle, program prints SURVIVED lines; no-AMD-hw: NO_DRM_DEVICES exit 2"
  },
  "kernel_refs": [
    "sys/dev/drm/amd/amdgpu/amdgpu_object.c:139-216",
    "sys/dev/drm/amd/amdgpu/amdgpu_object.c:209",
    "sys/dev/drm/amd/amdgpu/amdgpu_object.c:493",
    "sys/dev/drm/amd/amdgpu/amdgpu_object.h:35",
    "sys/dev/drm/amd/amdgpu/amdgpu_gem.c:233",
    "sys/dev/drm/amd/amdgpu/amdgpu_gem.c:260",
    "sys/dev/drm/amd/amdgpu/amdgpu_gem.c:727",
    "sys/dev/drm/amd/amdgpu/amdgpu_kms.c:1197",
    "sys/dev/drm/include/asm/bug.h:33",
    "sys/dev/drm/include/drm/ttm/ttm_placement.h:85"
  ],
  "artifacts": [
    "README.md", "VERDICT.md", "poc_df4370.c", "build.sh", "run.sh",
    "build.log", "run.log", "env.txt", "fix.diff", "fix_notes.md",
    "manifest.json", "verdict.json"
  ]
}