Bug 2208143 - SELinux is preventing request-key from execute access on the file /usr/libexec/kafs-dns
Summary: SELinux is preventing request-key from execute access on the file /usr/libexe...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: selinux-policy
Version: 38
Hardware: x86_64
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Zdenek Pytela
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-05-18 04:33 UTC by Ian Wienand
Modified: 2023-09-11 23:07 UTC (History)
13 users (show)

Fixed In Version: selinux-policy-38.20-1.fc38
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2023-07-01 01:45:49 UTC
Type: ---
Embargoed:
iwienand: needinfo-


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github fedora-selinux selinux-policy pull 1750 0 None Draft Add support for kafs-dns requested by keyutils 2023-06-19 14:47:25 UTC

Description Ian Wienand 2023-05-18 04:33:13 UTC
This happens with all cells after installing kafs-client and then starting afs.mount

I can see the cell in "ls /afs" (along with others)

$ ls -ld /afs/openstack.org
dr-xr-xr-x. 2 root root 0 May 18 14:29 /afs/openstack.org

But any access just says 

$ ls /afs/openstack.org
ls: cannot open directory '/afs/openstack.org': Destination address required
$ ls /afs/grand.central.org
ls: cannot open directory '/afs/grand.central.org': Destination address required

kafs-check-config seems to have found all the SRV records correctly

$ kafs-check-config openstack.org

=== Found cell openstack.org ===
  - show-cell=no
  - status: good, from SRV
  - VLSERVER afsdb02.openstack.org [good; nss]
    - udp
    - port 7003, pref 10, weight 10
    - address 23.253.200.228
  - VLSERVER afsdb01.openstack.org [good; nss]
    - udp
    - port 7003, pref 10, weight 10
    - address 104.130.136.20
  - VLSERVER afsdb03.openstack.org [good; nss]
    - udp
    - port 7003, pref 10, weight 10
    - address 104.130.158.72



Reproducible: Always

Steps to Reproduce:
1. install kafs-client
2. start afs.mount
3. ls /afs/<something>

Comment 1 Jeffrey Altman 2023-06-09 00:08:33 UTC
This is likely a problem caused by a selinux policy added in fc38 to protect request-key.

kafs-client installs /etc/request-key.d/kafs_dns.conf

  $ cat /etc/request-key.d/kafs_dns.conf
  create  dns_resolver afsdb:*    *               /usr/libexec/kafs-dns %k

and the request to resolve the cell location fails when selinux in enforcing mode.

Comment 2 Ian Wienand 2023-06-09 00:25:40 UTC
Yep, that's right now I look

---
# sealert -l 95160b35-fc8c-40f8-82a1-7411522e98ee
SELinux is preventing request-key from execute access on the file /usr/libexec/kafs-dns.

*****  Plugin catchall (100. confidence) suggests   **************************

If you believe that request-key should be allowed execute access on the kafs-dns file by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# ausearch -c 'request-key' --raw | audit2allow -M my-requestkey
# semodule -X 300 -i my-requestkey.pp


Additional Information:
Source Context                system_u:system_r:keyutils_request_t:s0
Target Context                system_u:object_r:bin_t:s0
Target Objects                /usr/libexec/kafs-dns [ file ]
Source                        request-key
Source Path                   request-key
Port                          <Unknown>
Host                          fedora19
Source RPM Packages           
Target RPM Packages           kafs-client-0.4-8.fc38.x86_64
SELinux Policy RPM            selinux-policy-targeted-38.15-1.fc38.noarch
Local Policy RPM              selinux-policy-targeted-38.15-1.fc38.noarch
Selinux Enabled               True
Policy Type                   targeted
Enforcing Mode                Permissive
Host Name                     fedora19
Platform                      Linux fedora19 6.3.4-201.fc38.x86_64 #1 SMP
                              PREEMPT_DYNAMIC Sat May 27 15:08:36 UTC 2023
                              x86_64
Alert Count                   24
First Seen                    2023-05-18 13:30:19 AEST
Last Seen                     2023-06-09 10:04:20 AEST
Local ID                      95160b35-fc8c-40f8-82a1-7411522e98ee

Raw Audit Messages
type=AVC msg=audit(1686269060.1:6101): avc:  denied  { execute } for  pid=917200 comm="request-key" name="kafs-dns" dev="dm-1" ino=786742 scontext=system_u:system_r:keyutils_request_t:s0 tcontext=system_u:object_r:bin_t:s0 tclass=file permissive=1


Hash: request-key,keyutils_request_t,bin_t,file,execute
---

Flipping to "setenforce 0" and I can open the directory just fine

Comment 3 Jeffrey Altman 2023-06-09 00:37:11 UTC
I guess the question is whether kafs-dns should be in the base policy or be added by the kafs-client package.

Comment 4 Tony Breeds 2023-06-09 21:54:39 UTC
I created a local TE file.  I'm not sure it's exactly right but @Ian's initial repo works as expected with it loaded

[tony@thor ~]$ sudo cat /etc/selinux/local/kafs.request-key.te

module kafs.request-key 3.0;

require {
	type kernel_t;
	type bin_t;
	type keyutils_request_t;
	type net_conf_t;
	class file { execute execute_no_trans map read };
	class lnk_file read;
	class udp_socket create;
	class key setattr;
}

#============= keyutils_request_t ==============
allow keyutils_request_t bin_t:file { execute execute_no_trans };
allow keyutils_request_t bin_t:file map;
allow keyutils_request_t kernel_t:key setattr;
allow keyutils_request_t net_conf_t:file read;
allow keyutils_request_t net_conf_t:lnk_file read;
allow keyutils_request_t self:udp_socket create;

Comment 5 Zdenek Pytela 2023-06-20 22:26:29 UTC
Ian,

Could you try the following scratchbuild?

https://github.com/fedora-selinux/selinux-policy/pull/1750
Checks -> Artifacts -> rpms.zip

Comment 6 Marc Dionne (Auristor) 2023-06-21 11:54:15 UTC
(In reply to Zdenek Pytela from comment #5)
> Ian,
> 
> Could you try the following scratchbuild?
> 
> https://github.com/fedora-selinux/selinux-policy/pull/1750
> Checks -> Artifacts -> rpms.zip

Works for me on f38; no AVCs are logged in permissive mode, and the afs dynamic root works as expected in enforcing mode.

Comment 7 Zdenek Pytela 2023-06-26 09:57:40 UTC
(In reply to Marc Dionne (Auristor) from comment #6)
> Works for me on f38; no AVCs are logged in permissive mode, and the afs
> dynamic root works as expected in enforcing mode.

Thanks for confirming.

Comment 8 Fedora Update System 2023-06-29 16:14:38 UTC
FEDORA-2023-ba070ee6ba has been submitted as an update to Fedora 38. https://bodhi.fedoraproject.org/updates/FEDORA-2023-ba070ee6ba

Comment 9 Fedora Update System 2023-06-30 01:40:16 UTC
FEDORA-2023-ba070ee6ba has been pushed to the Fedora 38 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2023-ba070ee6ba`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2023-ba070ee6ba

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 10 Fedora Update System 2023-07-01 01:45:49 UTC
FEDORA-2023-ba070ee6ba has been pushed to the Fedora 38 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.