public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* request_module vs. modprobe blacklist (and security subsystem implications)
@ 2009-10-21 15:02 Eric Paris
  2009-10-21 19:11 ` Alan Jenkins
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Eric Paris @ 2009-10-21 15:02 UTC (permalink / raw)
  To: linux-kernel; +Cc: arjan, randy.dunlap, rusty, andi, dhowells, akpm

I recently added a new LSM hook into __request_module(),
security_kernel_module_request().  This new hook checks if a process
should have permission to trigger the loading of a kernel module.  The
attack vector imagined was that some module (IPX for example) has a
vulnerability.  An attack program (which doesn't have permission to load
the IPX module directly) might be able to get the networking stack to
try to autoload the module.  Once loaded the attack program could then
use the larger surface area to exploit the kernel.

We have found that many users disable the IPv6 module by setting their
modprobe config to look like:

blacklist ipv6
install ipv6 /bin/true

The problem is that a number of programs (sendmail, procmail, sshd, and
more) have all been seen to do operations which tried to load the ipv6
module.  These get into request_module(), hit the security hook, and are
obviously denied since the security system doesn't see a need for those
programs to be able to request a module be loaded.

What I really want is a way for the kernel to know that a module has
been disabled and to not even call the security hook.  My thought would
be something like adding the ability to do

echo "ipv6 -l" > /proc/sys/kernel/modules_disabled

which would add "ipv6" to a list of strings.  This list of strings could
be checked in request_module() and if the module was explicitly denied
autoloading ability we wouldn't make the call out to userspace (or the
security hook)

echo "ipv6 +l" > /proc/sys/kernel/modules_disabled

would reenable the ability of a module to be autoloaded.

cat /proc/sys/kernel/modules_disabled

would be a multiline output, first line would be the 0/1 state we know
today, rest of the lines would be the list of modules being denied
autoload.

What do others think?  What's a better way to stop calling out to
userspace looking for the ipv6 module when userspace knows it's
disabled?

-Eric


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2009-10-23 14:59 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-21 15:02 request_module vs. modprobe blacklist (and security subsystem implications) Eric Paris
2009-10-21 19:11 ` Alan Jenkins
2009-10-21 19:27   ` Eric Paris
2009-10-21 21:00     ` Alan Jenkins
2009-10-22  5:56     ` Rusty Russell
2009-10-22 14:30       ` Eric Paris
2009-10-23  9:16         ` Rusty Russell
2009-10-23 14:23           ` Eric Paris
2009-10-23 14:59             ` Rusty Russell
2009-10-22  0:48 ` Andi Kleen
2009-10-22  1:12 ` Eric W. Biederman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox