2007-11-26 23:48:28

by Eric Paris

[permalink] [raw]
Subject: [PATCH 3/3-v2] security: allow capable check to permit mmap or low vm space

On a kernel with CONFIG_SECURITY but without an LSM which implements
security_file_mmap it is impossible for an application to mmap addresses
lower than mmap_min_addr. Based on a suggestion from a developer in the
openwall community this patch adds a check for CAP_SYS_RAWIO. It is
assumed that any process with this capability can harm the system a lot
more easily than writing some stuff on the zero page and then trying to
get the kernel to trip over itself. It also means that programs like X
on i686 which use vm86 emulation can work even with mmap_min_addr set.

Signed-off-by: Eric Paris <[email protected]>

---

security/dummy.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/security/dummy.c b/security/dummy.c
index 6d895ad..3ccfbbe 100644
--- a/security/dummy.c
+++ b/security/dummy.c
@@ -426,7 +426,7 @@ static int dummy_file_mmap (struct file *file, unsigned long reqprot,
unsigned long addr,
unsigned long addr_only)
{
- if (addr < mmap_min_addr)
+ if ((addr < mmap_min_addr) && !capable(CAP_SYS_RAWIO))
return -EACCES;
return 0;
}



2007-11-27 00:39:21

by James Morris

[permalink] [raw]
Subject: Re: [PATCH 3/3-v2] security: allow capable check to permit mmap or low vm space

On Mon, 26 Nov 2007, Eric Paris wrote:

> On a kernel with CONFIG_SECURITY but without an LSM which implements
> security_file_mmap it is impossible for an application to mmap addresses
> lower than mmap_min_addr. Based on a suggestion from a developer in the
> openwall community this patch adds a check for CAP_SYS_RAWIO. It is
> assumed that any process with this capability can harm the system a lot
> more easily than writing some stuff on the zero page and then trying to
> get the kernel to trip over itself. It also means that programs like X
> on i686 which use vm86 emulation can work even with mmap_min_addr set.
>
> Signed-off-by: Eric Paris <[email protected]>

Applied to
git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/selinux-2.6.git#for-akpm

If nobody hollers, I'll push it to Linus when the next merge window opens.


- James
--
James Morris
<[email protected]>