All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] selinux-notebook: describe nosuid and NNP transitions
@ 2021-06-12  8:14 Topi Miettinen
  2021-06-18  3:50 ` Paul Moore
  0 siblings, 1 reply; 7+ messages in thread
From: Topi Miettinen @ 2021-06-12  8:14 UTC (permalink / raw)
  To: selinux; +Cc: Topi Miettinen

Describe cases where nosuid_transition or nnp_transition are needed.

Signed-off-by: Topi Miettinen <toiwoton@gmail.com>
---
 src/computing_security_contexts.md | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/computing_security_contexts.md b/src/computing_security_contexts.md
index bb946b5..7bd1d87 100644
--- a/src/computing_security_contexts.md
+++ b/src/computing_security_contexts.md
@@ -84,7 +84,14 @@ Processes inherit their security context as follows:
    *default_type* (policy version 28) or if a security-aware process,
    by calling ***setexeccon**(3)* if permitted by policy prior to
    invoking exec.
-3. At any time, a security-aware process may invoke ***setcon**(3)* to
+3. If the file system is mounted with *nosuid* flag, type transitions
+   require permission *nosuid_transition*. If the thread has
+   *no_new_privs* attribute set, the transition requires
+   *nnp_transition*. For both transitions, policy capability
+   *nnp_nosuid_transition* is also required. See also
+   [**Linux Security Module and SELinux**](lsm_selinux.md#linux-security-module-and-selinux)
+   section.
+4. At any time, a security-aware process may invoke ***setcon**(3)* to
    switch its security context (if permitted by policy) although this
    practice is generally discouraged - exec-based transitions are
    preferred.
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] selinux-notebook: describe nosuid and NNP transitions
  2021-06-12  8:14 [PATCH] selinux-notebook: describe nosuid and NNP transitions Topi Miettinen
@ 2021-06-18  3:50 ` Paul Moore
  2021-06-18 18:09   ` Topi Miettinen
  0 siblings, 1 reply; 7+ messages in thread
From: Paul Moore @ 2021-06-18  3:50 UTC (permalink / raw)
  To: Topi Miettinen; +Cc: selinux

On Sat, Jun 12, 2021 at 4:14 AM Topi Miettinen <toiwoton@gmail.com> wrote:
>
> Describe cases where nosuid_transition or nnp_transition are needed.
>
> Signed-off-by: Topi Miettinen <toiwoton@gmail.com>
> ---
>  src/computing_security_contexts.md | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/src/computing_security_contexts.md b/src/computing_security_contexts.md
> index bb946b5..7bd1d87 100644
> --- a/src/computing_security_contexts.md
> +++ b/src/computing_security_contexts.md
> @@ -84,7 +84,14 @@ Processes inherit their security context as follows:
>     *default_type* (policy version 28) or if a security-aware process,
>     by calling ***setexeccon**(3)* if permitted by policy prior to
>     invoking exec.
> -3. At any time, a security-aware process may invoke ***setcon**(3)* to
> +3. If the file system is mounted with *nosuid* flag, type transitions
> +   require permission *nosuid_transition*. If the thread has
> +   *no_new_privs* attribute set, the transition requires
> +   *nnp_transition*. For both transitions, policy capability
> +   *nnp_nosuid_transition* is also required. See also
> +   [**Linux Security Module and SELinux**](lsm_selinux.md#linux-security-module-and-selinux)
> +   section.

Thanks for adding this text, however I might suggest the following changes:

"If the loaded SELinux policy has the nnp_nosuid_transition policy
capability enabled there are potentially two additional permissions
that are required to permit a domain transition: nosuid_transition for
nosuid mounted filesystems, and nnp_transition for for threads with
the no_new_privs flag."

... does that make sense?

> +4. At any time, a security-aware process may invoke ***setcon**(3)* to
>     switch its security context (if permitted by policy) although this
>     practice is generally discouraged - exec-based transitions are
>     preferred.
> --
> 2.30.2

-- 
paul moore
www.paul-moore.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] selinux-notebook: describe nosuid and NNP transitions
  2021-06-18  3:50 ` Paul Moore
@ 2021-06-18 18:09   ` Topi Miettinen
  2021-06-18 19:32     ` Paul Moore
  0 siblings, 1 reply; 7+ messages in thread
