]> www.infradead.org Git - users/jedix/linux-maple.git/commit
Sanitize 'move_pages()' permission checks
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 20 Aug 2017 20:26:27 +0000 (13:26 -0700)
committerTim Tianyang Chen <tianyang.chen@oracle.com>
Tue, 16 Jan 2018 21:40:50 +0000 (13:40 -0800)
commitcc3a671577c8821d955ff576e1a7a1c78a40e0a2
tree003ed354c677938c8982e9f87a945976a1d8b827
parentb1c81a95a19653be2776af1a839f463b28a8ae1f
Sanitize 'move_pages()' permission checks

The 'move_paghes()' system call was introduced long long ago with the
same permission checks as for sending a signal (except using
CAP_SYS_NICE instead of CAP_SYS_KILL for the overriding capability).

That turns out to not be a great choice - while the system call really
only moves physical page allocations around (and you need other
capabilities to do a lot of it), you can check the return value to map
out some the virtual address choices and defeat ASLR of a binary that
still shares your uid.

So change the access checks to the more common 'ptrace_may_access()'
model instead.

This tightens the access checks for the uid, and also effectively
changes the CAP_SYS_NICE check to CAP_SYS_PTRACE, but it's unlikely that
anybody really _uses_ this legacy system call any more (we hav ebetter
NUMA placement models these days), so I expect nobody to notice.

Famous last words.

Reported-by: Otto Ebeling <otto.ebeling@iki.fi>
Acked-by: Eric W. Biederman <ebiederm@xmission.com>
Cc: Willy Tarreau <w@1wt.eu>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
(cherry picked from commit 197e7e521384a23b9e585178f3f11c9fa08274b9)

Orabug: 27364683
CVE: CVE-2017-14140

Signed-off-by: Tim Tianyang Chen <tianyang.chen@oracle.com>
Reviewed-by: Jack Vogel <jack.vogel@oracle.com>
 Conflicts:
mm/migrate.c
mm/migrate.c