05 Aug, 2020

1 commit

  • Pull audit updates from Paul Moore:
    "Aside from some smaller bug fixes, here are the highlights:

    - add a new backlog wait metric to the audit status message, this is
    intended to help admins determine how long processes have been
    waiting for the audit backlog queue to clear

    - generate audit records for nftables configuration changes

    - generate CWD audit records for for the relevant LSM audit records"

    * tag 'audit-pr-20200803' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit:
    audit: report audit wait metric in audit status reply
    audit: purge audit_log_string from the intra-kernel audit API
    audit: issue CWD record to accompany LSM_AUDIT_DATA_* records
    audit: use the proper gfp flags in the audit_log_nfcfg() calls
    audit: remove unused !CONFIG_AUDITSYSCALL __audit_inode* stubs
    audit: add gfp parameter to audit_log_nfcfg
    audit: log nftables configuration change events
    audit: Use struct_size() helper in alloc_chunk

    Linus Torvalds
     

29 Jul, 2020

1 commit

  • Unfortunately the commit listed in the subject line above failed
    to ensure that the task's audit_context was properly initialized/set
    before enabling the "accompanying records". Depending on the
    situation, the resulting audit_context could have invalid values in
    some of it's fields which could cause a kernel panic/oops when the
    task/syscall exists and the audit records are generated.

    We will revisit the original patch, with the necessary fixes, in a
    future kernel but right now we just want to fix the kernel panic
    with the least amount of added risk.

    Cc: stable@vger.kernel.org
    Fixes: 1320a4052ea1 ("audit: trigger accompanying records when no rules present")
    Reported-by: j2468h@googlemail.com
    Signed-off-by: Paul Moore

    Paul Moore
     

09 Jul, 2020

1 commit

  • The LSM_AUDIT_DATA_* records for PATH, FILE, IOCTL_OP, DENTRY and INODE
    are incomplete without the task context of the AUDIT Current Working
    Directory record. Add it.

    This record addition can't use audit_dummy_context to determine whether
    or not to store the record information since the LSM_AUDIT_DATA_*
    records are initiated by various LSMs independent of any audit rules.
    context->in_syscall is used to determine if it was called in user
    context like audit_getname.

    Please see the upstream issue
    https://github.com/linux-audit/audit-kernel/issues/96

    Adapted from Vladis Dronov's v2 patch.

    Signed-off-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

30 Jun, 2020

1 commit

  • Fixed an inconsistent use of GFP flags in nft_obj_notify() that used
    GFP_KERNEL when a GFP flag was passed in to that function. Given this
    allocated memory was then used in audit_log_nfcfg() it led to an audit
    of all other GFP allocations in net/netfilter/nf_tables_api.c and a
    modification of audit_log_nfcfg() to accept a GFP parameter.

    Reported-by: Dan Carptenter
    Signed-off-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

24 Jun, 2020

1 commit

  • iptables, ip6tables, arptables and ebtables table registration,
    replacement and unregistration configuration events are logged for the
    native (legacy) iptables setsockopt api, but not for the
    nftables netlink api which is used by the nft-variant of iptables in
    addition to nftables itself.

    Add calls to log the configuration actions in the nftables netlink api.

    This uses the same NETFILTER_CFG record format but overloads the table
    field.

    type=NETFILTER_CFG msg=audit(2020-05-28 17:46:41.878:162) : table=?:0;?:0 family=unspecified entries=2 op=nft_register_gen pid=396 subj=system_u:system_r:firewalld_t:s0 comm=firewalld
    ...
    type=NETFILTER_CFG msg=audit(2020-05-28 17:46:41.878:162) : table=firewalld:1;?:0 family=inet entries=0 op=nft_register_table pid=396 subj=system_u:system_r:firewalld_t:s0 comm=firewalld
    ...
    type=NETFILTER_CFG msg=audit(2020-05-28 17:46:41.911:163) : table=firewalld:1;filter_FORWARD:85 family=inet entries=8 op=nft_register_chain pid=396 subj=system_u:system_r:firewalld_t:s0 comm=firewalld
    ...
    type=NETFILTER_CFG msg=audit(2020-05-28 17:46:41.911:163) : table=firewalld:1;filter_FORWARD:85 family=inet entries=101 op=nft_register_rule pid=396 subj=system_u:system_r:firewalld_t:s0 comm=firewalld
    ...
    type=NETFILTER_CFG msg=audit(2020-05-28 17:46:41.911:163) : table=firewalld:1;__set0:87 family=inet entries=87 op=nft_register_setelem pid=396 subj=system_u:system_r:firewalld_t:s0 comm=firewalld
    ...
    type=NETFILTER_CFG msg=audit(2020-05-28 17:46:41.911:163) : table=firewalld:1;__set0:87 family=inet entries=0 op=nft_register_set pid=396 subj=system_u:system_r:firewalld_t:s0 comm=firewalld

    For further information please see issue
    https://github.com/linux-audit/audit-kernel/issues/124

    Signed-off-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