From: Topi Miettinen @ 2021-06-18 18:09 UTC (permalink / raw)
  To: Paul Moore; +Cc: selinux

On 18.6.2021 6.50, Paul Moore wrote:
> On Sat, Jun 12, 2021 at 4:14 AM Topi Miettinen <toiwoton@gmail.com> wrote:
>>
>> Describe cases where nosuid_transition or nnp_transition are needed.
>>
>> Signed-off-by: Topi Miettinen <toiwoton@gmail.com>
>> ---
>>   src/computing_security_contexts.md | 9 ++++++++-
>>   1 file changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/computing_security_contexts.md b/src/computing_security_contexts.md
>> index bb946b5..7bd1d87 100644
>> --- a/src/computing_security_contexts.md
>> +++ b/src/computing_security_contexts.md
>> @@ -84,7 +84,14 @@ Processes inherit their security context as follows:
>>      *default_type* (policy version 28) or if a security-aware process,
>>      by calling ***setexeccon**(3)* if permitted by policy prior to
>>      invoking exec.
>> -3. At any time, a security-aware process may invoke ***setcon**(3)* to
>> +3. If the file system is mounted with *nosuid* flag, type transitions
>> +   require permission *nosuid_transition*. If the thread has
>> +   *no_new_privs* attribute set, the transition requires
>> +   *nnp_transition*. For both transitions, policy capability
>> +   *nnp_nosuid_transition* is also required. See also
>> +   [**Linux Security Module and SELinux**](lsm_selinux.md#linux-security-module-and-selinux)
>> +   section.
> 
> Thanks for adding this text, however I might suggest the following changes:
> 
> "If the loaded SELinux policy has the nnp_nosuid_transition policy
> capability enabled there are potentially two additional permissions
> that are required to permit a domain transition: nosuid_transition for
> nosuid mounted filesystems, and nnp_transition for for threads with
> the no_new_privs flag."
> 
> ... does that make sense?

Yes. I'd then add:

"If nnp_nosuid_transition policy capability is disabled, such domain 
transitions are denied."

-Topi

>> +4. At any time, a security-aware process may invoke ***setcon**(3)* to
>>      switch its security context (if permitted by policy) although this
>>      practice is generally discouraged - exec-based transitions are
>>      preferred.
>> --
>> 2.30.2
> 


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] selinux-notebook: describe nosuid and NNP transitions
  2021-06-18 18:09   ` Topi Miettinen
@ 2021-06-18 19:32     ` Paul Moore
  2021-06-18 20:37       ` Topi Miettinen
  0 siblings, 1 reply; 7+ messages in thread
From: Paul Moore @ 2021-06-18 19:32 UTC (permalink / raw)
  To: Topi Miettinen; +Cc: selinux

On Fri, Jun 18, 2021 at 2:09 PM Topi Miettinen <toiwoton@gmail.com> wrote:
> On 18.6.2021 6.50, Paul Moore wrote:
> > On Sat, Jun 12, 2021 at 4:14 AM Topi Miettinen <toiwoton@gmail.com> wrote:
> >>
> >> Describe cases where nosuid_transition or nnp_transition are needed.
> >>
> >> Signed-off-by: Topi Miettinen <toiwoton@gmail.com>
> >> ---
> >>   src/computing_security_contexts.md | 9 ++++++++-
> >>   1 file changed, 8 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/src/computing_security_contexts.md b/src/computing_security_contexts.md
> >> index bb946b5..7bd1d87 100644
> >> --- a/src/computing_security_contexts.md
> >> +++ b/src/computing_security_contexts.md
> >> @@ -84,7 +84,14 @@ Processes inherit their security context as follows:
> >>      *default_type* (policy version 28) or if a security-aware process,
> >>      by calling ***setexeccon**(3)* if permitted by policy prior to
> >>      invoking exec.
> >> -3. At any time, a security-aware process may invoke ***setcon**(3)* to
> >> +3. If the file system is mounted with *nosuid* flag, type transitions
> >> +   require permission *nosuid_transition*. If the thread has
> >> +   *no_new_privs* attribute set, the transition requires
> >> +   *nnp_transition*. For both transitions, policy capability
> >> +   *nnp_nosuid_transition* is also required. See also
> >> +   [**Linux Security Module and SELinux**](lsm_selinux.md#linux-security-module-and-selinux)
> >> +   section.
> >
> > Thanks for adding this text, however I might suggest the following changes:
> >
> > "If the loaded SELinux policy has the nnp_nosuid_transition policy
> > capability enabled there are potentially two additional permissions
> > that are required to permit a domain transition: nosuid_transition for
> > nosuid mounted filesystems, and nnp_transition for for threads with
> > the no_new_privs flag."
> >
> > ... does that make sense?
>
> Yes. I'd then add:
>
> "If nnp_nosuid_transition policy capability is disabled, such domain
> transitions are denied."

In most cases, yes that is correct, but bounded domain transitions are
still allowed in the case where the nnp_nosuid_transition policy
capability is not enabled.

Did you want to respin the patch with the above changes?

-- 
paul moore
www.paul-moore.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] selinux-notebook: describe nosuid and NNP transitions
  2021-06-18 19:32     ` Paul Moore
