[OLPC Security] Bitfrost vs. Rainbow
Mark Seaborn
mrs at mythic-beasts.com
Tue Apr 1 14:50:52 EDT 2008
Michael Stone <michael at laptop.org> wrote:
> > However, a quick look at relevant Rainbow docs (specifically [2])
> > indicate that Rainbow might be implemented using only the standard Linux
> > DAC mechanisms -- essentially, very similar to the Polaris design[3].
>
> Correct to date, though we've basically reached the limits of the
> existing DAC framework. Clever (or stupid, depending on your
> perspective) hacks now seem to be required. For network isolation, I'm
> currently intending to go forward with compartmentalized "network" and
> "not-network" processes based on Dan Bernstein's sys_disablenetwork()
> idea [2].
>
> [2]: http://cr.yp.to/unix/disablenetwork.html
That is the approach I would like to take with Plash for limiting
network access. In general, I would like to be able to disable most
system calls, leaving only those that deal purely with file
descriptors (as listed on http://plash.beasts.org/wiki/PtraceJail).
One way to do that would be to use ptrace(), possibly with Jeff Dike's
PTRACE_SYSCALL_MASK patch.
> For X, I'm still at the research stage, currently investigating both
> XACE [3] and an off-the-cuff idea involving per-uid Xephyrs (or
> similar tomfoolery).
I have been investigating this area and there are some notes on the
Plash wiki:
http://plash.beasts.org/wiki/X11Security
http://plash.beasts.org/wiki/X11SecurityRequirements
I expect that Sugar's X security requirements would be easier to meet
than mine, since Sugar's GUI is much simpler, lacking a conventional
window manager with overlapping windows.
What are you considering doing with Xephyr?
I have considered adapting Xnest to support a rootless mode (similar
to Cygwin X's rootless mode) in which Xnest's top-level windows
co-exist among the parent X server's top-level windows, instead of
appearing inside a nested window. It did not appear to be practical
because Xnest re-uses all of a normal X server's keyboard and mouse
input processing, including grab processing.
I have investigated XACE and decided against using it for reasons that
are partly architectural and partly practical. The idea of filtering
X requests does not fit with Plash's aim of having a capability
architecture. Since XACE is just a set of internal server hooks, it
requires a lot to be done on the server side. I am not convinced that
my requirements for handling top-level windows and proxying access to
the X clipboard can be achieved using something like XACE without
putting a lot of complexity into the X server.
I have been experimenting with writing a security-enforcing X proxy.
I've got an incomplete prototype written in Python:
http://plash.beasts.org/wiki/X11ProxySpike
> P.S. - It sounds like our goals are closely aligned with some of the
> goals of the Plash project - also, OLPC has no desire to maintain
> bespoke security software just for kicks. Can you suggest some an
> approachable Plash developer (or mailing list?) to suggest that we
> explore ways to further our mutual aims in concert?
I'm the main Plash developer. I read this list but you're welcome to
post on Plash's mailing list
(http://lists.nongnu.org/mailman/listinfo/plash) or cross-post.
I've been on this list since Bitfrost was announced. It's good to
hear some more details about the planned implementation. I don't
think I knew before today that the implementation is called Rainbow!
Regards,
Mark
More information about the Security
mailing list