I've been sending out these reports about pledge status every few
weeks; it is kind of fun so I will continue.

Early on, I modified ps(1) so that it can show whether a process is
pledged in some fashion.  This shows up as a little 'p' in the STAT
field.  (It tends to be the last character of the field, so let's use
that below).

'p' does not tell you how strict the requests are, but it indicates
some developer(s) put effort into restricting what the process will
do.  Let's look at that (play along at home)

     % ps aguxww | grep 'p  *'
     [list of processes which are pledged]

     % ps aguxww | grep -v 'p  *'
     [list of processes which are not pledged, much shorter]

Some curious things show up, depending on what you are running on
your system.

If you are running X, you may also have xconsole.  For both X and
xconsole you will see one process is pledged, the other is not.  This
is priviledge seperation showing itself a bit more obviously.  So far,
we've been able to pledge one half of the process grouping, but not
the other half.  Give us time, maybe we can build requests for the
other halves.

If you are running smtpd, you will probably be happy with the result.
gilles and eric designed (the monster) as many processes, then glued
them together into fewer.  As a result, the  

pflogd shows the same behaviour; one side is pledged, the other is
not.  tcpdump does the same.  Trust me, the gory scary bits are
pledged.  The master processes are lying around to do an ioctl. 

You'll soon see that sshd and ssh are not yet pledged (well, the sshd
pre-auth is..).  There is some work starting on those, somewhat
slowly.  The moniker "swiss army knife" shows itself here, because
these are very complicated programs that can at quite arbitrary times
use a wide variety of system capabilities.

In my view, the most important programs not yet pledged are:

   sshd ssh sftp sftp-server
   dhclient
   mountd
   lpd lpr lpq lprm (yes, legacy software, but still)
   xconsole (the other half)
   xdm
   sndiod (work in progress, stay tuned for a great commit!)
   spamd (the entire toolset)
   ifstated
   ospfd ospf6d
   Some other minor routing daemons

Also a few other pieces of software are incompletely pledged, and need
some refactoring them when the right people find time.  Particularily:

    relayd
    snmpd

That is simply because these are complicated pieces of software.  It
is the same story as ssh and sshd.  pledge is a high-level syscall
blocker, but in syscall intensive programs the principles can become
difficult (or impossible) to apply, and other methods attempt to make
that software fail when it misbehaves. 

If you are running ports.. well.. that can't happen yet.

Reply via email to