{
  "schema_version": "1.6.1",
  "id": "RPI-CVE-2024-50282",
  "modified": "2026-10-09T11:39:44Z",
  "upstream": [
    "CVE-2024-50282"
  ],
  "published": "2024-11-19T01:35:04Z",
  "summary": "drm/amdgpu: add missing size check in amdgpu_debugfs_gprwave_read()",
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amdgpu: add missing size check in amdgpu_debugfs_gprwave_read()\n\nAvoid a possible buffer overflow if size is larger than 4K.\n\n(cherry picked from commit f5d873f5825b40d886d03bd2aede91d4cf002434)",
  "severity": [
    {
      "type": "CVSS_V3",
      "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
    }
  ],
  "affected": [
    {
      "package": {
        "ecosystem": "Raspberry Pi OS:12",
        "name": "linux"
      },
      "versions": [
        "1:6.1.47-1+rpt4"
      ],
      "ecosystem_specific": {
        "binaries": [
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-2712",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v6",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7l",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v8",
            "binary_version": "1:6.1.47-1+rpt4"
          }
        ]
      },
      "database_specific": {
        "per_version": {
          "1:6.1.47-1+rpt4": {
            "linux_commit": "655fc658a15ae7a6f37103754adb39ba52a9a14e",
            "upstream_version": "6.1.47",
            "assessment": "commit ancestry (strak rule)",
            "upstream_fixed": null,
            "compiled_filter": false
          }
        }
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.cve.org/CVERecord?id=CVE-2024-50282"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/673bdb4200c092692f83b5f7ba3df57021d52d29"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/8906728f2fbd6504cb488f4afdd66af28f330a7a"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/2faaee36e6e30f9efc7fa6bcb0bdcbe05c23f51f"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/4d75b9468021c73108b4439794d69e892b1d24e3"
    }
  ],
  "database_specific": {
    "source": "https://git.kernel.org/pub/scm/linux/security/vulns.git",
    "upstream_modified": "2026-08-05T11:52:36Z",
    "severity": {
      "source": "kernel CNA",
      "cvss_v3_score": 7.8,
      "cvss_v3_severity": "High",
      "scenario": "AV:L - Exploitation requires opening the local debugfs node /sys/kernel/debug/dri/N/amdgpu_gprwave and issuing an ioctl plus read() against it. There is no network-facing path to this code.\nAC:L - The overflow is fully deterministic \u2014 the attacker directly supplies the unvalidated `size` argument to read(), and `wave_read_regs()` writes exactly `size>>2` words into the fixed 4096-byte buffer with no race or unpredictable precondition. No specific memory layout is needed to trigger it.\nPR:L - In the vulnerable kernels the node was mode 0444 and all debugfs directories default to 0755, so an unprivileged local user reaches it on any system that mounts debugfs with kernel-default permissions or relaxes it for GPU tooling (Android, embedded/automotive images, ROCm/umr-enabled compute hosts); the companion stable fix \"Regular users shouldn't have read access\" confirms regular users had it. No capability check exists on the path itself.\nUI:N - The attacker performs open/ioctl/read entirely on its own; no victim action or interaction is required at any point.\nS:U - The corruption is confined to the kernel slab of the same system and security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The drain loop copies `size` bytes from the 4096-byte buffer to userspace, directly disclosing tens of kilobytes of adjacent kernel heap \u2014 defeating KASLR and leaking credentials, keys, and other slab contents, and this leak occurs even where the vgpr/sgpr callback is absent.\nI:H - The heap buffer overflow writes an attacker-chosen number of bytes past the kmalloc-4k allocation with GPU wave-register data that a co-operating render-node shader can populate, giving a controlled slab overwrite of adjacent kernel objects \u2014 a standard primitive for control-flow hijack and privilege escalation.\nA:H - Overwriting many kilobytes of adjacent slab objects reliably corrupts kernel structures and produces an oops or panic, and the attacker can repeat it at will."
    }
  }
}
