[SRU,Xenial,Bionic,1/1] UBUNTU SAUCE: apparmor: fix apparmor mediating locking non-fs, unix sockets

Message ID ee7877c0-1762-7c1e-1fea-9a4cc16db30e@canonical.com
State New
Headers show
Series
  • [SRU,Xenial,Bionic,1/1] UBUNTU SAUCE: apparmor: fix apparmor mediating locking non-fs, unix sockets
Related show

Commit Message

John Johansen July 30, 2018, 8:55 p.m.
The apparmor policy language current does not allow expressing of the
locking permission for no-fs unix sockets. However the kernel is
enforcing mediation.

Add the AA_MAY_LOCK perm to the computed perm mask which will grant
permission for all current abi profiles, but still allow specifying
auditing of the operation if needed.

BugLink: http://bugs.launchpad.net/bugs/1780227
Signed-off-by: John Johansen <john.johansen@canonical.com>
---
 security/apparmor/lib.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Stefan Bader July 31, 2018, 6:58 a.m. | #1
On 30.07.2018 22:55, John Johansen wrote:
> The apparmor policy language current does not allow expressing of the
> locking permission for no-fs unix sockets. However the kernel is
> enforcing mediation.
> 
> Add the AA_MAY_LOCK perm to the computed perm mask which will grant
> permission for all current abi profiles, but still allow specifying
> auditing of the operation if needed.
> 
> BugLink: http://bugs.launchpad.net/bugs/1780227
> Signed-off-by: John Johansen <john.johansen@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
> ---

Please add the SRU justification to the bug report. The change itself looks
small enough but also a bit like voodoo to anybody not familiar... so any help
to reviewers and admins counts. ;)


>  security/apparmor/lib.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/security/apparmor/lib.c b/security/apparmor/lib.c
> index a7b3f681b80e..eafad30a78d7 100644
> --- a/security/apparmor/lib.c
> +++ b/security/apparmor/lib.c
> @@ -327,7 +327,7 @@ void aa_compute_perms(struct aa_dfa *dfa, unsigned int state,
>  	/* for v5 perm mapping in the policydb, the other set is used
>  	 * to extend the general perm set
>  	 */
> -	perms->allow |= map_other(dfa_other_allow(dfa, state));
> +	perms->allow |= map_other(dfa_other_allow(dfa, state)) | AA_MAY_LOCK;
>  	perms->audit |= map_other(dfa_other_audit(dfa, state));
>  	perms->quiet |= map_other(dfa_other_quiet(dfa, state));
>  //	perms->xindex = dfa_user_xindex(dfa, state);
>
Kleber Souza July 31, 2018, 1:14 p.m. | #2
On 07/30/18 22:55, John Johansen wrote:
> The apparmor policy language current does not allow expressing of the
> locking permission for no-fs unix sockets. However the kernel is
> enforcing mediation.
> 
> Add the AA_MAY_LOCK perm to the computed perm mask which will grant
> permission for all current abi profiles, but still allow specifying
> auditing of the operation if needed.
> 
> BugLink: http://bugs.launchpad.net/bugs/1780227
> Signed-off-by: John Johansen <john.johansen@canonical.com>

Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>

> ---
>  security/apparmor/lib.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/security/apparmor/lib.c b/security/apparmor/lib.c
> index a7b3f681b80e..eafad30a78d7 100644
> --- a/security/apparmor/lib.c
> +++ b/security/apparmor/lib.c
> @@ -327,7 +327,7 @@ void aa_compute_perms(struct aa_dfa *dfa, unsigned int state,
>  	/* for v5 perm mapping in the policydb, the other set is used
>  	 * to extend the general perm set
>  	 */
> -	perms->allow |= map_other(dfa_other_allow(dfa, state));
> +	perms->allow |= map_other(dfa_other_allow(dfa, state)) | AA_MAY_LOCK;
>  	perms->audit |= map_other(dfa_other_audit(dfa, state));
>  	perms->quiet |= map_other(dfa_other_quiet(dfa, state));
>  //	perms->xindex = dfa_user_xindex(dfa, state);
>
Kleber Souza July 31, 2018, 1:17 p.m. | #3
On 07/30/18 22:55, John Johansen wrote:
> The apparmor policy language current does not allow expressing of the
> locking permission for no-fs unix sockets. However the kernel is
> enforcing mediation.
> 
> Add the AA_MAY_LOCK perm to the computed perm mask which will grant
> permission for all current abi profiles, but still allow specifying
> auditing of the operation if needed.
> 
> BugLink: http://bugs.launchpad.net/bugs/1780227
> Signed-off-by: John Johansen <john.johansen@canonical.com>
> ---
>  security/apparmor/lib.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/security/apparmor/lib.c b/security/apparmor/lib.c
> index a7b3f681b80e..eafad30a78d7 100644
> --- a/security/apparmor/lib.c
> +++ b/security/apparmor/lib.c
> @@ -327,7 +327,7 @@ void aa_compute_perms(struct aa_dfa *dfa, unsigned int state,
>  	/* for v5 perm mapping in the policydb, the other set is used
>  	 * to extend the general perm set
>  	 */
> -	perms->allow |= map_other(dfa_other_allow(dfa, state));
> +	perms->allow |= map_other(dfa_other_allow(dfa, state)) | AA_MAY_LOCK;
>  	perms->audit |= map_other(dfa_other_audit(dfa, state));
>  	perms->quiet |= map_other(dfa_other_quiet(dfa, state));
>  //	perms->xindex = dfa_user_xindex(dfa, state);
> 

Applied to xenial/master-next and bionic/master-next branches.

Thanks,
Kleber
Seth Forshee Aug. 1, 2018, 1:27 p.m. | #4
On Mon, Jul 30, 2018 at 01:55:30PM -0700, John Johansen wrote:
> The apparmor policy language current does not allow expressing of the
> locking permission for no-fs unix sockets. However the kernel is
> enforcing mediation.
> 
> Add the AA_MAY_LOCK perm to the computed perm mask which will grant
> permission for all current abi profiles, but still allow specifying
> auditing of the operation if needed.
> 
> BugLink: http://bugs.launchpad.net/bugs/1780227
> Signed-off-by: John Johansen <john.johansen@canonical.com>

Applied to cosmic/master-next and unstable/master, thanks!

Patch

diff --git a/security/apparmor/lib.c b/security/apparmor/lib.c
index a7b3f681b80e..eafad30a78d7 100644
--- a/security/apparmor/lib.c
+++ b/security/apparmor/lib.c
@@ -327,7 +327,7 @@  void aa_compute_perms(struct aa_dfa *dfa, unsigned int state,
 	/* for v5 perm mapping in the policydb, the other set is used
 	 * to extend the general perm set
 	 */
-	perms->allow |= map_other(dfa_other_allow(dfa, state));
+	perms->allow |= map_other(dfa_other_allow(dfa, state)) | AA_MAY_LOCK;
 	perms->audit |= map_other(dfa_other_audit(dfa, state));
 	perms->quiet |= map_other(dfa_other_quiet(dfa, state));
 //	perms->xindex = dfa_user_xindex(dfa, state);