@ 2021-06-18 20:37       ` Topi Miettinen
  2021-06-19  7:43         ` Topi Miettinen
  2021-06-21 14:09         ` Paul Moore
  0 siblings, 2 replies; 7+ messages in thread
From: Topi Miettinen @ 2021-06-18 20:37 UTC (permalink / raw)
  To: Paul Moore; +Cc: selinux

On 18.6.2021 22.32, Paul Moore wrote:
> On Fri, Jun 18, 2021 at 2:09 PM Topi Miettinen <toiwoton@gmail.com> wrote:
>> On 18.6.2021 6.50, Paul Moore wrote:
>>> On Sat, Jun 12, 2021 at 4:14 AM Topi Miettinen <toiwoton@gmail.com> wrote:
>>>>
>>>> Describe cases where nosuid_transition or nnp_transition are needed.
>>>>
>>>> Signed-off-by: Topi Miettinen <toiwoton@gmail.com>
>>>> ---
>>>>    src/computing_security_contexts.md | 9 ++++++++-
>>>>    1 file changed, 8 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/src/computing_security_contexts.md b/src/computing_security_contexts.md
>>>> index bb946b5..7bd1d87 100644
>>>> --- a/src/computing_security_contexts.md
>>>> +++ b/src/computing_security_contexts.md
>>>> @@ -84,7 +84,14 @@ Processes inherit their security context as follows:
>>>>       *default_type* (policy version 28) or if a security-aware process,
>>>>       by calling ***setexeccon**(3)* if permitted by policy prior to
>>>>       invoking exec.
>>>> -3. At any time, a security-aware process may invoke ***setcon**(3)* to
>>>> +3. If the file system is mounted with *nosuid* flag, type transitions
>>>> +   require permission *nosuid_transition*. If the thread has
>>>> +   *no_new_privs* attribute set, the transition requires
>>>> +   *nnp_transition*. For both transitions, policy capability
>>>> +   *nnp_nosuid_transition* is also required. See also
>>>> +   [**Linux Security Module and SELinux**](lsm_selinux.md#linux-security-module-and-selinux)
>>>> +   section.
>>>
>>> Thanks for adding this text, however I might suggest the following changes:
>>>
>>> "If the loaded SELinux policy has the nnp_nosuid_transition policy
>>> capability enabled there are potentially two additional permissions
>>> that are required to permit a domain transition: nosuid_transition for
>>> nosuid mounted filesystems, and nnp_transition for for threads with
>>> the no_new_privs flag."
>>>
>>> ... does that make sense?
>>
>> Yes. I'd then add:
>>
>> "If nnp_nosuid_transition policy capability is disabled, such domain
>> transitions are denied."
> 
> In most cases, yes that is correct, but bounded domain transitions are
> still allowed in the case where the nnp_nosuid_transition policy
> capability is not enabled.

I see. May I propose then:

"If nnp_nosuid_transition policy capability is disabled, such domain
transitions are denied but bounded domain transitions are still allowed. 
In bounded transitions, target domain is only allowed a subset of the 
permissions of the source domain."

-Topi

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] selinux-notebook: describe nosuid and NNP transitions
  2021-06-18 20:37       ` Topi Miettinen
