2
0
mirror of https://gitlab.com/apparmor/apparmor synced 2025-08-31 22:35:35 +00:00

parser: Allow AF_UNSPEC family in network rules

https://launchpad.net/bugs/1546455

Don't filter out AF_UNSPEC from the list of valid protocol families so
that the parser will accept rules such as 'network unspec,'.

There are certain syscalls, such as socket(2), where the LSM hooks are
called before the protocol family is validated. In these cases, AppArmor
was emitting denials even though socket(2) will eventually fail. There
may be cases where AF_UNSPEC sockets are accepted and we need to make
sure that we're mediating those appropriately.

Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
Suggested-by: Steve Beattie <steve@nxnw.org>
Acked-by: John Johansen <john.johansen@canonical.com>
This commit is contained in:
Tyler Hicks
2016-02-18 12:33:20 -06:00
parent 580d49cbf0
commit ae9d172f7e
4 changed files with 15 additions and 1 deletions

View File

@@ -198,7 +198,7 @@ list_capabilities: /usr/include/linux/capability.h
# to mediate. We use PF_ here since that is what is required in
# bits/socket.h, but we will rewrite these as AF_.
FILTER_FAMILIES=PF_UNSPEC PF_UNIX
FILTER_FAMILIES=PF_UNIX
__FILTER=$(shell echo $(strip $(FILTER_FAMILIES)) | sed -e 's/ /\\\|/g')

View File

@@ -3,6 +3,7 @@
#=EXRESULT PASS
#
/usr/bin/foo {
network unspec,
network inet,
network ax25,
network ipx,

View File

@@ -0,0 +1,9 @@
#
#=DESCRIPTION basic unspec network tests
#=EXRESULT PASS
#
/usr/bin/foo {
network unspec stream,
network unspec dgram,
network unspec raw,
}

View File

@@ -52,6 +52,10 @@ runchecktest "TCP (accept, connect) low numbered port/bind cap" pass 23
genprofile network:inet
runchecktest "TCP (accept, connect) low numbered port/no bind cap" fail 23
# FAIL TEST - make sure that unspec doesn't match
genprofile network:unspec
runchecktest "TCP (accept, connect) wrong socket family" fail 23
exit 0
# PASS TEST - accept via interface