03 Aug, 2015

1 commit


28 Jul, 2015

1 commit

  • __key_link_end is not freeing the associated array edit structure
    and this leads to a 512 byte memory leak each time an identical
    existing key is added with add_key().

    The reason the add_key() system call returns okay is that
    key_create_or_update() calls __key_link_begin() before checking to see
    whether it can update a key directly rather than adding/replacing - which
    it turns out it can. Thus __key_link() is not called through
    __key_instantiate_and_link() and __key_link_end() must cancel the edit.

    CVE-2015-1333

    Signed-off-by: Colin Ian King
    Signed-off-by: David Howells
    Signed-off-by: James Morris

    Colin Ian King
     

11 Jul, 2015

2 commits

  • James Morris
     
  • commit 66fc13039422ba7df2d01a8ee0873e4ef965b50b ("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: # 4.1.x
    Signed-off-by: Stephen Smalley
    Signed-off-by: Paul Moore

    Stephen Smalley
     

10 Jul, 2015

1 commit

  • 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: Paul Moore

    Paul Moore
     

05 Jul, 2015

1 commit

  • Pull more vfs updates from Al Viro:
    "Assorted VFS fixes and related cleanups (IMO the most interesting in
    that part are f_path-related things and Eric's descriptor-related
    stuff). UFS regression fixes (it got broken last cycle). 9P fixes.
    fs-cache series, DAX patches, Jan's file_remove_suid() work"

    [ I'd say this is much more than "fixes and related cleanups". The
    file_table locking rule change by Eric Dumazet is a rather big and
    fundamental update even if the patch isn't huge. - Linus ]

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (49 commits)
    9p: cope with bogus responses from server in p9_client_{read,write}
    p9_client_write(): avoid double p9_free_req()
    9p: forgetting to cancel request on interrupted zero-copy RPC
    dax: bdev_direct_access() may sleep
    block: Add support for DAX reads/writes to block devices
    dax: Use copy_from_iter_nocache
    dax: Add block size note to documentation
    fs/file.c: __fget() and dup2() atomicity rules
    fs/file.c: don't acquire files->file_lock in fd_install()
    fs:super:get_anon_bdev: fix race condition could cause dev exceed its upper limitation
    vfs: avoid creation of inode number 0 in get_next_ino
    namei: make set_root_rcu() return void
    make simple_positive() public
    ufs: use dir_pages instead of ufs_dir_pages()
    pagemap.h: move dir_pages() over there
    remove the pointless include of lglock.h
    fs: cleanup slight list_entry abuse
    xfs: Correctly lock inode when removing suid and file capabilities
    fs: Call security_ops->inode_killpriv on truncate
    fs: Provide function telling whether file_remove_privs() will do anything
    ...

    Linus Torvalds
     

04 Jul, 2015

1 commit

  • Pull user namespace updates from Eric Biederman:
    "Long ago and far away when user namespaces where young it was realized
    that allowing fresh mounts of proc and sysfs with only user namespace
    permissions could violate the basic rule that only root gets to decide
    if proc or sysfs should be mounted at all.

    Some hacks were put in place to reduce the worst of the damage could
    be done, and the common sense rule was adopted that fresh mounts of
    proc and sysfs should allow no more than bind mounts of proc and
    sysfs. Unfortunately that rule has not been fully enforced.

    There are two kinds of gaps in that enforcement. Only filesystems
    mounted on empty directories of proc and sysfs should be ignored but
    the test for empty directories was insufficient. So in my tree
    directories on proc, sysctl and sysfs that will always be empty are
    created specially. Every other technique is imperfect as an ordinary
    directory can have entries added even after a readdir returns and
    shows that the directory is empty. Special creation of directories
    for mount points makes the code in the kernel a smidge clearer about
    it's purpose. I asked container developers from the various container
    projects to help test this and no holes were found in the set of mount
    points on proc and sysfs that are created specially.

    This set of changes also starts enforcing the mount flags of fresh
    mounts of proc and sysfs are consistent with the existing mount of
    proc and sysfs. I expected this to be the boring part of the work but
    unfortunately unprivileged userspace winds up mounting fresh copies of
    proc and sysfs with noexec and nosuid clear when root set those flags
    on the previous mount of proc and sysfs. So for now only the atime,
    read-only and nodev attributes which userspace happens to keep
    consistent are enforced. Dealing with the noexec and nosuid
    attributes remains for another time.

    This set of changes also addresses an issue with how open file
    descriptors from /proc//ns/* are displayed. Recently readlink of
    /proc//fd has been triggering a WARN_ON that has not been
    meaningful since it was added (as all of the code in the kernel was
    converted) and is not now actively wrong.

    There is also a short list of issues that have not been fixed yet that
    I will mention briefly.

    It is possible to rename a directory from below to above a bind mount.
    At which point any directory pointers below the renamed directory can
    be walked up to the root directory of the filesystem. With user
    namespaces enabled a bind mount of the bind mount can be created
    allowing the user to pick a directory whose children they can rename
    to outside of the bind mount. This is challenging to fix and doubly
    so because all obvious solutions must touch code that is in the
    performance part of pathname resolution.

    As mentioned above there is also a question of how to ensure that
    developers by accident or with purpose do not introduce exectuable
    files on sysfs and proc and in doing so introduce security regressions
    in the current userspace that will not be immediately obvious and as
    such are likely to require breaking userspace in painful ways once
    they are recognized"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace:
    vfs: Remove incorrect debugging WARN in prepend_path
    mnt: Update fs_fully_visible to test for permanently empty directories
    sysfs: Create mountpoints with sysfs_create_mount_point
    sysfs: Add support for permanently empty directories to serve as mount points.
    kernfs: Add support for always empty directories.
    proc: Allow creating permanently empty directories that serve as mount points
    sysctl: Allow creating permanently empty directories that serve as mountpoints.
    fs: Add helper functions for permanently empty directories.
    vfs: Ignore unlocked mounts in fs_fully_visible
    mnt: Modify fs_fully_visible to deal with locked ro nodev and atime
    mnt: Refactor the logic for mounting sysfs and proc in a user namespace

    Linus Torvalds
     

02 Jul, 2015

1 commit

  • Pull module updates from Rusty Russell:
    "Main excitement here is Peter Zijlstra's lockless rbtree optimization
    to speed module address lookup. He found some abusers of the module
    lock doing that too.

    A little bit of parameter work here too; including Dan Streetman's
    breaking up the big param mutex so writing a parameter can load
    another module (yeah, really). Unfortunately that broke the usual
    suspects, !CONFIG_MODULES and !CONFIG_SYSFS, so those fixes were
    appended too"

    * tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux: (26 commits)
    modules: only use mod->param_lock if CONFIG_MODULES
    param: fix module param locks when !CONFIG_SYSFS.
    rcu: merge fix for Convert ACCESS_ONCE() to READ_ONCE() and WRITE_ONCE()
    module: add per-module param_lock
    module: make perm const
    params: suppress unused variable error, warn once just in case code changes.
    modules: clarify CONFIG_MODULE_COMPRESS help, suggest 'N'.
    kernel/module.c: avoid ifdefs for sig_enforce declaration
    kernel/workqueue.c: remove ifdefs over wq_power_efficient
    kernel/params.c: export param_ops_bool_enable_only
    kernel/params.c: generalize bool_enable_only
    kernel/module.c: use generic module param operaters for sig_enforce
    kernel/params: constify struct kernel_param_ops uses
    sysfs: tightened sysfs permission checks
    module: Rework module_addr_{min,max}
    module: Use __module_address() for module_address_lookup()
    module: Make the mod_tree stuff conditional on PERF_EVENTS || TRACING
    module: Optimize __module_address() using a latched RB-tree
    rbtree: Implement generic latch_tree
    seqlock: Introduce raw_read_seqcount_latch()
    ...

    Linus Torvalds
     

01 Jul, 2015

1 commit

  • This allows for better documentation in the code and
    it allows for a simpler and fully correct version of
    fs_fully_visible to be written.

    The mount points converted and their filesystems are:
    /sys/hypervisor/s390/ s390_hypfs
    /sys/kernel/config/ configfs
    /sys/kernel/debug/ debugfs
    /sys/firmware/efi/efivars/ efivarfs
    /sys/fs/fuse/connections/ fusectl
    /sys/fs/pstore/ pstore
    /sys/kernel/tracing/ tracefs
    /sys/fs/cgroup/ cgroup
    /sys/kernel/security/ securityfs
    /sys/fs/selinux/ selinuxfs
    /sys/fs/smackfs/ smackfs

    Cc: stable@vger.kernel.org
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: "Eric W. Biederman"

    Eric W. Biederman
     

28 Jun, 2015

2 commits

  • Pull audit updates from Paul Moore:
    "Four small audit patches for v4.2, all bug fixes. Only 10 lines of
    change this time so very unremarkable, the patch subject lines pretty
    much tell the whole story"

    * 'upstream' of git://git.infradead.org/users/pcmoore/audit:
    audit: Fix check of return value of strnlen_user()
    audit: obsolete audit_context check is removed in audit_filter_rules()
    audit: fix for typo in comment to function audit_log_link_denied()
    lsm: rename duplicate labels in LSM_AUDIT_DATA_TASK audit message type

    Linus Torvalds
     
  • Pull security subsystem updates from James Morris:
    "The main change in this kernel is Casey's generalized LSM stacking
    work, which removes the hard-coding of Capabilities and Yama stacking,
    allowing multiple arbitrary "small" LSMs to be stacked with a default
    monolithic module (e.g. SELinux, Smack, AppArmor).

    See
    https://lwn.net/Articles/636056/

    This will allow smaller, simpler LSMs to be incorporated into the
    mainline kernel and arbitrarily stacked by users. Also, this is a
    useful cleanup of the LSM code in its own right"

    * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (38 commits)
    tpm, tpm_crb: fix le64_to_cpu conversions in crb_acpi_add()
    vTPM: set virtual device before passing to ibmvtpm_reset_crq
    tpm_ibmvtpm: remove unneccessary message level.
    ima: update builtin policies
    ima: extend "mask" policy matching support
    ima: add support for new "euid" policy condition
    ima: fix ima_show_template_data_ascii()
    Smack: freeing an error pointer in smk_write_revoke_subj()
    selinux: fix setting of security labels on NFS
    selinux: Remove unused permission definitions
    selinux: enable genfscon labeling for sysfs and pstore files
    selinux: enable per-file labeling for debugfs files.
    selinux: update netlink socket classes
    signals: don't abuse __flush_signals() in selinux_bprm_committed_creds()
    selinux: Print 'sclass' as string when unrecognized netlink message occurs
    Smack: allow multiple labels in onlycap
    Smack: fix seq operations in smackfs
    ima: pass iint to ima_add_violation()
    ima: wrap event related data to the new ima_event_data structure
    integrity: add validity checks for 'path' parameter
    ...

    Linus Torvalds
     

25 Jun, 2015

1 commit

  • Pull networking updates from David Miller:

    1) Add TX fast path in mac80211, from Johannes Berg.

    2) Add TSO/GRO support to ibmveth, from Thomas Falcon

    3) Move away from cached routes in ipv6, just like ipv4, from Martin
    KaFai Lau.

    4) Lots of new rhashtable tests, from Thomas Graf.

    5) Run ingress qdisc lockless, from Alexei Starovoitov.

    6) Allow servers to fetch TCP packet headers for SYN packets of new
    connections, for fingerprinting. From Eric Dumazet.

    7) Add mode parameter to pktgen, for testing receive. From Alexei
    Starovoitov.

    8) Cache access optimizations via simplifications of build_skb(), from
    Alexander Duyck.

    9) Move page frag allocator under mm/, also from Alexander.

    10) Add xmit_more support to hv_netvsc, from KY Srinivasan.

    11) Add a counter guard in case we try to perform endless reclassify
    loops in the packet scheduler.

    12) Extern flow dissector to be programmable and use it in new "Flower"
    classifier. From Jiri Pirko.

    13) AF_PACKET fanout rollover fixes, performance improvements, and new
    statistics. From Willem de Bruijn.

    14) Add netdev driver for GENEVE tunnels, from John W Linville.

    15) Add ingress netfilter hooks and filtering, from Pablo Neira Ayuso.

    16) Fix handling of epoll edge triggers in TCP, from Eric Dumazet.

    17) Add an ECN retry fallback for the initial TCP handshake, from Daniel
    Borkmann.

    18) Add tail call support to BPF, from Alexei Starovoitov.

    19) Add several pktgen helper scripts, from Jesper Dangaard Brouer.

    20) Add zerocopy support to AF_UNIX, from Hannes Frederic Sowa.

    21) Favor even port numbers for allocation to connect() requests, and
    odd port numbers for bind(0), in an effort to help avoid
    ip_local_port_range exhaustion. From Eric Dumazet.

    22) Add Cavium ThunderX driver, from Sunil Goutham.

    23) Allow bpf programs to access skb_iif and dev->ifindex SKB metadata,
    from Alexei Starovoitov.

    24) Add support for T6 chips in cxgb4vf driver, from Hariprasad Shenai.

    25) Double TCP Small Queues default to 256K to accomodate situations
    like the XEN driver and wireless aggregation. From Wei Liu.

    26) Add more entropy inputs to flow dissector, from Tom Herbert.

    27) Add CDG congestion control algorithm to TCP, from Kenneth Klette
    Jonassen.

    28) Convert ipset over to RCU locking, from Jozsef Kadlecsik.

    29) Track and act upon link status of ipv4 route nexthops, from Andy
    Gospodarek.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1670 commits)
    bridge: vlan: flush the dynamically learned entries on port vlan delete
    bridge: multicast: add a comment to br_port_state_selection about blocking state
    net: inet_diag: export IPV6_V6ONLY sockopt
    stmmac: troubleshoot unexpected bits in des0 & des1
    net: ipv4 sysctl option to ignore routes when nexthop link is down
    net: track link-status of ipv4 nexthops
    net: switchdev: ignore unsupported bridge flags
    net: Cavium: Fix MAC address setting in shutdown state
    drivers: net: xgene: fix for ACPI support without ACPI
    ip: report the original address of ICMP messages
    net/mlx5e: Prefetch skb data on RX
    net/mlx5e: Pop cq outside mlx5e_get_cqe
    net/mlx5e: Remove mlx5e_cq.sqrq back-pointer
    net/mlx5e: Remove extra spaces
    net/mlx5e: Avoid TX CQE generation if more xmit packets expected
    net/mlx5e: Avoid redundant dev_kfree_skb() upon NOP completion
    net/mlx5e: Remove re-assignment of wq type in mlx5e_enable_rq()
    net/mlx5e: Use skb_shinfo(skb)->gso_segs rather than counting them
    net/mlx5e: Static mapping of netdev priv resources to/from netdev TX queues
    net/mlx4_en: Use HW counters for rx/tx bytes/packets in PF device
    ...

    Linus Torvalds
     

