Commits on Source 5

  • Ondrej Mosnáček's avatar
    selinux: try security xattr after genfs for kernfs filesystems · 4ae660e5
    Ondrej Mosnáček authored
    
    
    Since kernfs supports the security xattr handlers, we can simply use
    these to determine the inode's context, dropping the need to update it
    from kernfs explicitly using a security_inode_notifysecctx() call.
    
    We achieve this by setting a new sbsec flag SE_SBGENFS_XATTR to all
    mounts that are known to use kernfs under the hood and then fetching the
    xattrs after determining the fallback genfs sid in
    inode_doinit_with_dentry() when this flag is set.
    
    This will allow implementing full security xattr support in kernfs and
    removing the ...notifysecctx() call in a subsequent patch.
    
    Signed-off-by: Ondrej Mosnáček's avatarOndrej Mosnacek <omosnace@redhat.com>
    4ae660e5
  • Ondrej Mosnáček's avatar
    kernfs: use simple_xattrs for security attributes · c0ceedaf
    Ondrej Mosnáček authored
    
    
    Replace the special handling of security xattrs with simple_xattrs, as
    is already done for the trusted xattrs. This simplifies the code and
    allows LSMs to use more than just a single xattr to do their business.
    
    Signed-off-by: Ondrej Mosnáček's avatarOndrej Mosnacek <omosnace@redhat.com>
    c0ceedaf
  • Ondrej Mosnáček's avatar
    LSM: add new hook for kernfs node initialization · 7d7b6287
    Ondrej Mosnáček authored
    
    
    This patch introduces a new security hook that is intended for
    initializing the security data for newly created kernfs nodes, which
    provide a way of storing a non-default security context, but need to
    operate independently from mounts (and therefore may not have an
    associated inode at the moment of creation).
    
    The main motivation is to allow kernfs nodes to inherit the context of
    the parent under SELinux, similar to the behavior of
    security_inode_init_security(). Other LSMs may implement their own logic
    for handling the creation of new nodes.
    
    The interface of the new hook provides the following to the LSM:
     * a qstr containing the name of the new node
     * initial inode attributes (struct iattr + simple_xattrs) of the new
       node
     * inode attributes of the parent node (directory)
    
    Signed-off-by: Ondrej Mosnáček's avatarOndrej Mosnacek <omosnace@redhat.com>
    7d7b6287
  • Ondrej Mosnáček's avatar
    selinux: implement the kernfs_init_security hook · afbdb61e
    Ondrej Mosnáček authored
    
    
    The hook applies the same logic as selinux_determine_inode_label(), with
    the exception of the super_block handling, which will be enforced on the
    actual inodes later by other hooks.
    
    Signed-off-by: Ondrej Mosnáček's avatarOndrej Mosnacek <omosnace@redhat.com>
    afbdb61e
  • Ondrej Mosnáček's avatar
    kernfs: initialize security of newly created nodes · c0efafb1
    Ondrej Mosnáček authored
    Use the new security_kernfs_init_security() hook to allow LSMs to
    possibly assign a non-default security context to a newly created kernfs
    node based on the attributes of the new node and also its parent node.
    
    This fixes an issue with cgroupfs under SELinux, where newly created
    cgroup subdirectories/files would not inherit its parent's context if
    it had been set explicitly to a non-default value (other than the genfs
    context specified by the policy). This can be reproduced as follows (on
    Fedora/RHEL):
    
        # mkdir /sys/fs/cgroup/unified/test
        # # Need permissive to change the label under Fedora policy:
        # setenforce 0
        # chcon -t container_file_t /sys/fs/cgroup/unified/test
        # ls -lZ /sys/fs/cgroup/unified
        total 0
        -r--r--r--.  1 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 cgroup.controllers
        -rw-r--r--.  1 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 cgroup.max.depth
        -rw-r--r--.  1 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 cgroup.max.descendants
        -rw-r--r--.  1 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 cgroup.procs
        -r--r--r--.  1 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 cgroup.stat
        -rw-r--r--.  1 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 cgroup.subtree_control
        -rw-r--r--.  1 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 cgroup.threads
        drwxr-xr-x.  2 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 init.scope
        drwxr-xr-x. 26 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:21 system.slice
        drwxr-xr-x.  3 root root system_u:object_r:container_file_t:s0 0 Jan 29 03:15 test
        drwxr-xr-x.  3 root root system_u:object_r:cgroup_t:s0         0 Jan 29 03:06 user.slice
        # mkdir /sys/fs/cgroup/unified/test/subdir
    
    Actual result:
    
        # ls -ldZ /sys/fs/cgroup/unified/test/subdir
        drwxr-xr-x. 2 root root system_u:object_r:cgroup_t:s0 0 Jan 29 03:15 /sys/fs/cgroup/unified/test/subdir
    
    Expected result:
    
        # ls -ldZ /sys/fs/cgroup/unified/test/subdir
        drwxr-xr-x. 2 root root unconfined_u:object_r:container_file_t:s0 0 Jan 29 03:15 /sys/fs/cgroup/unified/test/subdir
    
    Link: https://github.com/SELinuxProject/selinux-kernel/issues/39
    
    
    Signed-off-by: Ondrej Mosnáček's avatarOndrej Mosnacek <omosnace@redhat.com>
    c0efafb1
Loading
Loading