Serge,

Are you considering to submit something on this :-)

Regards--
Subrata

On Tue, 2008-11-11 at 16:00 -0600, Serge E. Hallyn wrote:
> Some time ago, someone (probably Subrata :) asked whether there
> were any testcases for the securebits functionality.
> 
> Nope, I haven't yet had time to write them :)  What I did do in
> the last few minutes was write up what I think should be tested.
> There is some chance I'll have time to write these in December,
> but I'm hoping someone will find themselves bored and looking for
> something to do.  Well look no further!
> 
> Note: this doesn't test every possible combination (i.e. every
> combination of old_resuid and new_resuid.  It's intended mainly
> to make sure there are no major unintended regressions when
> subtle code changes are applied.  (Which they are)
> 
> Note2: wherever i say SECURE_NOSETUID, I really mean
> SECURE_NOSETUID_FIXUP.  I'd change it, but it's really too long
> to fit in these columns that way anyway.
> 
> Keepcaps feature:
>       Description: keepcaps means that a task can keep
>       its capabilities despite doing a setuid to non-root
>       userid  It can be set using either the older
>       prctl(PR_SET_KEEPCAPS), or the newer
>       prctl(PR_SET_SECUREBITS, 1 << SECURE_KEEP_CAPS).
>       
>       The bit can be 'locked' on using
>       prctl(PR_SET_SECUREBITS, 1 << SECURE_KEEP_CAPS_LOCKED).
> 
> Keepcaps tests:
>       1. drop capabilities at setuid if KEEPCAPS is not set and
>          new user is nonroot
>       2. keep capabilities if set and new user is nonroot
>       3. SECURE_KEEP_CAPS_LOCKED (which is set using
>          prctl(PR_SET_SECUREBITS, SECURE_KEEP_CAPS_LOCKED)
>          does the right thing.
>       4. re-test with prctl(PR_SET_SECUREBITS, SECURE_KEEP_CAPS)
> 
> Securebits feature:
>       Description: If you look at the POSIX capability equations,
>       you see that on a system with no file capabilities - which
>       Linux was for a long time - a root user cannot get privilege.
>       Executing any file will clear out his capability sets.  The
>       securebits offer a way around this.  When SECURE_NOROOT is
>       unset, then capability sets are filled and clear at execve
>       based on the task and file effective userids.  When
>       SECURE_NOSETUID is unset, then the capability sets are
>       filled and cleared at the setuid system call.  When the
>       SECURE_NOSETUID_LOCKED and/or SECURE_NOROOT_LOCKED bits
>       are set, then the cooresponding bits can no longer be
>       unset.
> 
> Securebits tests:
>       [bit setting behavior]
>       1. can't set SECURE_NOROOT or SECURE_NOSETUID if not
>          capable(CAP_SETPCAP)
>       2. SECURE_NOROOT and SECURE_NOSETUID (in all combinations)
>          are inherited at fork.
>       3. can't unset SECURE_NOROOT if SECURE_NOROOT_LOCKED is set
>       4. can't unset SECURE_NOSETUID if SECURE_NOSETUID_LOCKED is set
>       5. can unset SECURE_NOROOT or SECURE_NOSETUID if _LOCKED is not set
> 
>       (in all of the following, no file capabilities should be on
>        the executable files, and I ignore pI as it is not affected)
> 
>       [secure_noroot behavior]
>       1. nonroot executes setuid-root file:
>          a. if SECURE_NOROOT is set, resulting task has no capabilities
>          b. if SECURE_NOROOT is unset, resulting task has pP' and pE' filled.
>       2. root executes setuid-nonroot file:
>          a. if SECURE_NOROOT is set, resulting task gets empty pP' and pE'
>          b. if SECURE_NOROOT is unset, resulting task has pP' filled, pE' 
> empty
>       3. root executes root-owned file:
>          a. if SECURE_NOROOT is set, resulting task gets empty pP' and pE'
>          b. if SECURE_NOROOT is unset, resulting task has pP' and pE' filled.
> 
>       [secure_nosetuid behavior]
>          [[note, i am not listing tests for setfsuid "yet"]]
>       1. root user calls setuid(500).
>          a. if SECURE_NOSETUID is set, resulting task keeps its pP and pE
>          b. if SECURE_NOSETUID is unset, resulting task has pP and pE cleared
>       2. root user calls setresuid(-1,500,-1)
>          a. if SECURE_NOSETUID is set, pE is not cleared
>          b. if SECURE_NOSETUID is unset, pE is cleared
>       3. (continuing from 2) now the same task calls setresuid(-1,0,-1)
>          a. if SECURE_NOSETUID is set, pE is not changed
>          b. if SECURE_NOSETUID is unset, pE is filled with pP.
> 
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> Ltp-list mailing list
> Ltp-list@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ltp-list


------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to