KernelScan.io

HIGH

ptrace DumpableCheck Bypass

CVE-2026-46333

CVSS 7.1 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N

KernelScan AI5.5MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: ptrace: slightly saner 'get_dumpable()' logic The 'dumpability' of a task is fundamentally about the memory image of the task - the concept comes from whether it can core dump or not - and makes no sense when you don't have an associated mm. And almost all users do in fact use it only for the case where the task has a mm pointer. But we have one odd special case: ptrace_may_access() uses 'dumpable' to check various other things entirely independently of the MM (typically explicitly using flags like PTRACE_MODE_READ_FSCREDS). Including for threads that no longer have a VM (and maybe never did, like most kernel threads). It's not what this flag was designed for, but it is what it is. The ptrace code does check that the uid/gid matches, so you do have to be uid-0 to see kernel thread details, but this means that the traditional "drop capabilities" model doesn't make any difference for this all. Make it all make a *bit* more sense by saying that if you don't have a MM pointer, we'll use a cached "last dumpability" flag if the thread ever had a MM (it will be zero for kernel threads since it is never set), and require a proper CAP_SYS_PTRACE capability to override.

02

Engine v0.2.0

Risk summary

Local users can bypass intended capability checks to access sensitive information from tasks without an associated memory context (e.g., kernel threads or recently exited processes). This affects systems where untrusted local users can perform ptrace or /proc operations, potentially exposing data from processes that were intended to be protected by dumpability restrictions.

Affectedkernel/ptrace.c (ptrace subsystem)

Vulnerability analysis

The ptrace_may_access() function omitted the dumpability and capability checks for tasks where task->mm is NULL, such as kernel threads and processes that have released their memory descriptor during exit. The uid/gid match check still applied, but the additional CAP_SYS_PTRACE requirement was skipped, allowing a caller with matching credentials—including a non-root user accessing their own exited setuid process, or a root process that dropped capabilities accessing kernel threads—to read protected task information. The fix caches the last dumpability state and enforces a proper ptrace_has_cap(&init_user_ns, mode) check when no mm is present.

03

BranchFixed inPatch commit
3.163.1793d4ba49d18e
4.44.515b828a46f30
4.84.94709234fd1b9
4.94.108f907d345bae
5.105.10.2566e5b51e74a40
5.155.15.2072a93a4fac7b6
6.16.1.17301363cb3fbd0
6.126.12.89
6.186.18.31
6.66.6.13931e62c2ebbfd
7.07.0.8
mainline7.1