21 May, 2020

1 commit

  • Some table unregister actions seem to be initiated by the kernel to
    garbage collect unused tables that are not initiated by any userspace
    actions. It was found to be necessary to add the subject credentials to
    cover this case to reveal the source of these actions. A sample record:

    The uid, auid, tty, ses and exe fields have not been included since they
    are in the SYSCALL record and contain nothing useful in the non-user
    context.

    Here are two sample orphaned records:

    type=NETFILTER_CFG msg=audit(2020-05-20 12:14:36.505:5) : table=filter family=ipv4 entries=0 op=register pid=1 subj=kernel comm=swapper/0

    type=NETFILTER_CFG msg=audit(2020-05-20 12:15:27.701:301) : table=nat family=bridge entries=0 op=unregister pid=30 subj=system_u:system_r:kernel_t:s0 comm=kworker/u4:1

    Signed-off-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

02 May, 2020

1 commit


29 Apr, 2020

2 commits

  • Audit the action of unregistering ebtables and x_tables.

    See: https://github.com/linux-audit/audit-kernel/issues/44

    Signed-off-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     
  • NETFILTER_CFG record generation was inconsistent for x_tables and
    ebtables configuration changes. The call was needlessly messy and there
    were supporting records missing at times while they were produced when
    not requested. Simplify the logging call into a new audit_log_nfcfg
    call. Honour the audit_enabled setting while more consistently
    recording information including supporting records by tidying up dummy
    checks.

    Add an op= field that indicates the operation being performed (register
    or replace).

    Here is the enhanced sample record:
    type=NETFILTER_CFG msg=audit(1580905834.919:82970): table=filter family=2 entries=83 op=replace

    Generate audit NETFILTER_CFG records on ebtables table registration.
    Previously this was being done for x_tables registration and replacement
    operations and ebtables table replacement only.

    See: https://github.com/linux-audit/audit-kernel/issues/25
    See: https://github.com/linux-audit/audit-kernel/issues/35
    See: https://github.com/linux-audit/audit-kernel/issues/43

    Signed-off-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

12 Mar, 2020

1 commit

  • When there are no audit rules registered, mandatory records (config,
    etc.) are missing their accompanying records (syscall, proctitle, etc.).

    This is due to audit context dummy set on syscall entry based on absence
    of rules that signals that no other records are to be printed.

    Clear the dummy bit if any record is generated.

    The proctitle context and dummy checks are pointless since the
    proctitle record will not be printed if no syscall records are printed.

    Please see upstream github issue
    https://github.com/linux-audit/audit-kernel/issues/120

    Signed-off-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

29 May, 2019

1 commit

  • The field operator is ignored on several string fields. WATCH, DIR,
    PERM and FILETYPE field operators are completely ignored and meaningless
    since the op is not referenced in audit_filter_rules(). Range and
    bitwise operators are already addressed in ghak73.

    Honour the operator for WATCH, DIR, PERM, FILETYPE fields as is done in
    the EXE field.

    Please see github issue
    https://github.com/linux-audit/audit-kernel/issues/114

    Signed-off-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

24 May, 2019

