Record summary

CVE-2026-46215 has a selected CVSS score of 7.8 (high); EIP currently links 2 repository PoCs.

Description

In the Linux kernel, the following vulnerability has been resolved: drm: Set old handle to NULL before prime swap in change_handle There was a potential race condition in change_handle. The ioctl briefly had a single object with two idr entries; a concurrent gem_close could delete the object and remove one of the handles while leaving the other one dangling, which could subsequently be dereferenced for a use-after-free. To fix this, do the same dance that gem_close itself does. (f6cd7daecff5 drm: Release driver references to handle before making it available again) First idr_replace the old handle to NULL. Later, if the prime operations are successful, actually close it. create_tail required a similar dance to avoid a similar problem. (bd46cece51a3 drm/gem: Fix race in drm_gem_handle_create_tail()) It idr_allocs the new handle with NULL, then swaps in the correct object later to avoid races. We don't need to do that here, since the only operations that could race are drm_prime, and change_handle holds the prime lock for the entire duration. v2: cleanups of error paths

Description source: CVE List

Exploitation context

Available material

Repository PoCs
2

CISA SSVC decision

ExploitationPoC
AutomatableNo
Technical impactTotal

CISA Coordinator · SSVC 2.0.3 · Evaluated Jul 9, 2026 · Source: CVE List

Affected products and versions

2
ProductSourceVersion rangeStatus

Default status: unaffected, affected

CVE List53096728b8910c6916ecc6c46a5abc5c678b58d9 to < 672464dd53231509c9c771110798c56d4660e19eaffected
53096728b8910c6916ecc6c46a5abc5c678b58d9 to < 61bd96d3e5472c253f9c1ab77608f0c8aaa9d025affected
53096728b8910c6916ecc6c46a5abc5c678b58d9 to < 5e28b7b94408897e41c63477aabc9e1db439bc8caffected
6.18affected
Before 6.18unaffected
6.18.32 to ≤ 6.18.*unaffected
7.0.9 to ≤ 7.0.*unaffected
7.1 to ≤ *unaffected
OSV6.18.0 to < 6.18.32 · Fixed in 6.18.32affected
6.19.0 to < 7.0.9 · Fixed in 7.0.9affected

Proofs of concept

2

Repository PoCs

GitHub0xCyberstan/CVE-2026-46215-POCRepository PoCby 0xCyberstanStars: 11Exploit3 files

26.7 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

A full local privilege escalation exploit for CVE-2026-46215, a use-after-free in the Linux kernel's DRM GEM change_handle ioctl. The exploit races GEM_CHANGE_HANDLE against GEM_CLOSE to create a dangling handle, reclaims the freed object with a pipe_buffer spray, leaks a kernel pointer to bypass KASLR, uses FLINK to set the PIPE_BUF_FLAG_CAN_MERGE flag, and overwrites /etc/passwd to create a passwordless root account.

Backdoor review

No backdoor observed in reviewed code

The repository contains a proof-of-concept exploit for CVE-2026-46215, a Linux kernel DRM GEM use-after-free vulnerability. The code performs a local privilege escalation by racing ioctls, reclaiming freed memory with pipe buffers, leaking a kernel pointer, and overwriting /etc/passwd via a DirtyPipe-style technique. All behavior is consistent with the stated exploit goal; no concealed backdoor, unrelated payload, or operator-directed harm was observed.

ClassificationExploit
Model confidence100%
AuthenticationNot required
Languagescshell
Target softwarelinux kerneldrm subsystem
Attack typesuse-after-freerace conditionlocal privilege escalationkaslr bypassdirty pipe
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The artifact contains a complete, functional exploit (poc.c) that exercises the CVE-2026-46215 vulnerability to achieve local privilege escalation by overwriting /etc/passwd. The README explicitly describes it as an exploit and provides a full exploitation chain.

README.md:1-8README.md:39-49poc.c:1-8

Requirements

  • Access to a DRM render node (/dev/dri/renderD* or /dev/dri/card*)README.md:5-7
  • A vulnerable Linux kernel (v6.18-rc1 through 6.18.31, 6.19 through 7.0.8, 7.1-rc1/rc2) built without CONFIG_KASANREADME.md:11-13README.md:68-69
  • A supported DRM driver (virtio_gpu or nouveau) that exposes object size/name at expected offsetsREADME.md:70-71

Observed behavior

  • Races DRM_IOCTL_GEM_CHANGE_HANDLE and DRM_IOCTL_GEM_CLOSE to create a dangling GEM handlepoc.c:158-186poc.c:346-422
  • Sprays pipe_buffers to reclaim the freed GEM object's slab slotpoc.c:302-332
  • Leaks a kernel pointer (pipe_buf_ops) via a driver info ioctl to bypass KASLRpoc.c:538-550
  • Uses DRM_IOCTL_GEM_FLINK to set PIPE_BUF_FLAG_CAN_MERGE on the overlapping pipe_bufferpoc.c:572-592
  • Writes to pipes to merge data into the page cache and overwrite /etc/passwd with a passwordless root entrypoc.c:595-604
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Exploit Behavior
Payload withheldThe entire codebase implements the described exploit chain against the targeted CVE. No actions beyond the stated LPE are performed.poc.c:1-655run_exploit.sh:1-146
Target File Modification
Payload withheldThe exploit's final payload writes a passwordless root entry to /etc/passwd, which is the documented goal of the PoC.poc.c:596-598poc.c:626-632
Network Activity
Payload withheldNo network sockets, connections, or data exfiltration are present in the code.poc.c:1-655
Persistence Mechanism
Payload withheldThe exploit modifies /etc/passwd for immediate privilege escalation but does not install any persistent backdoor, cron job, or service.poc.c:1-655
Review boundaries