@ 2021-06-19  7:43         ` Topi Miettinen
  2021-06-21 14:09         ` Paul Moore
  1 sibling, 0 replies; 7+ messages in thread
From: Topi Miettinen @ 2021-06-19  7:43 UTC (permalink / raw)
  To: Paul Moore; +Cc: selinux

On 18.6.2021 23.37, Topi Miettinen wrote:
> On 18.6.2021 22.32, Paul Moore wrote:
>> On Fri, Jun 18, 2021 at 2:09 PM Topi Miettinen <toiwoton@gmail.com> 
>> wrote:
>>> On 18.6.2021 6.50, Paul Moore wrote:
>>>> On Sat, Jun 12, 2021 at 4:14 AM Topi Miettinen <toiwoton@gmail.com> 
>>>> wrote:
>>>>>
>>>>> Describe cases where nosuid_transition or nnp_transition are needed.
>>>>>
>>>>> Signed-off-by: Topi Miettinen <toiwoton@gmail.com>
>>>>> ---
>>>>>    src/computing_security_contexts.md | 9 ++++++++-
>>>>>    1 file changed, 8 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/src/computing_security_contexts.md 
>>>>> b/src/computing_security_contexts.md
>>>>> index bb946b5..7bd1d87 100644
>>>>> --- a/src/computing_security_contexts.md
>>>>> +++ b/src/computing_security_contexts.md
>>>>> @@ -84,7 +84,14 @@ Processes inherit their security context as 
>>>>> follows:
>>>>>       *default_type* (policy version 28) or if a security-aware 
>>>>> process,
>>>>>       by calling ***setexeccon**(3)* if permitted by policy prior to
>>>>>       invoking exec.
>>>>> -3. At any time, a security-aware process may invoke 
>>>>> ***setcon**(3)* to
>>>>> +3. If the file system is mounted with *nosuid* flag, type transitions
>>>>> +   require permission *nosuid_transition*. If the thread has
>>>>> +   *no_new_privs* attribute set, the transition requires
>>>>> +   *nnp_transition*. For both transitions, policy capability
>>>>> +   *nnp_nosuid_transition* is also required. See also
>>>>> +   [**Linux Security Module and 
>>>>> SELinux**](lsm_selinux.md#linux-security-module-and-selinux)
>>>>> +   section.
>>>>
>>>> Thanks for adding this text, however I might suggest the following 
>>>> changes:
>>>>
>>>> "If the loaded SELinux policy has the nnp_nosuid_transition policy
>>>> capability enabled there are potentially two additional permissions
>>>> that are required to permit a domain transition: nosuid_transition for
>>>> nosuid mounted filesystems, and nnp_transition for for threads with
>>>> the no_new_privs flag."
>>>>
>>>> ... does that make sense?
>>>
>>> Yes. I'd then add:
>>>
>>> "If nnp_nosuid_transition policy capability is disabled, such domain
>>> transitions are denied."
>>
>> In most cases, yes that is correct, but bounded domain transitions are
>> still allowed in the case where the nnp_nosuid_transition policy
>> capability is not enabled.
> 
> I see. May I propose then:
> 
> "If nnp_nosuid_transition policy capability is disabled, such domain
> transitions are denied but bounded domain transitions are still allowed. 
> In bounded transitions, target domain is only allowed a subset of the 
> permissions of the source domain."

By the way, the background for this patch (and others for mount(2), 
mount(8) and selinux(8)) was that I recently proposed new heuristics for 
systemd where in case no_new_privileges would be implied (for example, 
due to use of seccomp), all file systems would be mounted `nosuid` since 
setuid/setgid wouldn't be allowed anyway. The heuristics patch was 
applied but later reverted because of problems it may cause for SELinux. 
I didn't know then how SELinux uses the flag to also control domain 
transitions. Also the case seems to be underdocumented, which I'm trying 
to improve with the patches.

Regarding the heuristics, perhaps instead of tying MAC behavior (also FS 
capabilities) to a DAC concept of setuid/setgid with MS_NOSUID, there 
should be new mount flags which would allow more precise handling of all 
combinations of SUID, SELinux domain transitions and FS capabilities. 
For example 
"nosuid,security=selinux=domain_transitions_allowed:capability=fs_caps_allowed". 
Then systemd could safely mount all file systems "nosuid" (when NNP is 
already going to be enforced) while keeping behavior of SELinux domain 
transitions and FS capabilities unchanged.

-Topi

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] selinux-notebook: describe nosuid and NNP transitions
  2021-06-18 20:37       ` Topi Miettinen
  2021-06-19  7:43         ` Topi Miettinen