1 commit

  • Provide a method to filter out sockaddr and bind calls by network
    address family.

    Existing SOCKADDR records are listed for any network activity.
    Implement the AUDIT_SADDR_FAM field selector to be able to classify or
    limit records to specific network address families, such as AF_INET or
    AF_INET6.

    An example of a network record that is unlikely to be useful and flood
    the logs:

    type=SOCKADDR msg=audit(07/27/2017 12:18:27.019:845) : saddr={ fam=local
    path=/var/run/nscd/socket }
    type=SYSCALL msg=audit(07/27/2017 12:18:27.019:845) : arch=x86_64
    syscall=connect success=no exit=ENOENT(No such file or directory) a0=0x3
    a1=0x7fff229c4980 a2=0x6e a3=0x6 items=1 ppid=3301 pid=6145 auid=sgrubb
    uid=sgrubb gid=sgrubb euid=sgrubb suid=sgrubb fsuid=sgrubb egid=sgrubb
    sgid=sgrubb fsgid=sgrubb tty=pts3 ses=4 comm=bash exe=/usr/bin/bash
    subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    key=network-test

    Please see the audit-testsuite PR at
    https://github.com/linux-audit/audit-testsuite/pull/87
    Please see the github issue
    https://github.com/linux-audit/audit-kernel/issues/64
    Please see the github issue for the accompanying userspace support
    https://github.com/linux-audit/audit-userspace/issues/93

    Signed-off-by: Richard Guy Briggs
    [PM: merge fuzz in auditfilter.c]
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

22 May, 2019

1 commit

  • When a process signals the audit daemon (shutdown, rotate, resume,
    reconfig) but syscall auditing is not enabled, we still want to know the
    identity of the process sending the signal to the audit daemon.

    Move audit_signal_info() out of syscall auditing to general auditing but
    create a new function audit_signal_info_syscall() to take care of the
    syscall dependent parts for when syscall auditing is enabled.

    Please see the github kernel audit issue
    https://github.com/linux-audit/audit-kernel/issues/111

    Signed-off-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

08 May, 2019

1 commit

  • Pull misc dcache updates from Al Viro:
    "Most of this pile is putting name length into struct name_snapshot and
    making use of it.

    The beginning of this series ("ovl_lookup_real_one(): don't bother
    with strlen()") ought to have been split in two (separate switch of
    name_snapshot to struct qstr from overlayfs reaping the trivial
    benefits of that), but I wanted to avoid a rebase - by the time I'd
    spotted that it was (a) in -next and (b) close to 5.1-final ;-/"

    * 'work.dcache' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    audit_compare_dname_path(): switch to const struct qstr *
    audit_update_watch(): switch to const struct qstr *
    inotify_handle_event(): don't bother with strlen()
    fsnotify: switch send_to_group() and ->handle_event to const struct qstr *
    fsnotify(): switch to passing const struct qstr * for file_name
    switch fsnotify_move() to passing const struct qstr * for old_name
    ovl_lookup_real_one(): don't bother with strlen()
    sysv: bury the broken "quietly truncate the long filenames" logics
    nsfs: unobfuscate
    unexport d_alloc_pseudo()

    Linus Torvalds
     

29 Apr, 2019

1 commit


16 Apr, 2019

