Subject: Re: representation of persistent device status, was Re: devfs, was Re: ptyfs...
To: None <tech-kern@netbsd.org>
From: Thor Lancelot Simon <tls@rek.tjls.com>
List: tech-kern
Date: 11/30/2004 09:17:00
On Tue, Nov 30, 2004 at 09:50:00AM +0100, Ignatios Souvatzis wrote:
>
> How is a non-writable,non-remountable static /dev different from
> a non-writable, system immutable devfs configuration file?
I can think of a number of ways. Here are some examples:
1) A whole lot of new and potentially buggy (certainly, highly complex)
code is in the trusted path. I don't like that and I doubt Jonathan
does, either.
2) Typically, my hardened systems run with all writable filesystems mounted
nodev. Let me just venture to guess that if I weren't pointing it out
right now, nobody would bother to think that devfs must refuse to mount
if its configuration file were on a nodev filesystem.
3) Enforcing the restriction necessary due to #2 means that the file
parser *must* be in the kernel (think about it: you *cannot* allow
a userland program to feed you a devfs config structure from RAM,
or there is no point to ever trying to mount anything nodev; the
kernel *must* read the config file itself so it can know where it
is stored and check for nodev). That means quite a bit of complicated
code in the kernel (including a parser, and code to read files from
the filesystem, which AFAIK only LFS does right now, and that only
for the ifile) and all of this code seems likely prone to bugs which
could have significant security implications. That's particularly
scary to me.
Thor