James Carlson wrote:
 > Contracts are not (as far as I know) dissolved across a setuid/
 > seteuid and related credential change.  The implication of this is
 > that your typical "do something for some user" service daemon -- one
 > designed for plain old UNIX and not Solaris contracts -- will do all
 > of the usual security checks on $HOME/blah before invoking it
 > carefully with the right credentials, but it will inevitably end up
 > handing over some dangerous keys to that subprocess, in the form of
 > that invisible contract.
 >
 > In particular, if the user arranges to have his own invoked script
 > trigger a process outside of the contract to send him a fatal signal,
 > the original daemon will be taken out as a result.  "pkill -QUIT blah"
 > ought to do the trick.

   Again, that's why sendmail ignores signals.  And why the ability to
   ignore signals and core files is provided.

 > This is at least a theoretical DoS threat.  It's also a privilege
 > escalation, in that a non-privileged user is able to perform an action
 > ("svcadm restart") for which he has no privileges.
 >
 > Avoiding that completely would require having contracts (like Least
 > Privilege behavior) become opt-in rather than opt-out.  (Yes, I know
 > that's not a good answer.)

   No, it simply requires you to write your service description
   correctly.

   Dave


Reply via email to