2 commits

  • Emit an audit record every time selected NTP parameters are modified
    from userspace (via adjtimex(2) or clock_adjtime(2)). These parameters
    may be used to indirectly change system clock, and thus their
    modifications should be audited.

    Such events will now generate records of type AUDIT_TIME_ADJNTPVAL
    containing the following fields:
    - op -- which value was adjusted:
    - offset -- corresponding to the time_offset variable
    - freq -- corresponding to the time_freq variable
    - status -- corresponding to the time_status variable
    - adjust -- corresponding to the time_adjust variable
    - tick -- corresponding to the tick_usec variable
    - tai -- corresponding to the timekeeping's TAI offset
    - old -- the old value
    - new -- the new value

    Example records:

    type=TIME_ADJNTPVAL msg=audit(1530616044.507:7): op=status old=64 new=8256
    type=TIME_ADJNTPVAL msg=audit(1530616044.511:11): op=freq old=0 new=49180377088000

    The records of this type will be associated with the corresponding
    syscall records.

    An overview of parameter changes that can be done via do_adjtimex()
    (based on information from Miroslav Lichvar) and whether they are
    audited:
    __timekeeping_set_tai_offset() -- sets the offset from the
    International Atomic Time
    (AUDITED)
    NTP variables:
    time_offset -- can adjust the clock by up to 0.5 seconds per call
    and also speed it up or slow down by up to about
    0.05% (43 seconds per day) (AUDITED)
    time_freq -- can speed up or slow down by up to about 0.05%
    (AUDITED)
    time_status -- can insert/delete leap seconds and it also enables/
    disables synchronization of the hardware real-time
    clock (AUDITED)
    time_maxerror, time_esterror -- change error estimates used to
    inform userspace applications
    (NOT AUDITED)
    time_constant -- controls the speed of the clock adjustments that
    are made when time_offset is set (NOT AUDITED)
    time_adjust -- can temporarily speed up or slow down the clock by up
    to 0.05% (AUDITED)
    tick_usec -- a more extreme version of time_freq; can speed up or
    slow down the clock by up to 10% (AUDITED)

    Signed-off-by: Ondrej Mosnacek
    Reviewed-by: Richard Guy Briggs
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Paul Moore

    Ondrej Mosnacek
     
  • Emit an audit record whenever the system clock is changed (i.e. shifted
    by a non-zero offset) by a syscall from userspace. The syscalls than can
    (at the time of writing) trigger such record are:
    - settimeofday(2), stime(2), clock_settime(2) -- via
    do_settimeofday64()
    - adjtimex(2), clock_adjtime(2) -- via do_adjtimex()

    The new records have type AUDIT_TIME_INJOFFSET and contain the following
    fields:
    - sec -- the 'seconds' part of the offset
    - nsec -- the 'nanoseconds' part of the offset

    Example record (time was shifted backwards by ~15.875 seconds):

    type=TIME_INJOFFSET msg=audit(1530616049.652:13): sec=-16 nsec=124887145

    The records of this type will be associated with the corresponding
    syscall records.

    Signed-off-by: Ondrej Mosnacek
    Reviewed-by: Richard Guy Briggs
    Reviewed-by: Thomas Gleixner
    [PM: fixed a line width problem in __audit_tk_injoffset()]
    Signed-off-by: Paul Moore

    Ondrej Mosnacek
     

09 Apr, 2019

1 commit

  • The original conditions that led to the use of list_empty() to optimize
    list_for_each_entry_rcu() in auditfilter.c and auditsc.c code have been
    removed without removing the list_empty() call, but this code example
    has been copied several times. Remove the unnecessary list_empty()
    calls.

    Please see upstream github issue
    https://github.com/linux-audit/audit-kernel/issues/112

    Signed-off-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

21 Mar, 2019

2 commits

  • This argument is required to extend the generic ptrace API with
    PTRACE_GET_SYSCALL_INFO request: syscall_get_arch() is going
    to be called from ptrace_request() along with syscall_get_nr(),
    syscall_get_arguments(), syscall_get_error(), and
    syscall_get_return_value() functions with a tracee as their argument.

    The primary intent is that the triple (audit_arch, syscall_nr, arg1..arg6)
    should describe what system call is being called and what its arguments
    are.

    Reverts: 5e937a9ae913 ("syscall_get_arch: remove useless function arguments")
    Reverts: 1002d94d3076 ("syscall.h: fix doc text for syscall_get_arch()")
    Reviewed-by: Andy Lutomirski # for x86
    Reviewed-by: Palmer Dabbelt
    Acked-by: Paul Moore
    Acked-by: Paul Burton # MIPS parts
    Acked-by: Michael Ellerman (powerpc)
    Acked-by: Kees Cook # seccomp parts
    Acked-by: Mark Salter # for the c6x bit
    Cc: Elvira Khabirova
    Cc: Eugene Syromyatnikov
    Cc: Oleg Nesterov
    Cc: x86@kernel.org
    Cc: linux-alpha@vger.kernel.org
    Cc: linux-snps-arc@lists.infradead.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-c6x-dev@linux-c6x.org
    Cc: uclinux-h8-devel@lists.sourceforge.jp
    Cc: linux-hexagon@vger.kernel.org
    Cc: linux-ia64@vger.kernel.org
    Cc: linux-m68k@lists.linux-m68k.org
    Cc: linux-mips@vger.kernel.org
    Cc: nios2-dev@lists.rocketboards.org
    Cc: openrisc@lists.librecores.org
    Cc: linux-parisc@vger.kernel.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-riscv@lists.infradead.org
    Cc: linux-s390@vger.kernel.org
    Cc: linux-sh@vger.kernel.org
    Cc: sparclinux@vger.kernel.org
    Cc: linux-um@lists.infradead.org
    Cc: linux-xtensa@linux-xtensa.org
    Cc: linux-arch@vger.kernel.org
    Cc: linux-audit@redhat.com
    Signed-off-by: Dmitry V. Levin
    Signed-off-by: Paul Moore

    Dmitry V. Levin
     
  • Fix sparse warning:

    kernel/auditsc.c:1150:6: warning: symbol 'audit_log_cap' was not declared. Should it be static?
    kernel/auditsc.c:1908:6: warning: symbol 'audit_copy_inode' was not declared. Should it be static?

    Signed-off-by: YueHaibing
    Acked-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    YueHaibing
     

