diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2026-05-13 11:37:18 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2026-05-15 14:52:17 +0200 |
| commit | 2a93a4fac7b6051d3be7cd1b015fe7320cd0404d (patch) | |
| tree | fd10af60aa51ec1b19e2ab9095bb9e2f9d4e3997 /include/linux/atmdev.h | |
| parent | 52dc660c85dbab60c07c8f1a716d68a4b7d4fc7e (diff) | |
| download | linux-2a93a4fac7b6051d3be7cd1b015fe7320cd0404d.tar.gz linux-2a93a4fac7b6051d3be7cd1b015fe7320cd0404d.tar.bz2 linux-2a93a4fac7b6051d3be7cd1b015fe7320cd0404d.zip | |
ptrace: slightly saner 'get_dumpable()' logic
commit 31e62c2ebbfdc3fe3dbdf5e02c92a9dc67087a3a upstream.
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.
Reported-by: Qualys Security Advisory <qsa@qualys.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Kees Cook <kees@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux/atmdev.h')
0 files changed, 0 insertions, 0 deletions