What the analysis did not establish

  • Evidence is limited to the three text files provided (README.md, poc.c, run_exploit.sh). No binary files were inspected.
  • The exploit's reliability and safety are not verified; the analysis is based solely on the supplied source code and documentation.
  • Review is based solely on the supplied text files; no binary analysis was performed.
  • The artifact's behavior was not executed or dynamically verified.
  • The review does not assess the safety or reliability of the exploit code.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

GitHubbluedragonsecurity/CVE-2026-46215-EXPLOITRepository PoCby bluedragonsecurityStars: 3Exploit6 files

428.5 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

The artifact is a Linux kernel local privilege escalation exploit for CVE-2026-46215, a use-after-free vulnerability in the DRM subsystem. It races the DRM_IOCTL_GEM_CHANGE_HANDLE and DRM_IOCTL_GEM_CLOSE ioctls to create a dangling GEM handle, then uses heap manipulation and pipe spraying to overwrite payload withheld with a root entry and spawn a root shell.

Backdoor review

No backdoor observed in reviewed code

The supplied evidence consists of a README, a Makefile, and a C exploit for CVE-2026-46215. The exploit performs a local privilege escalation (LPE) by racing a DRM ioctl to achieve a use-after-free, then overwriting payload withheld to add a root user and spawning a root shell via su. All observed behavior is consistent with the stated LPE goal; no concealed backdoor, unrelated remote access, persistence mechanism, or deceptive payload was found.

ClassificationExploit
Model confidence100%
AuthenticationRequired
LanguagesCMakefile
Target softwareLinux kernelDRM subsystem
Attack typesuse-after-freerace conditionlocal privilege escalation
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The artifact contains complete C source code that actively exploits CVE-2026-46215 to achieve local privilege escalation by overwriting payload withheld and spawning a root shell. It does not merely detect or report the vulnerability; it exercises the use-after-free to corrupt memory and escalate privileges.

exploit.c:1-613README.md:1-10

Requirements

  • User must be in the 'video' group to open /dev/dri.README.md:74-89
  • The system must have a virtio DRM device available.exploit.c:149-175
  • The target kernel must be Linux 7.0 (vulnerability exists from 7.0 to 7.0.8).README.md:30-32exploit.c:14-16

Observed behavior

  • Opens a virtio DRM device from /dev/dri.exploit.c:149-175
  • Creates a GEM buffer object and races DRM_IOCTL_GEM_CHANGE_HANDLE with DRM_IOCTL_GEM_CLOSE to produce a dangling handle.exploit.c:215-247
  • Performs heap grooming (defrag, migration, pipe spray) to reclaim the freed GEM object's slab page with pipe buffers.exploit.c:443-545
  • Uses the dangling handle with DRM_IOCTL_VIRTGPU_RESOURCE_INFO to leak a kernel pointer for KASLR bypass.exploit.c:547-558
  • Writes a crafted 'oot::0:0:dirty:/root:/bin/sh' payload into the pipe buffers to overwrite payload withheld.exploit.c:338exploit.c:562-565
  • Spawns a root shell via 'su - root' after successfully overwriting payload withheld.exploit.c:285-335exploit.c:572-583
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Payload
Payload withheldThe exploit writes this string into payload withheld via pipe spray to create a root-equivalent user 'dirty' with UID 0, which is the standard LPE technique for this class of exploit.exploit.c:338exploit.c:564
Privilege Escalation
Payload withheldAfter overwriting payload withheld, the exploit calls root("root") which forkpty's and exec's /bin/su to provide an interactive root shell. This is the intended outcome of the LPE.exploit.c:285-335exploit.c:583
Target File
Payload withheldThe exploit targets payload withheld for overwrite, a common LPE target. It also creates a dummy payload withheld if missing, which is part of the exploit setup.exploit.c:92exploit.c:401-412
Review boundaries

What the analysis did not establish

  • Three non-text media files (lpe.png, lpe2.png, process.png) totaling 419864 bytes are present but not analyzed; they are screenshots referenced in the README and do not affect classification of the primary C source code.
  • The exploit is explicitly described by its author as unstable, unreliable, and may cause kernel panics, but this does not change its classification as an exploit.
  • Three non-text media files (lpe.png, lpe2.png, process.png) totaling 419864 bytes were present in the repository but were not analyzed; they are flagged as metadata-only. The review covers only the supplied text files.
  • The review does not assess whether the exploit is functional, safe, or reliable; it only evaluates the presence of backdoor or deceptive behavior in the provided source code.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

Research & analysis

1
Technical researchcyberstanSource: EIP research review

Unprivileged root via a use-after-free in DRM GEM change_handle (CVE-2026-46215) – cyberstan

Technical analysis of CVE-2026-46215, a use-after-free in the Linux kernel DRM GEM core ioctl DRM_IOCTL_GEM_CHANGE_HANDLE. drm_gem_change_handle_ioctl() moves a GEM object between handles without adjusting handle_count, creating a window where two IDR entries exist while handle_count reads 1. A concurrent GEM_CLOSE on the old handle frees the object while the new handle still references it. The author describes an exploit chain: reclaim the kmalloc-512 slot with pipe_buffer spray, leak a kernel pointer via struct overlap to defeat KASLR, set PIPE_BUF_FLAG_CAN_MERGE via FLINK name assignment, and overwrite /etc/passwd through the page cache. Both ioctls are DRM_RENDER_ALLOW, reachable by any logged-in user on default desktop distributions. The fix uses a two-stage idr_replace to close the race window; the ioctl is being disabled in Linux 7.1. The bug was independently discovered by the author and first reported by Puttimet Thammasaeng, who holds the upstream credit.

Root causeExploit chainMitigation
https://cyberstan.co.uk/drm-lpe-linux
Research notes

References

6