@ 2021-06-21 14:09         ` Paul Moore
  1 sibling, 0 replies; 7+ messages in thread
From: Paul Moore @ 2021-06-21 14:09 UTC (permalink / raw)
  To: Topi Miettinen; +Cc: selinux

On Fri, Jun 18, 2021 at 4:37 PM Topi Miettinen <toiwoton@gmail.com> wrote:
> On 18.6.2021 22.32, Paul Moore wrote:
> > On Fri, Jun 18, 2021 at 2:09 PM Topi Miettinen <toiwoton@gmail.com> wrote:
> >> On 18.6.2021 6.50, Paul Moore wrote:
> >>> On Sat, Jun 12, 2021 at 4:14 AM Topi Miettinen <toiwoton@gmail.com> wrote:
> >>>>
> >>>> Describe cases where nosuid_transition or nnp_transition are needed.
> >>>>
> >>>> Signed-off-by: Topi Miettinen <toiwoton@gmail.com>
> >>>> ---
> >>>>    src/computing_security_contexts.md | 9 ++++++++-
> >>>>    1 file changed, 8 insertions(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/src/computing_security_contexts.md b/src/computing_security_contexts.md
> >>>> index bb946b5..7bd1d87 100644
> >>>> --- a/src/computing_security_contexts.md
> >>>> +++ b/src/computing_security_contexts.md
> >>>> @@ -84,7 +84,14 @@ Processes inherit their security context as follows:
> >>>>       *default_type* (policy version 28) or if a security-aware process,
> >>>>       by calling ***setexeccon**(3)* if permitted by policy prior to
> >>>>       invoking exec.
> >>>> -3. At any time, a security-aware process may invoke ***setcon**(3)* to
> >>>> +3. If the file system is mounted with *nosuid* flag, type transitions
> >>>> +   require permission *nosuid_transition*. If the thread has
> >>>> +   *no_new_privs* attribute set, the transition requires
> >>>> +   *nnp_transition*. For both transitions, policy capability
> >>>> +   *nnp_nosuid_transition* is also required. See also
> >>>> +   [**Linux Security Module and SELinux**](lsm_selinux.md#linux-security-module-and-selinux)
> >>>> +   section.
> >>>
> >>> Thanks for adding this text, however I might suggest the following changes:
> >>>
> >>> "If the loaded SELinux policy has the nnp_nosuid_transition policy
> >>> capability enabled there are potentially two additional permissions
> >>> that are required to permit a domain transition: nosuid_transition for
> >>> nosuid mounted filesystems, and nnp_transition for for threads with
> >>> the no_new_privs flag."
> >>>
> >>> ... does that make sense?
> >>
> >> Yes. I'd then add:
> >>
> >> "If nnp_nosuid_transition policy capability is disabled, such domain
> >> transitions are denied."
> >
> > In most cases, yes that is correct, but bounded domain transitions are
> > still allowed in the case where the nnp_nosuid_transition policy
> > capability is not enabled.
>
> I see. May I propose then:
>
> "If nnp_nosuid_transition policy capability is disabled, such domain
> transitions are denied but bounded domain transitions are still allowed.
> In bounded transitions, target domain is only allowed a subset of the
> permissions of the source domain."

That sounds good to me.

-- 
paul moore
www.paul-moore.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-06-21 14:09 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-12  8:14 [PATCH] selinux-notebook: describe nosuid and NNP transitions Topi Miettinen
2021-06-18  3:50 ` Paul Moore
2021-06-18 18:09   ` Topi Miettinen
2021-06-18 19:32     ` Paul Moore
2021-06-18 20:37       ` Topi Miettinen
2021-06-19  7:43         ` Topi Miettinen
2021-06-21 14:09         ` Paul Moore

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.