Bug 1548350
| Summary: | SELinux prevents traceroute from using DCCP sockets | |||
|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Milos Malik <mmalik> | |
| Component: | selinux-policy | Assignee: | Lukas Vrabec <lvrabec> | |
| Status: | CLOSED ERRATA | QA Contact: | Milos Malik <mmalik> | |
| Severity: | medium | Docs Contact: | ||
| Priority: | medium | |||
| Version: | 7.4 | CC: | lvrabec, mgrepl, mmalik, plautrba, ssekidde | |
| Target Milestone: | rc | |||
| Target Release: | --- | |||
| Hardware: | All | |||
| OS: | Linux | |||
| Whiteboard: | ||||
| Fixed In Version: | selinux-policy-3.13.1-203.el7 | Doc Type: | If docs needed, set a value | |
| Doc Text: | Story Points: | --- | ||
| Clone Of: | ||||
| : | 1561460 (view as bug list) | Environment: | ||
| Last Closed: | 2018-10-30 10:02:53 UTC | Type: | Bug | |
| Regression: | --- | Mount Type: | --- | |
| Documentation: | --- | CRM: | ||
| Verified Versions: | Category: | --- | ||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
| Cloudforms Team: | --- | Target Upstream Version: | ||
| Embargoed: | ||||
# setenforce 0 # runcon system_u:system_r:initrc_t:s0 bash -c 'traceroute -D 127.0.0.1' traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 40 byte packets socket: Socket type not supported # The automated TC also triggers following SELinux denial in enforcing mode:
----
type=PROCTITLE msg=audit(03/03/2018 04:41:57.141:1373) : proctitle=/usr/bin/traceroute -T 172.16.36.1
type=SYSCALL msg=audit(03/03/2018 04:41:57.141:1373) : arch=x86_64 syscall=open success=no exit=EACCES(Permission denied) a0=0x7ffe565ab9b0 a1=O_RDONLY a2=0x0 a3=0x7ffe565ab420 items=0 ppid=31068 pid=31072 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts0 ses=2 comm=traceroute exe=/usr/bin/traceroute subj=system_u:system_r:traceroute_t:s0 key=(null)
type=AVC msg=audit(03/03/2018 04:41:57.141:1373) : avc: denied { search } for pid=31072 comm=traceroute name=net dev="proc" ino=8797 scontext=system_u:system_r:traceroute_t:s0 tcontext=system_u:object_r:sysctl_net_t:s0 tclass=dir permissive=0
----
Following SELinux denials appeared in permissive mode:
----
type=PROCTITLE msg=audit(03/03/2018 04:51:13.131:2431) : proctitle=/usr/bin/traceroute -T 172.16.36.1
type=SYSCALL msg=audit(03/03/2018 04:51:13.131:2431) : arch=x86_64 syscall=open success=yes exit=4 a0=0x7ffe8df96220 a1=O_RDONLY a2=0x0 a3=0x7ffe8df95ca0 items=0 ppid=6269 pid=6273 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts0 ses=2 comm=traceroute exe=/usr/bin/traceroute subj=system_u:system_r:traceroute_t:s0 key=(null)
type=AVC msg=audit(03/03/2018 04:51:13.131:2431) : avc: denied { open } for pid=6273 comm=traceroute path=/proc/sys/net/ipv4/tcp_ecn dev="proc" ino=72378 scontext=system_u:system_r:traceroute_t:s0 tcontext=system_u:object_r:sysctl_net_t:s0 tclass=file permissive=1
type=AVC msg=audit(03/03/2018 04:51:13.131:2431) : avc: denied { read } for pid=6273 comm=traceroute name=tcp_ecn dev="proc" ino=72378 scontext=system_u:system_r:traceroute_t:s0 tcontext=system_u:object_r:sysctl_net_t:s0 tclass=file permissive=1
type=AVC msg=audit(03/03/2018 04:51:13.131:2431) : avc: denied { search } for pid=6273 comm=traceroute name=net dev="proc" ino=8797 scontext=system_u:system_r:traceroute_t:s0 tcontext=system_u:object_r:sysctl_net_t:s0 tclass=dir permissive=1
----
type=PROCTITLE msg=audit(03/03/2018 04:51:28.241:2432) : proctitle=/usr/bin/traceroute -D 172.16.36.1
type=SYSCALL msg=audit(03/03/2018 04:51:28.241:2432) : arch=x86_64 syscall=socket success=no exit=ESOCKTNOSUPPORT(Socket type not supported) a0=inet a1=SOCK_DCCP a2=dccp a3=0x2 items=0 ppid=6428 pid=6432 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts0 ses=2 comm=traceroute exe=/usr/bin/traceroute subj=system_u:system_r:traceroute_t:s0 key=(null)
type=AVC msg=audit(03/03/2018 04:51:28.241:2432) : avc: denied { module_request } for pid=6432 comm=traceroute kmod="net-pf-2-proto-33-type-6" scontext=system_u:system_r:traceroute_t:s0 tcontext=system_u:system_r:kernel_t:s0 tclass=system permissive=1
type=AVC msg=audit(03/03/2018 04:51:28.241:2432) : avc: denied { create } for pid=6432 comm=traceroute scontext=system_u:system_r:traceroute_t:s0 tcontext=system_u:system_r:traceroute_t:s0 tclass=dccp_socket permissive=1
----
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2018:3111 |
Description of problem: * when an unconfined user runs traceroute, the program runs as unconfined_t, because SELinux policy does not define any transition from unconfined_t to traceroute_t * but if traceroute is executed by systemd or from an init script then transition to traceroute_t happens and the problem with DCCP becomes visible Version-Release number of selected component (if applicable): selinux-policy-3.13.1-191.el7.noarch selinux-policy-targeted-3.13.1-191.el7.noarch traceroute-2.0.22-2.el7.x86_64 How reproducible: * always Steps to Reproduce: 0) get a RHEL-7.4 machine (targeted policy is active) # traceroute -D 127.0.0.1 traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 40 byte packets socket: Socket type not supported # runcon system_u:system_r:initrc_t:s0 bash -c 'traceroute -D 127.0.0.1' traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 40 byte packets socket: Permission denied # Actual results (enforcing mode): ---- type=PROCTITLE msg=audit(02/23/2018 04:30:43.399:288) : proctitle=traceroute -D 127.0.0.1 type=SYSCALL msg=audit(02/23/2018 04:30:43.399:288) : arch=x86_64 syscall=socket success=no exit=EACCES(Permission denied) a0=inet a1=SOCK_DCCP a2=dccp a3=0x2 items=0 ppid=8055 pid=8124 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts0 ses=2 comm=traceroute exe=/usr/bin/traceroute subj=system_u:system_r:traceroute_t:s0 key=(null) type=AVC msg=audit(02/23/2018 04:30:43.399:288) : avc: denied { create } for pid=8124 comm=traceroute scontext=system_u:system_r:traceroute_t:s0 tcontext=system_u:system_r:traceroute_t:s0 tclass=dccp_socket permissive=0 ---- Expected results: * no SELinux denials