• Christian Göttsche's avatar
    sched: only perform capability check on privileged operation · 700a7833
    Christian Göttsche authored
    sched_setattr(2) issues via kernel/sched/core.c:__sched_setscheduler()
    a CAP_SYS_NICE audit event unconditionally, even when the requested
    operation does not require that capability / is unprivileged, i.e. for
    reducing niceness.
    This is relevant in connection with SELinux, where a capability check
    results in a policy decision and by default a denial message on
    insufficient permission is issued.
    It can lead to three undesired cases:
      1. A denial message is generated, even in case the operation was an
         unprivileged one and thus the syscall succeeded, creating noise.
      2. To avoid the noise from 1. the policy writer adds a rule to ignore
         those denial messages, hiding future syscalls, where the task
         performs an actual privileged operation, leading to hidden limited
         functionality of that task.
      3. To avoid the noise from 1. the policy writer adds a rule to allow
         the task the capability CAP_SYS_NICE, while it does not need it,
         violating the principle of least privilege.
    
    Conduct privilged/unprivileged categorization first and perform a
    capable test (and at most once) only if needed.
    Signed-off-by: default avatarChristian Göttsche <cgzones@googlemail.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20220615152505.310488-1-cgzones@googlemail.com
    700a7833
core.c 282 KB