19 Mar, 2019

1 commit

  • module.name will be allocated unconditionally when auditing load
    module, and audit_log_start() can fail with other reasons, or
    audit_log_exit maybe not called, caused module.name is not freed

    so free module.name in audit_free_context and __audit_syscall_exit

    unreferenced object 0xffff88af90837d20 (size 8):
    comm "modprobe", pid 1036, jiffies 4294704867 (age 3069.138s)
    hex dump (first 8 bytes):
    69 78 67 62 65 00 ff ff ixgbe...
    backtrace:
    [] __audit_log_kern_module+0x33/0x80
    [] load_module+0x64f/0x3850
    [] __do_sys_init_module+0x218/0x250
    [] do_syscall_64+0x117/0x400
    [] entry_SYSCALL_64_after_hwframe+0x49/0xbe
    [] 0xffffffffffffffff

    Fixes: ca86cad7380e3 ("audit: log module name on init_module")
    Signed-off-by: Zhang Yu
    Signed-off-by: Li RongQing
    [PM: manual merge fixup in __audit_syscall_exit()]
    Signed-off-by: Paul Moore

    Li RongQing
     

04 Feb, 2019

1 commit

  • Remove audit_context from struct task_struct and struct audit_buffer
    when CONFIG_AUDIT is enabled but CONFIG_AUDITSYSCALL is not.

    Also, audit_log_name() (and supporting inode and fcaps functions) should
    have been put back in auditsc.c when soft and hard link logging was
    normalized since it is only used by syscall auditing.

    See github issue https://github.com/linux-audit/audit-kernel/issues/105

    Signed-off-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

01 Feb, 2019

