From: Kees Cook Date: Sun, 8 Nov 2009 17:37:00 +0000 (-0800) Subject: sysctl: require CAP_SYS_RAWIO to set mmap_min_addr X-Git-Tag: v2.6.33-rc1~411^2~10 X-Git-Url: http://bbs.cooldavid.org/git/?a=commitdiff_plain;h=0e1a6ef2dea88101b056b6d9984f3325c5efced3;p=net-next-2.6.git sysctl: require CAP_SYS_RAWIO to set mmap_min_addr Currently the mmap_min_addr value can only be bypassed during mmap when the task has CAP_SYS_RAWIO. However, the mmap_min_addr sysctl value itself can be adjusted to 0 if euid == 0, allowing a bypass without CAP_SYS_RAWIO. This patch adds a check for the capability before allowing mmap_min_addr to be changed. Signed-off-by: Kees Cook Acked-by: Serge Hallyn Signed-off-by: James Morris --- diff --git a/security/min_addr.c b/security/min_addr.c index c844eed7915..fc43c9d3708 100644 --- a/security/min_addr.c +++ b/security/min_addr.c @@ -33,6 +33,9 @@ int mmap_min_addr_handler(struct ctl_table *table, int write, { int ret; + if (!capable(CAP_SYS_RAWIO)) + return -EPERM; + ret = proc_doulongvec_minmax(table, write, buffer, lenp, ppos); update_mmap_min_addr();