On Tue, Sep 6, 2016 at 12:48 PM, Linus Torvalds <torva...@linux-foundation.org> wrote: > On Tue, Sep 6, 2016 at 12:41 PM, Andi Kleen <a...@firstfloor.org> wrote: >> >> I suspect it's more than just /proc/kcore, there could be also >> legitimate cases to read kernel text from /dev/mem or /dev/kmem > > Yes, that's probably true. Although I suspect that we should just say > that user-copy hardening is incompatible with /dev/kmem and > !STRICT_DEVMEM. > > At least Fedora seems to have > > CONFIG_DEVMEM=y > # CONFIG_DEVKMEM is not set > CONFIG_STRICT_DEVMEM=y > > which should mean that you already should not be able to access normal > RAM using /dev/[k]mem - ie it's purely for legacy X server kind of > situations. > > So we could just make HARDENED_USERCOPY force those settings. It's > not like you should ever have anything else in any situation where you > care about security *anyway*, so...
!DEVKMEM is easy to represent, but STRICT_DEVMEM=y gets a little ugly, since the logic desired is actually "STRICT_DEVMEM=y if STRICT_DEVMEM available" and STRICT_DEVMEM looks like this: config STRICT_DEVMEM bool "Filter access to /dev/mem" depends on MMU depends on ARCH_HAS_DEVMEM_IS_ALLOWED But I don't want to limit hardened usercopy to MMU only, so... depends on !DEVKMEM depends on STRICT_DEVMEM=y || !ARCH_HAS_DEVMEM_IS_ALLOWED || !MMU This looks a bit ugly to me, but I'm happy to add it if people think it's worth it. -Kees -- Kees Cook Nexus Security