posix_spawn and pid

Lev Stipakov lstipakov at gmail.com
Tue Jan 17 12:39:42 UTC 2017


Hello,

I have an issue with bsmaudit on macOS. Sorry if this is wrong place for
this question - Apple asked me to file a bug, which I did month ago, but
nothing has happened so far.

So, I use bsmaudit for obtaining information about launched processed. I
noticed that in _some_ cases "posix_spawn" record contains wrong pid -
parent pid - instead of process pid.

Problem is easy to reproduce, here are steps (assuming you have macOS):

1) Add "ex,pc" to flags and naflags in audit_control
2) sudo audit -s and logout to apply changes
3) sudo praudit /dev/auditpipe | grep -A7 'posix_spawn\|exec'
4) open fish shell (does not reproduce with bash/zsh, probably fish uses
some special posix_spawn flags)
5) check shell''s pid:
    > echo %self
    > 74763
6) run "ls" in subshell
    > echo (/bin/ls)
7) check praudit's output:

header,150,11,posix_spawn(2),0,Tue Jan 17 14:29:56 2017, + 70 msec
argument,0,0x1249b,child PID
exec arg,/bin/ls
path,/bin/ls
path,/bin/ls
attribute,100755,root,wheel,16777220,7281523,0
subject,admin,admin,staff,admin,staff,74763,100098,50331650,0.0.0.0
return,success,0
trailer,150

Note that subject has pid "74763", which is shell's pid, not ls!

My questions are:

1) Is it a bug in audit functionality? all fields seems to be correct
except pid.

2) Anything I could do to mitigate it? I maintain a dictionary of {pid,
process info}, and when I get, say, file event from audit, I could
attribute that event to certain process info. Current behavior makes my
dictionary unusable.

-- 
-Lev


More information about the trustedbsd-audit mailing list