Re: [PATCH v2 1/1] mm/madvise: replace ptrace attach requirement for process_madvise
From: Suren Baghdasaryan <surenb@google.com>
Date: 2021-01-12 17:37:49
Also in:
linux-mm, lkml, selinux
On Mon, Jan 11, 2021 at 5:22 PM Andrew Morton [off-list ref] wrote:
On Mon, 11 Jan 2021 09:06:22 -0800 Suren Baghdasaryan [off-list ref] wrote:quoted
process_madvise currently requires ptrace attach capability. PTRACE_MODE_ATTACH gives one process complete control over another process. It effectively removes the security boundary between the two processes (in one direction). Granting ptrace attach capability even to a system process is considered dangerous since it creates an attack surface. This severely limits the usage of this API. The operations process_madvise can perform do not affect the correctness of the operation of the target process; they only affect where the data is physically located (and therefore, how fast it can be accessed). What we want is the ability for one process to influence another process in order to optimize performance across the entire system while leaving the security boundary intact. Replace PTRACE_MODE_ATTACH with a combination of PTRACE_MODE_READ and CAP_SYS_NICE. PTRACE_MODE_READ to prevent leaking ASLR metadata and CAP_SYS_NICE for influencing process performance.It would be useful to see the proposed manpage update. process_madvise() was released in 5.10, so this is a non-backward-compatible change to a released kernel. I think it would be OK at this stage to feed this into 5.10.x with a cc:stable and suitable words in the changelog explaining why we're doing this.
Sure, I will post another patchset that will include manpage update and will CC:stable. That's of course after Michal's concerns are addressed. Thanks!
Alternatively we could retain PTRACE_MODE_ATTACH's behaviour and add PTRACE_MODE_READ&CAP_SYS_NICE alongside that.