24 Jun, 2015

1 commit


19 Jun, 2015

1 commit


16 Jun, 2015

4 commits

  • This patch defines a builtin measurement policy "tcb", similar to the
    existing "ima_tcb", but with additional rules to also measure files
    based on the effective uid and to measure files opened with the "read"
    mode bit set (eg. read, read-write).

    Changing the builtin "ima_tcb" policy could potentially break existing
    users. Instead of defining a new separate boot command line option each
    time the builtin measurement policy is modified, this patch defines a
    single generic boot command line option "ima_policy=" to specify the
    builtin policy and deprecates the use of the builtin ima_tcb policy.

    [The "ima_policy=" boot command line option is based on Roberto Sassu's
    "ima: added new policy type exec" patch.]

    Signed-off-by: Mimi Zohar
    Signed-off-by: Dr. Greg Wettstein
    Cc: stable@vger.kernel.org

    Mimi Zohar
     
  • The current "mask" policy option matches files opened as MAY_READ,
    MAY_WRITE, MAY_APPEND or MAY_EXEC. This patch extends the "mask"
    option to match files opened containing one of these modes. For
    example, "mask=^MAY_READ" would match files opened read-write.

    Signed-off-by: Mimi Zohar
    Signed-off-by: Dr. Greg Wettstein
    Cc: stable@vger.kernel.org

    Mimi Zohar
     
  • The new "euid" policy condition measures files with the specified
    effective uid (euid). In addition, for CAP_SETUID files it measures
    files with the specified uid or suid.

    Changelog:
    - fixed checkpatch.pl warnings
    - fixed avc denied {setuid} messages - based on Roberto's feedback

    Signed-off-by: Mimi Zohar
    Signed-off-by: Dr. Greg Wettstein
    Cc: stable@vger.kernel.org

    Mimi Zohar
     
  • This patch fixes a bug introduced in "4d7aeee ima: define new template
    ima-ng and template fields d-ng and n-ng".

    Changelog:
    - change int to uint32 (Roberto Sassu's suggestion)

    Signed-off-by: Mimi Zohar
    Signed-off-by: Roberto Sassu
    Cc: stable@vger.kernel.org # 3.13

    Mimi Zohar
     

13 Jun, 2015

2 commits


06 Jun, 2015

1 commit

  • 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 eadcabc697e9 "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 eb9ae686507b "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
    Cc: David Quigley
    Reported-by: Richard Chan
    Signed-off-by: J. Bruce Fields
    Acked-by: Stephen Smalley
    [PM: added the stable dependency]
    Signed-off-by: Paul Moore

    J. Bruce Fields
     

05 Jun, 2015

6 commits

  • 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: Stephen Smalley
    Signed-off-by: Paul Moore

    Stephen Smalley
     
  • Support per-file labeling of sysfs and pstore files based on
    genfscon policy entries. This is safe because the sysfs
    and pstore directory tree cannot be manipulated by userspace,
    except to unlink pstore entries.
    This provides an alternative method of assigning per-file labeling
    to sysfs or pstore files without needing to set the labels from
    userspace on each boot. The advantages of this approach are that
    the labels are assigned as soon as the dentry is first instantiated
    and userspace does not need to walk the sysfs or pstore tree and
    set the labels on each boot. The limitations of this approach are
    that the labels can only be assigned based on pathname prefix matching.
    You can initially assign labels using this mechanism and then change
    them at runtime via setxattr if allowed to do so by policy.

    Signed-off-by: Stephen Smalley
    Suggested-by: Dominick Grift
    Acked-by: Jeff Vander Stoep
    Signed-off-by: Paul Moore

    Stephen Smalley
     
  • Add support for per-file labeling of debugfs files so that
    we can distinguish them in policy. This is particularly
    important in Android where certain debugfs files have to be writable
    by apps and therefore the debugfs directory tree can be read and
    searched by all.

    Since debugfs is entirely kernel-generated, the directory tree is
    immutable by userspace, and the inodes are pinned in memory, we can
    simply use the same approach as with proc and label the inodes from
    policy based on pathname from the root of the debugfs filesystem.
    Generalize the existing labeling support used for proc and reuse it
    for debugfs too.

    Signed-off-by: Stephen Smalley
    Signed-off-by: Paul Moore

    Stephen Smalley
     
  • Update the set of SELinux netlink socket class definitions to match
    the set of netlink protocols implemented by the kernel. The
    ip_queue implementation for the NETLINK_FIREWALL and NETLINK_IP6_FW protocols
    was removed in d16cf20e2f2f13411eece7f7fb72c17d141c4a84, so we can remove
    the corresponding class definitions as this is dead code. Add new
    classes for NETLINK_ISCSI, NETLINK_FIB_LOOKUP, NETLINK_CONNECTOR,
    NETLINK_NETFILTER, NETLINK_GENERIC, NETLINK_SCSITRANSPORT, NETLINK_RDMA,
    and NETLINK_CRYPTO so that we can distinguish among sockets created
    for each of these protocols. This change does not define the finer-grained
    nlsmsg_read/write permissions or map specific nlmsg_type values to those
    permissions in the SELinux nlmsgtab; if finer-grained control of these
    sockets is desired/required, that can be added as a follow-on change.
    We do not define a SELinux class for NETLINK_ECRYPTFS as the implementation
    was removed in 624ae5284516870657505103ada531c64dba2a9a.

    Signed-off-by: Stephen Smalley
    Signed-off-by: Paul Moore

    Stephen Smalley
     
  • selinux_bprm_committed_creds()->__flush_signals() is not right, we
    shouldn't clear TIF_SIGPENDING unconditionally. There can be other
    reasons for signal_pending(): freezing(), JOBCTL_PENDING_MASK, and
    potentially more.

    Also change this code to check fatal_signal_pending() rather than
    SIGNAL_GROUP_EXIT, it looks a bit better.

    Now we can kill __flush_signals() before it finds another buggy user.

    Note: this code looks racy, we can flush a signal which was sent after
    the task SID has been updated.

    Signed-off-by: Oleg Nesterov
    Signed-off-by: Paul Moore

    Oleg Nesterov
     
  • This prints the 'sclass' field as string instead of index in unrecognized netlink message.
    The textual representation makes it easier to distinguish the right class.

    Signed-off-by: Marek Milkovic
    Acked-by: Stephen Smalley
    [PM: 80-char width fixes]
    Signed-off-by: Paul Moore

    Marek Milkovic
     

03 Jun, 2015

3 commits

  • James Morris
     
  • Smack onlycap allows limiting of CAP_MAC_ADMIN and CAP_MAC_OVERRIDE to
    processes running with the configured label. But having single privileged
    label is not enough in some real use cases. On a complex system like Tizen,
    there maybe few programs that need to configure Smack policy in run-time
    and running them all with a single label is not always practical.
    This patch extends onlycap feature for multiple labels. They are configured
    in the same smackfs "onlycap" interface, separated by spaces.

    Signed-off-by: Rafal Krypa

    Rafal Krypa
     
  • Use proper RCU functions and read locking in smackfs seq_operations.

    Smack gets away with not using proper RCU functions in smackfs, because
    it never removes entries from these lists. But now one list will be
    needed (with interface in smackfs) that will have both elements added and
    removed to it.
    This change will also help any future changes implementing removal of
    unneeded entries from other Smack lists.

    The patch also fixes handling of pos argument in smk_seq_start and
    smk_seq_next. This fixes a bug in case when smackfs is read with a small
    buffer:

    Kernel panic - not syncing: Kernel mode fault at addr 0xfa0000011b
    CPU: 0 PID: 1292 Comm: dd Not tainted 4.1.0-rc1-00012-g98179b8 #13
    Stack:
    00000003 0000000d 7ff39e48 7f69fd00
    7ff39ce0 601ae4b0 7ff39d50 600e587b
    00000010 6039f690 7f69fd40 00612003
    Call Trace:
    [] load2_seq_show+0x19/0x1d
    [] seq_read+0x168/0x331
    [] __vfs_read+0x21/0x101
    [] ? security_file_permission+0xf8/0x105
    [] ? rw_verify_area+0x86/0xe2
    [] vfs_read+0xa1/0x14c
    [] SyS_read+0x57/0xa0
    [] handle_syscall+0x60/0x80
    [] userspace+0x442/0x548
    [] ? interrupt_end+0x0/0x80
    [] ? copy_chunk_to_user+0x0/0x2b
    [] ? save_registers+0x1f/0x39
    [] ? arch_prctl+0xf5/0x170
    [] fork_handler+0x85/0x87

    Signed-off-by: Rafal Krypa

    Rafal Krypa
     

30 May, 2015

1 commit


28 May, 2015

1 commit

  • Most code already uses consts for the struct kernel_param_ops,
    sweep the kernel for the last offending stragglers. Other than
    include/linux/moduleparam.h and kernel/params.c all other changes
    were generated with the following Coccinelle SmPL patch. Merge
    conflicts between trees can be handled with Coccinelle.

    In the future git could get Coccinelle merge support to deal with
    patch --> fail --> grammar --> Coccinelle --> new patch conflicts
    automatically for us on patches where the grammar is available and
    the patch is of high confidence. Consider this a feature request.

    Test compiled on x86_64 against:

    * allnoconfig
    * allmodconfig
    * allyesconfig

    @ const_found @
    identifier ops;
    @@

    const struct kernel_param_ops ops = {
    };

    @ const_not_found depends on !const_found @
    identifier ops;
    @@

    -struct kernel_param_ops ops = {
    +const struct kernel_param_ops ops = {
    };

    Generated-by: Coccinelle SmPL
    Cc: Rusty Russell
    Cc: Junio C Hamano
    Cc: Andrew Morton
    Cc: Kees Cook
    Cc: Tejun Heo
    Cc: Ingo Molnar
    Cc: cocci@systeme.lip6.fr
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: Rusty Russell

    Luis R. Rodriguez
     

22 May, 2015

8 commits

  • This patch adds the iint associated to the current inode as a new
    parameter of ima_add_violation(). The passed iint is always not NULL
    if a violation is detected. This modification will be used to determine
    the inode for which there is a violation.

    Since the 'd' and 'd-ng' template field init() functions were detecting
    a violation from the value of the iint pointer, they now check the new
    field 'violation', added to the 'ima_event_data' structure.

    Changelog:
    - v1:
    - modified an old comment (Roberto Sassu)

    Signed-off-by: Roberto Sassu
    Signed-off-by: Mimi Zohar

    Roberto Sassu
     
  • All event related data has been wrapped into the new 'ima_event_data'
    structure. The main benefit of this patch is that a new information
    can be made available to template fields initialization functions
    by simply adding a new field to the new structure instead of modifying
    the definition of those functions.

    Changelog:
    - v2:
    - f_dentry replaced with f_path.dentry (Roberto Sassu)
    - removed declaration of temporary variables in template field functions
    when possible (suggested by Dmitry Kasatkin)

    Signed-off-by: Roberto Sassu
    Signed-off-by: Mimi Zohar

    Roberto Sassu
     
  • This patch adds validity checks for 'path' parameter and
    makes it const.

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     
  • EVM needs to be atomically updated when removing xattrs.
    Otherwise concurrent EVM verification may fail in between.
    This patch fixes by moving i_mutex unlocking after calling
    EVM hook. fsnotify_xattr() is also now called while locked
    the same way as it is done in __vfs_setxattr_noperm.

    Changelog:
    - remove unused 'inode' variable.

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     
  • To prevent offline stripping of existing file xattrs and relabeling of
    them at runtime, EVM allows only newly created files to be labeled. As
    pseudo filesystems are not persistent, stripping of xattrs is not a
    concern.

    Some LSMs defer file labeling on pseudo filesystems. This patch
    permits the labeling of existing files on pseudo files systems.

    Signed-off-by: Mimi Zohar

    Mimi Zohar
     
  • CONFIG_IMA_X509_PATH is always defined. This patch removes the
    IMA_X509_PATH definition and uses CONFIG_IMA_X509_PATH.

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     
  • File hashes are automatically set and updated and should not be
    manually set. This patch limits file hash setting to fix and log
    modes.

    Signed-off-by: Dmitry Kasatkin
    Signed-off-by: Mimi Zohar

    Dmitry Kasatkin
     
  • Include don't appraise or measure rules for the NSFS filesystem
    in the builtin ima_tcb and ima_appraise_tcb policies.

    Changelog:
    - Update documentation

    Signed-off-by: Mimi Zohar
    Cc: stable@vger.kernel.org # 3.19

    Mimi Zohar