selinux: remove the SELinux lockdown implementation
authorPaul Moore <paul@paul-moore.com>
Tue, 28 Sep 2021 22:22:26 +0000 (18:22 -0400)
committerPaul Moore <paul@paul-moore.com>
Thu, 30 Sep 2021 14:12:33 +0000 (10:12 -0400)
commitf5d0e5e9d72d3a06018efbfa3adccc0e09a129f9
tree6abffe19f14befd033cdd93e81bdabd93e6a69f2
parent8a764ef1bd43fb2bb4ff3290746e5c820a3a9716
selinux: remove the SELinux lockdown implementation

NOTE: This patch intentionally omits any "Fixes:" metadata or stable
tagging since it removes a SELinux access control check; while
removing the control point is the right thing to do moving forward,
removing it in stable kernels could be seen as a regression.

The original SELinux lockdown implementation in 59438b46471a
("security,lockdown,selinux: implement SELinux lockdown") used the
current task's credentials as both the subject and object in the
SELinux lockdown hook, selinux_lockdown().  Unfortunately that
proved to be incorrect in a number of cases as the core kernel was
calling the LSM lockdown hook in places where the credentials from
the "current" task_struct were not the correct credentials to use
in the SELinux access check.

Attempts were made to resolve this by adding a credential pointer
to the LSM lockdown hook as well as suggesting that the single hook
be split into two: one for user tasks, one for kernel tasks; however
neither approach was deemed acceptable by Linus.  Faced with the
prospect of either changing the subj/obj in the access check to a
constant context (likely the kernel's label) or removing the SELinux
lockdown check entirely, the SELinux community decided that removing
the lockdown check was preferable.

The supporting changes to the general LSM layer are left intact, this
patch only removes the SELinux implementation.

Acked-by: Ondrej Mosnacek <omosnace@redhat.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
security/selinux/hooks.c
security/selinux/include/classmap.h