Skip to content
BSD syscall#350

svc · unix #350

audit

Submits a pre-formatted BSM audit record to the kernel audit queue.

Prototype

int audit(void *record, int length);

Returns: int

Arguments

NameTypeDirDescription
recordvoid-
lengthint-

Version history

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard350
xnu-1699.24.8macOS 10.7 Lion350
xnu-2050.18.24macOS 10.8 Mountain Lion350
xnu-2422.115.4macOS 10.9 Mavericks350
xnu-2782.40.9macOS 10.10 Yosemite350
xnu-3247.1.106macOS 10.11 El Capitan350
xnu-3789.1.32macOS 10.12 Sierra350
xnu-4570.1.46macOS 10.13 High Sierra350
xnu-4903.221.2macOS 10.14 Mojave350
xnu-6153.11.26macOS 10.15 Catalina350
xnu-7195.50.7.100.1macOS 11.0 Big Sur350
xnu-8019.41.5macOS 12.0 Monterey350
xnu-8792.41.9macOS 13.0 Ventura350
xnu-10002.1.13macOS 14.0 Sonoma350
xnu-11215.1.10macOS 15.0 Sequoia350
xnu-11417.101.15macOS 15.4 Sequoia350
xnu-12377.1.9macOS 26.0 Tahoe350
xnu-10002.41.9350
xnu-10002.61.3350
xnu-10002.81.5350
xnu-10063.101.15350
xnu-10063.121.3350
xnu-10063.141.1350
xnu-11215.41.3350
xnu-11215.61.5350
xnu-11215.81.4350
xnu-11417.121.6350
xnu-11417.140.69350
xnu-12377.101.15350
xnu-12377.41.6350
xnu-12377.61.12350
xnu-12377.81.4350
xnu-1486.2.11350
xnu-1504.15.3350
xnu-1504.3.12350
xnu-1504.7.4350
xnu-1504.9.17350
xnu-1504.9.26350
xnu-1504.9.37350
xnu-1699.22.73350
xnu-1699.22.81350
xnu-1699.24.23350
xnu-1699.26.8350
xnu-1699.32.7350
xnu-2050.22.13350
xnu-2050.24.15350
xnu-2050.48.11350
xnu-2050.7.9350
xnu-2050.9.2350
xnu-2422.1.72350
xnu-2422.100.13350
xnu-2422.110.17350
xnu-2422.90.20350
xnu-2782.1.97350
xnu-2782.10.72350
xnu-2782.20.48350
xnu-2782.30.5350
xnu-3247.10.11350
xnu-3248.20.55350
xnu-3248.30.4350
xnu-3248.40.184350
xnu-3248.50.21350
xnu-3248.60.10350
xnu-3789.21.4350
xnu-3789.31.2350
xnu-3789.41.3350
xnu-3789.51.2350
xnu-3789.60.24350
xnu-3789.70.16350
xnu-4570.20.62350
xnu-4570.31.3350
xnu-4570.41.2350
xnu-4570.51.1350
xnu-4570.61.1350
xnu-4570.71.2350
xnu-4903.231.4350
xnu-4903.241.1350
xnu-4903.270.47350
xnu-6153.101.6350
xnu-6153.121.1350
xnu-6153.141.1350
xnu-6153.41.3350
xnu-6153.61.1350
xnu-6153.81.5350
xnu-7195.101.1350
xnu-7195.121.3350
xnu-7195.141.2350
xnu-7195.60.75350
xnu-7195.81.3350
xnu-8019.61.5350
xnu-8019.80.24350
xnu-8020.101.4350
xnu-8020.121.3350
xnu-8020.140.41350
xnu-8792.61.2350
xnu-8792.81.2350
xnu-8796.101.5350
xnu-8796.121.2350
xnu-8796.141.3350

Notes

audit(2) is the userspace entry point for trusted processes (auditd, login, sshd) to inject their own BSM tokens into the kernel's audit trail. It is restricted to processes with the audit_control privilege and is largely vestigial on modern macOS since auditd was deprecated in macOS 11 in favor of Endpoint Security. The record buffer must already be a valid sequence of BSM tokens — the kernel only validates the header and length.

Detection

Observable via the AUE_AUDIT audit event itself and via Endpoint Security's ES_EVENT_TYPE_AUTH_GET_TASK family is unrelated; for audit pipeline tampering, watch for non-auditd PIDs calling audit() or for sudden gaps in /var/audit/. DTrace probe audit:::commit catches every submitted record.

Related APIs

auditonauditctlgetaudit_addrsetaudit_addrau_to_text