1. 09 2月, 2016 1 次提交
  2. 23 1月, 2016 1 次提交
    • A
      wrappers for ->i_mutex access · 5955102c
      Al Viro 提交于
      parallel to mutex_{lock,unlock,trylock,is_locked,lock_nested},
      inode_foo(inode) being mutex_foo(&inode->i_mutex).
      
      Please, use those for access to ->i_mutex; over the coming cycle
      ->i_mutex will become rwsem, with ->lookup() done with it held
      only shared.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      5955102c
  3. 09 1月, 2016 1 次提交
  4. 04 1月, 2016 1 次提交
    • A
      selinuxfs: switch to memdup_user_nul() · 8365a719
      Al Viro 提交于
      Nothing in there gives a damn about the buffer alignment - it
      just parses its contents.  So the use of get_zeroed_page()
      doesn't buy us anything - might as well had been kmalloc(),
      which makes that code equivalent to open-coded memdup_user_nul()
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      8365a719
  5. 25 12月, 2015 8 次提交
  6. 25 11月, 2015 1 次提交
    • S
      selinux: fix bug in conditional rules handling · f3bef679
      Stephen Smalley 提交于
      commit fa1aa143 ("selinux: extended permissions for ioctls")
      introduced a bug into the handling of conditional rules, skipping the
      processing entirely when the caller does not provide an extended
      permissions (xperms) structure.  Access checks from userspace using
      /sys/fs/selinux/access do not include such a structure since that
      interface does not presently expose extended permission information.
      As a result, conditional rules were being ignored entirely on userspace
      access requests, producing denials when access was allowed by
      conditional rules in the policy.  Fix the bug by only skipping
      computation of extended permissions in this situation, not the entire
      conditional rules processing.
      Reported-by: NLaurent Bigonville <bigon@debian.org>
      Signed-off-by: NStephen Smalley <sds@tycho.nsa.gov>
      [PM: fixed long lines in patch description]
      Cc: stable@vger.kernel.org # 4.3
      Signed-off-by: NPaul Moore <pmoore@redhat.com>
      f3bef679
  7. 09 11月, 2015 1 次提交
  8. 06 11月, 2015 1 次提交
  9. 22 10月, 2015 9 次提交
  10. 17 10月, 2015 1 次提交
  11. 11 10月, 2015 1 次提交
  12. 19 9月, 2015 1 次提交
  13. 11 9月, 2015 1 次提交
  14. 05 9月, 2015 1 次提交
    • K
      fs: create and use seq_show_option for escaping · a068acf2
      Kees Cook 提交于
      Many file systems that implement the show_options hook fail to correctly
      escape their output which could lead to unescaped characters (e.g.  new
      lines) leaking into /proc/mounts and /proc/[pid]/mountinfo files.  This
      could lead to confusion, spoofed entries (resulting in things like
      systemd issuing false d-bus "mount" notifications), and who knows what
      else.  This looks like it would only be the root user stepping on
      themselves, but it's possible weird things could happen in containers or
      in other situations with delegated mount privileges.
      
      Here's an example using overlay with setuid fusermount trusting the
      contents of /proc/mounts (via the /etc/mtab symlink).  Imagine the use
      of "sudo" is something more sneaky:
      
        $ BASE="ovl"
        $ MNT="$BASE/mnt"
        $ LOW="$BASE/lower"
        $ UP="$BASE/upper"
        $ WORK="$BASE/work/ 0 0
        none /proc fuse.pwn user_id=1000"
        $ mkdir -p "$LOW" "$UP" "$WORK"
        $ sudo mount -t overlay -o "lowerdir=$LOW,upperdir=$UP,workdir=$WORK" none /mnt
        $ cat /proc/mounts
        none /root/ovl/mnt overlay rw,relatime,lowerdir=ovl/lower,upperdir=ovl/upper,workdir=ovl/work/ 0 0
        none /proc fuse.pwn user_id=1000 0 0
        $ fusermount -u /proc
        $ cat /proc/mounts
        cat: /proc/mounts: No such file or directory
      
      This fixes the problem by adding new seq_show_option and
      seq_show_option_n helpers, and updating the vulnerable show_option
      handlers to use them as needed.  Some, like SELinux, need to be open
      coded due to unusual existing escape mechanisms.
      
      [akpm@linux-foundation.org: add lost chunk, per Kees]
      [keescook@chromium.org: seq_show_option should be using const parameters]
      Signed-off-by: NKees Cook <keescook@chromium.org>
      Acked-by: NSerge Hallyn <serge.hallyn@canonical.com>
      Acked-by: NJan Kara <jack@suse.com>
      Acked-by: NPaul Moore <paul@paul-moore.com>
      Cc: J. R. Okajima <hooanon05g@gmail.com>
      Signed-off-by: NKees Cook <keescook@chromium.org>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a068acf2
  15. 14 7月, 2015 5 次提交
    • D
      selinux: Create a common helper to determine an inode label [ver #3] · c3c188b2
      David Howells 提交于
      Create a common helper function to determine the label for a new inode.
      This is then used by:
      
      	- may_create()
      	- selinux_dentry_init_security()
      	- selinux_inode_init_security()
      
      This will change the behaviour of the functions slightly, bringing them
      all into line.
      Suggested-by: NStephen Smalley <sds@tycho.nsa.gov>
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Acked-by: NStephen Smalley <sds@tycho.nsa.gov>
      Signed-off-by: NPaul Moore <pmoore@redhat.com>
      c3c188b2
    • S
      selinux: Augment BUG_ON assertion for secclass_map. · bd1741f4
      Stephen Smalley 提交于
      Ensure that we catch any cases where tclass == 0.
      Signed-off-by: NStephen Smalley <sds@tycho.nsa.gov>
      Signed-off-by: NPaul Moore <pmoore@redhat.com>
      bd1741f4
    • S
      selinux: initialize sock security class to default value · 5dee25d0
      Stephen Smalley 提交于
      Initialize the security class of sock security structures
      to the generic socket class.  This is similar to what is
      already done in inode_alloc_security for files.  Generally
      the sclass field will later by set by socket_post_create
      or sk_clone or sock_graft, but for protocol implementations
      that fail to call any of these for newly accepted sockets,
      we want some sane default that will yield a legitimate
      avc denied message with non-garbage values for class and
      permission.
      Signed-off-by: NStephen Smalley <sds@tycho.nsa.gov>
      Signed-off-by: NPaul Moore <pmoore@redhat.com>
      5dee25d0
    • W
      selinux: reduce locking overhead in inode_free_security() · 9629d04a
      Waiman Long 提交于
      The inode_free_security() function just took the superblock's isec_lock
      before checking and trying to remove the inode security struct from the
      linked list. In many cases, the list was empty and so the lock taking
      is wasteful as no useful work is done. On multi-socket systems with
      a large number of CPUs, there can also be a fair amount of spinlock
      contention on the isec_lock if many tasks are exiting at the same time.
      
      This patch changes the code to check the state of the list first before
      taking the lock and attempting to dequeue it. The list_del_init()
      can be called more than once on the same list with no harm as long
      as they are properly serialized. It should not be possible to have
      inode_free_security() called concurrently with list_add(). For better
      safety, however, we use list_empty_careful() here even though it is
      still not completely safe in case that happens.
      Signed-off-by: NWaiman Long <Waiman.Long@hp.com>
      Acked-by: NStephen Smalley <sds@tycho.nsa.gov>
      Signed-off-by: NPaul Moore <pmoore@redhat.com>
      9629d04a
    • J
      selinux: extended permissions for ioctls · fa1aa143
      Jeff Vander Stoep 提交于
      Add extended permissions logic to selinux. Extended permissions
      provides additional permissions in 256 bit increments. Extend the
      generic ioctl permission check to use the extended permissions for
      per-command filtering. Source/target/class sets including the ioctl
      permission may additionally include a set of commands. Example:
      
      allowxperm <source> <target>:<class> ioctl unpriv_app_socket_cmds
      auditallowxperm <source> <target>:<class> ioctl priv_gpu_cmds
      
      Where unpriv_app_socket_cmds and priv_gpu_cmds are macros
      representing commonly granted sets of ioctl commands.
      
      When ioctl commands are omitted only the permissions are checked.
      This feature is intended to provide finer granularity for the ioctl
      permission that may be too imprecise. For example, the same driver
      may use ioctls to provide important and benign functionality such as
      driver version or socket type as well as dangerous capabilities such
      as debugging features, read/write/execute to physical memory or
      access to sensitive data. Per-command filtering provides a mechanism
      to reduce the attack surface of the kernel, and limit applications
      to the subset of commands required.
      
      The format of the policy binary has been modified to include ioctl
      commands, and the policy version number has been incremented to
      POLICYDB_VERSION_XPERMS_IOCTL=30 to account for the format
      change.
      
      The extended permissions logic is deliberately generic to allow
      components to be reused e.g. netlink filters
      Signed-off-by: NJeff Vander Stoep <jeffv@google.com>
      Acked-by: NNick Kralevich <nnk@google.com>
      Signed-off-by: NPaul Moore <pmoore@redhat.com>
      fa1aa143
  16. 11 7月, 2015 1 次提交
    • S
      selinux: fix mprotect PROT_EXEC regression caused by mm change · 892e8cac
      Stephen Smalley 提交于
      commit 66fc1303 ("mm: shmem_zero_setup
      skip security check and lockdep conflict with XFS") caused a regression
      for SELinux by disabling any SELinux checking of mprotect PROT_EXEC on
      shared anonymous mappings.  However, even before that regression, the
      checking on such mprotect PROT_EXEC calls was inconsistent with the
      checking on a mmap PROT_EXEC call for a shared anonymous mapping.  On a
      mmap, the security hook is passed a NULL file and knows it is dealing
      with an anonymous mapping and therefore applies an execmem check and no
      file checks.  On a mprotect, the security hook is passed a vma with a
      non-NULL vm_file (as this was set from the internally-created shmem
      file during mmap) and therefore applies the file-based execute check
      and no execmem check.  Since the aforementioned commit now marks the
      shmem zero inode with the S_PRIVATE flag, the file checks are disabled
      and we have no checking at all on mprotect PROT_EXEC.  Add a test to
      the mprotect hook logic for such private inodes, and apply an execmem
      check in that case.  This makes the mmap and mprotect checking
      consistent for shared anonymous mappings, as well as for /dev/zero and
      ashmem.
      
      Cc: <stable@vger.kernel.org> # 4.1.x
      Signed-off-by: NStephen Smalley <sds@tycho.nsa.gov>
      Signed-off-by: NPaul Moore <pmoore@redhat.com>
      892e8cac
  17. 10 7月, 2015 1 次提交
    • P
      selinux: don't waste ebitmap space when importing NetLabel categories · 33246035
      Paul Moore 提交于
      At present we don't create efficient ebitmaps when importing NetLabel
      category bitmaps.  This can present a problem when comparing ebitmaps
      since ebitmap_cmp() is very strict about these things and considers
      these wasteful ebitmaps not equal when compared to their more
      efficient counterparts, even if their values are the same.  This isn't
      likely to cause problems on 64-bit systems due to a bit of luck on
      how NetLabel/CIPSO works and the default ebitmap size, but it can be
      a problem on 32-bit systems.
      
      This patch fixes this problem by being a bit more intelligent when
      importing NetLabel category bitmaps by skipping over empty sections
      which should result in a nice, efficient ebitmap.
      
      Cc: stable@vger.kernel.org # 3.17
      Signed-off-by: NPaul Moore <pmoore@redhat.com>
      33246035
  18. 01 7月, 2015 1 次提交
  19. 19 6月, 2015 1 次提交
  20. 06 6月, 2015 1 次提交
    • J
      selinux: fix setting of security labels on NFS · 9fc2b4b4
      J. Bruce Fields 提交于
      Before calling into the filesystem, vfs_setxattr calls
      security_inode_setxattr, which ends up calling selinux_inode_setxattr in
      our case.  That returns -EOPNOTSUPP whenever SBLABEL_MNT is not set.
      SBLABEL_MNT was supposed to be set by sb_finish_set_opts, which sets it
      only if selinux_is_sblabel_mnt returns true.
      
      The selinux_is_sblabel_mnt logic was broken by eadcabc6 "SELinux: do
      all flags twiddling in one place", which didn't take into the account
      the SECURITY_FS_USE_NATIVE behavior that had been introduced for nfs
      with eb9ae686 "SELinux: Add new labeling type native labels".
      
      This caused setxattr's of security labels over NFSv4.2 to fail.
      
      Cc: stable@kernel.org # 3.13
      Cc: Eric Paris <eparis@redhat.com>
      Cc: David Quigley <dpquigl@davequigley.com>
      Reported-by: NRichard Chan <rc556677@outlook.com>
      Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
      Acked-by: NStephen Smalley <sds@tycho.nsa.gov>
      [PM: added the stable dependency]
      Signed-off-by: NPaul Moore <pmoore@redhat.com>
      9fc2b4b4
  21. 05 6月, 2015 1 次提交
    • S
      selinux: Remove unused permission definitions · 42a9699a
      Stephen Smalley 提交于
      Remove unused permission definitions from SELinux.
      Many of these were only ever used in pre-mainline
      versions of SELinux, prior to Linux 2.6.0.  Some of them
      were used in the legacy network or compat_net=1 checks
      that were disabled by default in Linux 2.6.18 and
      fully removed in Linux 2.6.30.
      
      Permissions never used in mainline Linux:
      file swapon
      filesystem transition
      tcp_socket { connectto newconn acceptfrom }
      node enforce_dest
      unix_stream_socket { newconn acceptfrom }
      
      Legacy network checks, removed in 2.6.30:
      socket { recv_msg send_msg }
      node { tcp_recv tcp_send udp_recv udp_send rawip_recv rawip_send dccp_recv dccp_send }
      netif { tcp_recv tcp_send udp_recv udp_send rawip_recv rawip_send dccp_recv dccp_send }
      Signed-off-by: NStephen Smalley <sds@tycho.nsa.gov>
      Signed-off-by: NPaul Moore <pmoore@redhat.com>
      42a9699a