#
267654 |
|
19-Jun-2014 |
gjb |
Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
244324 |
|
16-Dec-2012 |
pjd |
MFC r243719,r243720,r243722,r243723,r243726,r243727,r243746:
r243719:
IFp4 @208450:
Remove redundant call to AUDIT_ARG_UPATH1(). Path will be remembered by the following NDINIT(AUDITVNODE1) call.
Sponsored by: The FreeBSD Foundation (auditdistd)
r243720:
IFp4 @208381:
For VOP_GETATTR() we just need vnode to be shared-locked.
Sponsored by: The FreeBSD Foundation (auditdistd)
r243722:
IFp4 @208382:
Currently on each record write we call VFS_STATFS() to get available space on the file system as well as VOP_GETATTR() to get trail file size.
We can assume that trail file is only updated by the audit worker, so instead of asking for file size on every write, get file size on trail switch only (it should be zero, but it's not expensive) and use global variable audit_size protected by the audit worker lock to keep track of trail file's size.
This eliminates VOP_GETATTR() call for every write. VFS_STATFS() is satisfied from in-memory data (mount->mnt_stat), so shouldn't be expensive.
Sponsored by: The FreeBSD Foundation (auditdistd)
r243723:
IFp4 @208383:
Currently when we discover that trail file is greater than configured limit we send AUDIT_TRIGGER_ROTATE_KERNEL trigger to the auditd daemon once. If for some reason auditd didn't rotate trail file it will never be rotated.
Change it by sending the trigger when trail file size grows by the configured limit. For example if the limit is 1MB, we will send trigger on 1MB, 2MB, 3MB, etc.
This is also needed for the auditd change that will be committed soon where auditd may ignore the trigger - it might be ignored if kernel requests the trail file to be rotated too quickly (often than once a second) which would result in overwriting previous trail file.
Sponsored by: The FreeBSD Foundation (auditdistd)
r243726:
IFp4 @208451:
Fix path handling for *at() syscalls.
Before the change directory descriptor was totally ignored, so the relative path argument was appended to current working directory path and not to the path provided by descriptor, thus wrong paths were stored in audit logs.
Now that we use directory descriptor in vfs_lookup, move AUDIT_ARG_UPATH1() and AUDIT_ARG_UPATH2() calls to the place where we hold file descriptors table lock, so we are sure paths will be resolved according to the same directory in audit record and in actual operation.
Sponsored by: The FreeBSD Foundation (auditdistd) Reviewed by: rwatson
r243727:
IFp4 @208452:
Audit handling for missing events: - AUE_READLINKAT - AUE_FACCESSAT - AUE_MKDIRAT - AUE_MKFIFOAT - AUE_MKNODAT - AUE_SYMLINKAT
Sponsored by: FreeBSD Foundation (auditdistd)
r243746:
Fix one more compilation issue.
Sponsored by: FreeBSD Foundation (auditdistd)
|
#
225736 |
|
22-Sep-2011 |
kensmith |
Copy head to stable/9 as part of 9.0-RELEASE release cycle.
Approved by: re (implicit)
|
#
224181 |
|
18-Jul-2011 |
jonathan |
Provide ability to audit cap_rights_t arguments.
We wish to be able to audit capability rights arguments; this code provides the necessary infrastructure.
This commit does not, of itself, turn on such auditing for any system call; that should follow shortly.
Approved by: mentor (rwatson), re (Capsicum blanket) Sponsored by: Google Inc
|
#
207615 |
|
04-May-2010 |
csjp |
Add a case to make sure that internal audit records get converted to BSM format for lpathconf(2) events.
MFC after: 2 weeks
|
#
203328 |
|
31-Jan-2010 |
csjp |
Make sure we convert audit records that were produced as the result of the closefrom(2) syscall.
|
#
195925 |
|
28-Jul-2009 |
rwatson |
Audit file descriptors passed to fooat(2) system calls, which are used instead of the root/current working directory as the starting point for lookups. Up to two such descriptors can be audited. Add audit record BSM encoding for fooat(2).
Note: due to an error in the OpenBSM 1.1p1 configuration file, a further change is required to that file in order to fix openat(2) auditing.
Approved by: re (kib) Reviewed by: rdivacky (fooat(2) portions) Obtained from: TrustedBSD Project MFC after: 1 month
|
#
195291 |
|
02-Jul-2009 |
rwatson |
Create audit records for AUE_POSIX_OPENPT, currently w/o arguments.
Approved by: re (audit argument blanket)
|
#
195282 |
|
02-Jul-2009 |
rwatson |
Fix comment misthink.
Submitted by: b. f. <bf1783 at googlemail.com> Approved by: re (audit argument blanket) MFC after: 1 week
|
#
195280 |
|
02-Jul-2009 |
rwatson |
Clean up a number of aspects of token generation from audit arguments to system calls:
- Centralize generation of argument tokens for VM addresses in a macro, ADDR_TOKEN(), and properly encode 64-bit addresses in 64-bit arguments. - Fix up argument numbers across a large number of syscalls so that they match the numeric argument into the system call. - Don't audit the address argument to ioctl(2) or ptrace(2), but do keep generating tokens for mmap(2), minherit(2), since they relate to passing object access across execve(2).
Approved by: re (audit argument blanket) Obtained from: TrustedBSD Project MFC after: 1 week
|
#
195267 |
|
01-Jul-2009 |
rwatson |
For access(2) and eaccess(2), audit the requested access mode.
Approved by: re (audit argument blanket) MFC after: 3 days
|
#
195247 |
|
01-Jul-2009 |
rwatson |
When auditing unmount(2), capture FSID arguments as regular text strings rather than as paths, which would lead to them being treated as relative pathnames and hence confusingly converted into absolute pathnames.
Capture flags to unmount(2) via an argument token.
Approved by: re (audit argument blanket) MFC after: 3 days
|
#
195242 |
|
01-Jul-2009 |
rwatson |
Audit the file descriptor number passed to lseek(2).
Approved by: re (kib) MFC after: 3 days
|
#
195235 |
|
01-Jul-2009 |
rwatson |
udit the 'options' argument to wait4(2).
Approved by: re (kib) MFC after: 3 days
|
#
191270 |
|
19-Apr-2009 |
rwatson |
Merge OpenBSM 1.1 changes to the FreeBSD 8.x kernel:
- Add and use mapping of fcntl(2) commands to new BSM constant space. - Adopt (int) rather than (long) arguments to a number of auditon(2) commands, as has happened in Solaris, and add compatibility code to handle the old comments.
Note that BSM_PF_IEEE80211 is partially but not fully removed, as the userspace OpenBSM 1.1alpha5 code still depends on it. Once userspace is updated, I'll GCC the kernel constant.
MFC after: 2 weeks Sponsored by: Apple, Inc. Obtained from: TrustedBSD Project Portions submitted by: sson
|
#
188312 |
|
08-Feb-2009 |
rwatson |
Audit AUE_MAC_EXECVE; currently just the standard AUE_EXECVE arguments and not the label.
Obtained from: TrustedBSD Project Sponsored by: Apple, Inc. MFC after: 1 week
|
#
188311 |
|
08-Feb-2009 |
rwatson |
Audit the flag argument to the nfssvc(2) system call.
Obtained from: TrustedBSD Project Sponsored by: Apple, Inc.
|
#
186649 |
|
31-Dec-2008 |
rwatson |
Call au_errno_to_bsm() on the errno value passed into au_to_return32() to convert local FreeBSD error numbers into BSM error numbers.
Obtained from: TrustedBSD Project
|
#
185293 |
|
25-Nov-2008 |
rwatson |
Regularize /* FALLTHROUGH */ comments in the BSM event type switch, and add one that was missing.
MFC after: 3 weeks Coverity ID: 3960
|
#
184856 |
|
11-Nov-2008 |
csjp |
Add support for extended header BSM tokens. Currently we use the regular header tokens. The extended header tokens contain an IP or IPv6 address which makes it possible to identify which host an audit record came from when audit records are centralized.
If the host information has not been specified, the system will default to the old style headers. Otherwise, audit records that are created as a result of system calls will contain host information.
This implemented has been designed to be consistent with the Solaris implementation. Host information is set/retrieved using the A_GETKAUDIT and A_SETKAUDIT auditon(2) commands. These commands require that a pointer to a auditinfo_addr_t object is passed. Currently only IP and IPv6 address families are supported.
The users pace bits associated with this change will follow in an openbsm import.
Reviewed by: rwatson, (sson, wsalamon (older version)) MFC after: 1 month
|
#
182158 |
|
25-Aug-2008 |
rwatson |
More fully audit fexecve(2) and its arguments.
Obtained from: TrustedBSD Project Sponsored by: Google, Inc.
|
#
180716 |
|
22-Jul-2008 |
rwatson |
If an AUE_SYSCTL_NONADMIN audit event is selected, generate a record with equivilent content to AUE_SYSCTL.
Obtained from: Apple Inc. MFC after: 3 days
|
#
180715 |
|
22-Jul-2008 |
rwatson |
Further minor style fixes to audit.
Obtained from: Apple Inc. MFC after: 3 days
|
#
180712 |
|
22-Jul-2008 |
rwatson |
Remove unneeded \ at the end of a macro.
Obtained from: Apple Inc. MFC after: 3 days
|
#
180711 |
|
22-Jul-2008 |
rwatson |
Further minor white space tweaks.
Obtained from: Apple Inc. MFC after: 3 days
|
#
180709 |
|
22-Jul-2008 |
rwatson |
Generally avoid <space><tab> as a white space anomoly.
Obtained from: Apple Inc. MFC after: 3 days
|
#
180708 |
|
22-Jul-2008 |
rwatson |
Use #define<tab> rather than #define<space>.
Obtained from: Apple Inc. MFC after: 3 days
|
#
180706 |
|
22-Jul-2008 |
rwatson |
Comment fix.
Obtained from: Apple Inc. MFC after: 3 days
|
#
180704 |
|
22-Jul-2008 |
rwatson |
Comment typo fix.
Obtained from: Apple Inc. MFC after: 3 days
|
#
180701 |
|
22-Jul-2008 |
rwatson |
In preparation to sync Apple and FreeBSD versions of security audit, pick up the Apple Computer -> Apple change in their copyright and license templates.
Obtained from: Apple Inc. MFC after: 3 days
|
#
178186 |
|
13-Apr-2008 |
rwatson |
Use __FBSDID() for $FreeBSD$ IDs in the audit code.
MFC after: 3 days
|
#
176565 |
|
25-Feb-2008 |
rwatson |
Rename several audit functions in the global kernel symbol namespace to have audit_ on the front:
- canon_path -> audit_canon_path - msgctl_to_event -> audit_msgctl_to_event - semctl_to_event -> audit_semctl_to_event
MFC after: 1 month
|
#
175456 |
|
18-Jan-2008 |
csjp |
Fix gratuitous whitespace bug
MFC after: 1 week Obtained from: TrustedBSD Project
|
#
175455 |
|
18-Jan-2008 |
csjp |
Add a case for AUE_LISTEN. This removes the following console error message:
"BSM conversion requested for unknown event 43140"
It should be noted that we need to audit the fd argument for this system call.
Obtained from: TrustedBSD Project MFC after: 1 week
|
#
172995 |
|
25-Oct-2007 |
csjp |
Implement AUE_CORE, which adds process core dump support into the kernel. This change introduces audit_proc_coredump() which is called by coredump(9) to create an audit record for the coredump event. When a process dumps a core, it could be security relevant. It could be an indicator that a stack within the process has been overflowed with an incorrectly constructed malicious payload or a number of other events.
The record that is generated looks like this:
header,111,10,process dumped core,0,Thu Oct 25 19:36:29 2007, + 179 msec argument,0,0xb,signal path,/usr/home/csjp/test.core subject,csjp,csjp,staff,csjp,staff,1101,1095,50457,10.37.129.2 return,success,1 trailer,111
- We allocate a completely new record to make sure we arent clobbering the audit data associated with the syscall that produced the core (assuming the core is being generated in response to SIGABRT and not an invalid memory access). - Shuffle around expand_name() so we can use the coredump name at the very beginning of the coredump call. Make sure we free the storage referenced by "name" if we need to bail out early. - Audit both successful and failed coredump creation efforts
Obtained from: TrustedBSD Project Reviewed by: rwatson MFC after: 1 month
|
#
172915 |
|
23-Oct-2007 |
csjp |
Use extended process token. The in kernel process audit state is stored in an extended subject token now. Make sure that we are using the extended data. This fixes the termID for process tokens.
Obtained from: TrustedBSD Project Discussed with: rwatson MFC after: 1 week
|
#
171144 |
|
01-Jul-2007 |
rwatson |
Remove two boot printfs generated by Audit to announce it's presence, and replace with software-testable sysctl node (security.audit) that can be used to detect kernel audit support.
Obtained from: TrustedBSD Project Approved by: re (kensmith)
|
#
171066 |
|
27-Jun-2007 |
csjp |
- Add audit_arg_audinfo_addr() for auditing the arguments for setaudit_addr(2) - In audit_bsm.c, make sure all the arguments: ARG_AUID, ARG_ASID, ARG_AMASK, and ARG_TERMID{_ADDR} are valid before auditing their arguments. (This is done for both setaudit and setaudit_addr. - Audit the arguments passed to setaudit_addr(2) - AF_INET6 does not equate to AU_IPv6. Change this in au_to_in_addr_ex() so the audit token is created with the correct type. This fixes the processing of the in_addr_ex token in users pace. - Change the size of the token (as generated by the kernel) from 5*4 bytes to 4*4 bytes (the correct size of an ip6 address) - Correct regression from ucred work which resulted in getaudit() not returning E2BIG if the subject had an ip6 termid - Correct slight regression in getaudit(2) which resulted in the size of a pointer being passed instead of the size of the structure. (This resulted in invalid auditinfo data being returned via getaudit(2))
Reviewed by: rwatson Approved by: re@ (kensmith) Obtained from: TrustedBSD Project MFC after: 1 month
|
#
170585 |
|
11-Jun-2007 |
rwatson |
Clean up, and sometimes remove, a number of audit-related implementation comments.
Obtained from: TrutstedBSD Project
|
#
170196 |
|
01-Jun-2007 |
rwatson |
Clean up audit comments--formatting, spelling, etc.
|
#
168688 |
|
13-Apr-2007 |
csjp |
Fix the handling of IPv6 addresses for subject and process BSM audit tokens. Currently, we do not support the set{get}audit_addr(2) system calls which allows processes like sshd to set extended or ip6 information for subject tokens.
The approach that was taken was to change the process audit state slightly to use an extended terminal ID in the kernel. This allows us to store both IPv4 IPv6 addresses. In the case that an IPv4 address is in use, we convert the terminal ID from an struct auditinfo_addr to a struct auditinfo.
If getaudit(2) is called when the subject is bound to an ip6 address, we return E2BIG.
- Change the internal audit record to store an extended terminal ID - Introduce ARG_TERMID_ADDR - Change the kaudit <-> BSM conversion process so that we are using the appropriate subject token. If the address associated with the subject is IPv4, we use the standard subject32 token. If the subject has an IPv6 address associated with them, we use an extended subject32 token. - Fix a couple of endian issues where we do a couple of byte swaps when we shouldn't be. IP addresses are already in the correct byte order, so reading the ip6 address 4 bytes at a time and swapping them results in in-correct address data. It should be noted that the same issue was found in the openbsm library and it has been changed there too on the vendor branch - Change A_GETPINFO to use the appropriate structures - Implement A_GETPINFO_ADDR which basically does what A_GETPINFO does, but can also handle ip6 addresses - Adjust get{set}audit(2) syscalls to convert the data auditinfo <-> auditinfo_addr - Fully implement set{get}audit_addr(2)
NOTE: This adds the ability for processes to correctly set extended subject information. The appropriate userspace utilities still need to be updated.
MFC after: 1 month Reviewed by: rwatson Obtained from: TrustedBSD
|
#
162990 |
|
03-Oct-2006 |
rwatson |
Add BSM conversion switch entries for a number of system calls, many administrative, to prevent console warnings and enable basic event auditing (generally without arguments).
MFC after: 3 days Obtained from: TrustedBSD Project
|
#
162466 |
|
20-Sep-2006 |
rwatson |
Rather than allocating all buffer memory for the completed BSM record when allocating the record in the first place, allocate the final buffer when closing the BSM record. At that point, more size information is available, so a sufficiently large buffer can be allocated.
This allows the kernel to generate audit records in excess of MAXAUDITDATA bytes, but is consistent with Solaris's behavior. This only comes up when auditing command line arguments, in which case we presume the administrator really does want the data as they have specified the policy flag to gather them.
Obtained from: TrustedBSD Project MFC after: 3 days
|
#
162419 |
|
18-Sep-2006 |
csjp |
Make sure that lutimes(2) gets processed and converted into a BSM record.
Submitted by: rwatson MFC after: 1 day
|
#
162372 |
|
17-Sep-2006 |
rwatson |
Add AUE_SYSARCH to the list of audit events during BSM conversion to prevent a console warning. Eventually, we will capture more arguments for sysarch.
Obtained from: TrustedBSD Project MFC after: 3 days
|
#
162177 |
|
09-Sep-2006 |
rwatson |
Add a BSM conversion switch case for AUE_GETCWD, so that a console warning isn't generated when __getcwd() is invoked.
MFC after: 3 days Obtained from: TrustedBSD Project
|
#
161813 |
|
01-Sep-2006 |
wsalamon |
Audit the argv and env vectors passed in on exec: Add the argument auditing functions for argv and env. Add kernel-specific versions of the tokenizer functions for the arg and env represented as a char array. Implement the AUDIT_ARGV and AUDIT_ARGE audit policy commands to enable/disable argv/env auditing. Call the argument auditing from the exec system calls.
Obtained from: TrustedBSD Project Approved by: rwatson (mentor)
|
#
161635 |
|
26-Aug-2006 |
rwatson |
Update kernel OpenBSM parts, especially src/sys/bsm, for the OpenBSM 1.0 alpha 9 import. See the OpenBSM import commit message for a detailed summary of changes.
Obtained from: TrustedBSD Project
|
#
160136 |
|
06-Jul-2006 |
wsalamon |
Audit the remaining parameters to the extattr system calls. Generate the audit records for those calls.
Obtained from: TrustedBSD Project Approved by: rwatson (mentor)
|
#
159278 |
|
05-Jun-2006 |
rwatson |
When generating BSM tokens for mkfifo(), include mode argument.
Submitted by: wsalamon Obtained from: TrustedBSD Project
|
#
159277 |
|
05-Jun-2006 |
rwatson |
When generating the process token, need to check whether the process was sucessfully audited. Otherwise, generate the PID token. This change covers the pid < 0 cases, and pid lookup failure cases.
Submitted by: wsalamon Obtained from: TrustedBSD Project
|
#
159259 |
|
05-Jun-2006 |
rwatson |
Merge OpenBSM 1.0 alpha 6 changes for BSM token creation to src/sys/security/audit:
- Clarify and clean up AUR_ types to match Solaris. - Clean up use of host vs. network byte order for IP addresses. - Remove combined user/kernel implementations of some token creation calls, such as au_to_file(), header calls, etc.
Obtained from: TrustedBSD Project
|
#
156889 |
|
19-Mar-2006 |
rwatson |
Merge Perforce change 93581 from TrustedBSD audit3 branch:
Mega-style patch.
Obtained from: TrustedBSD Project
|
#
155559 |
|
11-Feb-2006 |
rwatson |
Add stub AUE_EACCESS entry.
Obtained from: TrustedBSD Project
|
#
155271 |
|
03-Feb-2006 |
rwatson |
Cast pointers to (uintptr_t) before down-casting to (int). This avoids an incompatible conversion from a 64-bit pointer to a 32-bit integer on 64-bit platforms. We will investigate whether Solaris uses a 64-bit token here, or a new record here, in order to avoid truncating user pointers that are 64-bit. However, in the mean time, truncation is fine as these are rarely/never used fields in audit records.
Obtained from: TrustedBSD Project
|
#
155192 |
|
01-Feb-2006 |
rwatson |
Import kernel audit framework:
- Management of audit state on processes. - Audit system calls to configure process and system audit state. - Reliable audit record queue implementation, audit_worker kernel thread to asynchronously store records on disk. - Audit event argument. - Internal audit data structure -> BSM audit trail conversion library. - Audit event pre-selection. - Audit pseudo-device permitting kernel->user upcalls to notify auditd of kernel audit events.
Much work by: wsalamon Obtained from: TrustedBSD Project, Apple Computer, Inc.
|