|
|
Message-ID: <20120109224014.GK8030@nef.pbox.org>
Date: Mon, 9 Jan 2012 23:40:14 +0100
From: Alistair Crooks <agc@...src.org>
To: oss-security@...ts.openwall.com
Subject: Re: Malicious devices & vulnerabilties
On Mon, Jan 09, 2012 at 02:57:37PM +0100, Ludwig Nussel wrote:
> Nice. Using fuse for mounting hot plugged devices where performance
> isn't a priority anyways is what I dream about sometimes too :-)
> I wonder how hard it would be to create some glue code and re-use the
> existing kernel fs drivers 1:1.
I should have quoted further - this is from rump(3) on NetBSD:
rump is part of the realization of a flexible anykernel architecture for
NetBSD. An anykernel architecture enables using kernel code in a number
of different kernel models. These models include, but are not limited
to, the original monolithic kernel, a microkernel server, or an exokernel
style application library. rump itself makes it possible to run unmodi-
fied kernel components in a regular userspace process. Most of the time
"unmodified" means unmodified source code, but some architectures can
also execute unmodified kernel module binaries in userspace. Examples of
different use models are running file system drivers as userspace servers
(see p2k(3)) and being able to write standalone applications which under-
stand file system images.
Regardless of the kernel model used, a rump kernel is a fullfledged ker-
nel with its own virtual namespaces, including a file system hierarchy,
CPUs, TCP/UDP ports, device driver attachments and file descriptors.
This means that any modification to the system state on the host running
the rump kernel will not show up in the rump kernel and vice versa. A
rump kernel may also be significantly more lightweight than the host, and
might not include for example file system support at all.
FUSE has some limitations when it comes to devices - the NetBSD
version of FUSE is layered on top of the rump puffs, for example, and
there is a separate pud(4) "pass to userspace device" subsystem which
deals specifically with devices.
There's an interesting article on using multiple IP stacks with rump:
http://mail-index.netbsd.org/current-users/2011/01/18/msg015464.html
I've been working on a system call "hijacking" library on and
off for the past 1.5 weeks. Support is at a stage where
TCP/IP works and I do my normal web surfing through a rump
tcp/ip server (plus I run a third tcp/ip stack for testing).
In contrast to heavyweight virtualization (usermode OS etc.),
the only setup required is configuring the TCP/IP stack, no
rootfs & full installation & long waits are necessary. Server
"reboot" takes about 0.01s, so there's hardly a loss of
service for some applications with good restart capability
such as web browsing (especially since the browser itself does
not die).
Oh, and this is completely separate from Xen and usermode virtualisation,
but we're getting off topic here...
Regards,
Alistair
Powered by blists - more mailing lists
Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.