1 commit

  • The audit_rule_match() struct audit_context *actx parameter is not used
    by any in-tree consumers (selinux, apparmour, integrity, smack).

    The audit context is an internal audit structure that should only be
    accessed by audit accessor functions.

    It was part of commit 03d37d25e0f9 ("LSM/Audit: Introduce generic
    Audit LSM hooks") but appears to have never been used.

    Remove it.

    Please see the github issue
    https://github.com/linux-audit/audit-kernel/issues/107

    Signed-off-by: Richard Guy Briggs
    [PM: fixed the referenced commit title]
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

31 Jan, 2019

1 commit

  • Don't fetch fcaps when umount2 is called to avoid a process hang while
    it waits for the missing resource to (possibly never) re-appear.

    Note the comment above user_path_mountpoint_at():
    * A umount is a special case for path walking. We're not actually interested
    * in the inode in this situation, and ESTALE errors can be a problem. We
    * simply want track down the dentry and vfsmount attached at the mountpoint
    * and avoid revalidating the last component.

    This can happen on ceph, cifs, 9p, lustre, fuse (gluster) or NFS.

    Please see the github issue tracker
    https://github.com/linux-audit/audit-kernel/issues/100

    Signed-off-by: Richard Guy Briggs
    [PM: merge fuzz in audit_log_fcaps()]
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

26 Jan, 2019

3 commits

  • Like commit 42d5e37654e4 ("audit: filter PATH records keyed on
    filesystem magic") that addresses
    https://github.com/linux-audit/audit-kernel/issues/8

    Any user or remote filesystem could become unavailable and effectively
    block on a forced unmount.

    -a always,exit -S umount2 -F key=umount2

    Provide a method to ignore these user and remote filesystems to prevent
    them from being impossible to unmount.

    Extend the "AUDIT_FILTER_FS" filter that uses the field type
    AUDIT_FSTYPE keying off the filesystem 4-octet hexadecimal magic
    identifier to filter specific filesystems to cover audit_inode() to address
    this blockage.

    An example rule would look like:
    -a never,filesystem -F fstype=0x517B -F key=ignore_smb
    -a never,filesystem -F fstype=0x6969 -F key=ignore_nfs

    Arguably the better way to address this issue is to disable auditing
    processes that touch removable filesystems.

    Note: refactor __audit_inode_child() to remove two levels of if
    indentation.

    Please see the github issue tracker
    https://github.com/linux-audit/audit-kernel/issues/100

    Signed-off-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     
  • V3 namespaced file capabilities were introduced in
    commit 8db6c34f1dbc ("Introduce v3 namespaced file capabilities")

    Add support for these by adding the "frootid" field to the existing
    fcaps fields in the NAME and BPRM_FCAPS records.

    Please see github issue
    https://github.com/linux-audit/audit-kernel/issues/103

    Signed-off-by: Richard Guy Briggs
    Acked-by: Serge Hallyn
    [PM: comment tweak to fit an 80 char line width]
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     
  • loginuid and sessionid (and audit_log_session_info) should be part of
    CONFIG_AUDIT scope and not CONFIG_AUDITSYSCALL since it is used in
    CONFIG_CHANGE, ANOM_LINK, FEATURE_CHANGE (and INTEGRITY_RULE), none of
    which are otherwise dependent on AUDITSYSCALL.

    Please see github issue
    https://github.com/linux-audit/audit-kernel/issues/104

    Signed-off-by: Richard Guy Briggs
    [PM: tweaked subject line for better grep'ing]
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

15 Jan, 2019

1 commit

  • Since the context is derived from the task parameter handed to
    __audit_free(), hand the context to audit_kill_trees() so it can be used
    to associate with a syscall record. This requires adding the context
    parameter to kill_rules() rather than using the current audit_context.

    The callers of trim_marked() and evict_chunk() still have their context.

    The EOE record was being issued prior to the pruning of the killed_tree
    list.

    Move the kill_trees call before the audit_log_exit call in
    __audit_free() and __audit_syscall_exit() so that any pruned trees
    CONFIG_CHANGE records are included with the associated syscall event by
    the user library due to the EOE record flagging the end of the event.

    See: https://github.com/linux-audit/audit-kernel/issues/50
    See: https://github.com/linux-audit/audit-kernel/issues/59

    Signed-off-by: Richard Guy Briggs
    [PM: fixed merge fuzz in kernel/audit_tree.c]
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

27 Nov, 2018

2 commits

  • There are many places, notably audit_log_task_info() and
    audit_log_exit(), that take task_struct pointers but in reality they
    are always working on the current task. This patch eliminates the
    task_struct arguments and uses current directly which allows a number
    of cleanups as well.

    Acked-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Paul Moore
     
  • There are some cases where we are making multiple audit_log_format()
    calls in a row, for no apparent reason. Squash these down to a
    single audit_log_format() call whenever possible.

    Acked-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Paul Moore
     

20 Nov, 2018

1 commit


06 Nov, 2018

1 commit

  • Empty executable arguments were being skipped when printing out the list
    of arguments in an EXECVE record, making it appear they were somehow
    lost. Include empty arguments as an itemized empty string.

    Reproducer:
    autrace /bin/ls "" "/etc"
    ausearch --start recent -m execve -i | grep EXECVE
    type=EXECVE msg=audit(10/03/2018 13:04:03.208:1391) : argc=3 a0=/bin/ls a2=/etc

    With fix:
    type=EXECVE msg=audit(10/03/2018 21:51:38.290:194) : argc=3 a0=/bin/ls a1= a2=/etc
    type=EXECVE msg=audit(1538617898.290:194): argc=3 a0="/bin/ls" a1="" a2="/etc"

    Passes audit-testsuite. GH issue tracker at
    https://github.com/linux-audit/audit-kernel/issues/99

    Signed-off-by: Richard Guy Briggs
    [PM: cleaned up the commit metadata]
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

16 Aug, 2018

1 commit

  • Pull audit patches from Paul Moore:
    "Twelve audit patches for v4.19 and they run the full gamut from fixes
    to features.

    Notable changes include the ability to use the "exe" audit filter
    field in a wider variety of filter types, a fix for our comparison of
    GID/EGID in audit filter rules, better association of related audit
    records (connecting related audit records together into one audit
    event), and a fix for a potential use-after-free in audit_add_watch().

    All the patches pass the audit-testsuite and merge cleanly on your
    current master branch"

    * tag 'audit-pr-20180814' of git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit:
    audit: fix use-after-free in audit_add_watch
    audit: use ktime_get_coarse_real_ts64() for timestamps
    audit: use ktime_get_coarse_ts64() for time access
    audit: simplify audit_enabled check in audit_watch_log_rule_change()
    audit: check audit_enabled in audit_tree_log_remove_rule()
    cred: conditionally declare groups-related functions
    audit: eliminate audit_enabled magic number comparison
    audit: rename FILTER_TYPE to FILTER_EXCLUDE
    audit: Fix extended comparison of GID/EGID
    audit: tie ANOM_ABEND records to syscall
    audit: tie SECCOMP records to syscall
    audit: allow other filter list types for AUDIT_EXE

    Linus Torvalds
     

31 Jul, 2018

1 commit

  • The variable 'context->module.name' may be null pointer when
    kmalloc return null, so it's better to check it before using
    to avoid null dereference.
    Another one more thing this patch does is using kstrdup instead
    of (kmalloc + strcpy), and signal a lost record via audit_log_lost.

    Cc: stable@vger.kernel.org # 4.11
    Signed-off-by: Yi Wang
    Reviewed-by: Jiang Biao
    Reviewed-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Yi Wang
     

18 Jul, 2018

1 commit

  • Commit c72051d5778a ("audit: use ktime_get_coarse_ts64() for time
    access") converted audit's use of current_kernel_time64() to the
    new ktime_get_coarse_ts64() function. Unfortunately this resulted
    in incorrect timestamps, e.g. events stamped with the year 1969
    despite it being 2018. This patch corrects this by using
    ktime_get_coarse_real_ts64() just like the current_kernel_time64()
    wrapper.

    Fixes: c72051d5778a ("audit: use ktime_get_coarse_ts64() for time access")
    Reviewed-by: Arnd Bergmann
    Signed-off-by: Paul Moore

    Paul Moore
     

03 Jul, 2018

1 commit


19 Jun, 2018

3 commits

  • The audit_filter_rules() function in auditsc.c used the in_[e]group_p()
    functions to check GID/EGID match, but these functions use the current
    task's credentials, while the comparison should use the credentials of
    the task given to audit_filter_rules() as a parameter (tsk).

    Note that we can use group_search(cred->group_info, ...) as a
    replacement for both in_group_p and in_egroup_p as these functions only
    compare the parameter to cred->fsgid/egid and then call group_search.

    In fact, the usage of in_group_p was even more incorrect: it compares to
    cred->fsgid (which is usually equal to cred->egid) and not cred->gid.

    GitHub issue:
    https://github.com/linux-audit/audit-kernel/issues/82

    Fixes: 37eebe39c973 ("audit: improve GID/EGID comparation logic")
    Signed-off-by: Ondrej Mosnacek
    Signed-off-by: Paul Moore

    Ondrej Mosnáček
     
  • Since core dump events are triggered by user activity, tie the
    ANOM_ABEND record to the syscall record to collect all records from the
    same event.

    See: https://github.com/linux-audit/audit-kernel/issues/88

    Signed-off-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     
  • Since seccomp events are triggered by user activity, tie the SECCOMP
    record to the syscall record to collect all records from the same event.

    See: https://github.com/linux-audit/audit-kernel/issues/87

    Signed-off-by: Richard Guy Briggs
    Signed-off-by: Paul Moore

    Richard Guy Briggs
     

22 May, 2018

1 commit

  • The audit_filter_rules() function in auditsc.c compared the session ID
    with the credentials of the current task, while it should use the
    credentials of the task given to audit_filter_rules() as a parameter
    (tsk).

    GitHub issue:
    https://github.com/linux-audit/audit-kernel/issues/82

    Fixes: 8fae47705685 ("audit: add support for session ID user filter")
    Signed-off-by: Ondrej Mosnacek
    Reviewed-by: Richard Guy Briggs
    [PM: not user visible, dropped stable]
    Signed-off-by: Paul Moore

    Ondrej Mosnáček