diff options
author | Richard Guy Briggs <rgb@redhat.com> | 2017-04-07 10:17:27 -0400 |
---|---|---|
committer | Paul Moore <paul@paul-moore.com> | 2017-05-30 17:36:11 -0400 |
commit | 7786f6b6dfc12d17eea2df04116de6ebac50c884 (patch) | |
tree | 01230b564d1c75dab46083b48ead194d06c416b4 /kernel/auditsc.c | |
parent | 4b3e4ed6b0d958d7fb2f160bb8ebfb4f0db19382 (diff) |
audit: add ambient capabilities to CAPSET and BPRM_FCAPS records
Capabilities were augmented to include ambient capabilities in v4.3
commit 58319057b784 ("capabilities: ambient capabilities").
Add ambient capabilities to the audit BPRM_FCAPS and CAPSET records.
The record contains fields "old_pp", "old_pi", "old_pe", "new_pp",
"new_pi", "new_pe" so in keeping with the previous record
normalizations, change the "new_*" variants to simply drop the "new_"
prefix.
A sample of the replaced BPRM_FCAPS record:
RAW: type=BPRM_FCAPS msg=audit(1491468034.252:237): fver=2
fp=0000000000200000 fi=0000000000000000 fe=1 old_pp=0000000000000000
old_pi=0000000000000000 old_pe=0000000000000000 old_pa=0000000000000000
pp=0000000000200000 pi=0000000000000000 pe=0000000000200000
pa=0000000000000000
INTERPRET: type=BPRM_FCAPS msg=audit(04/06/2017 04:40:34.252:237):
fver=2 fp=sys_admin fi=none fe=chown old_pp=none old_pi=none
old_pe=none old_pa=none pp=sys_admin pi=none pe=sys_admin pa=none
A sample of the replaced CAPSET record:
RAW: type=CAPSET msg=audit(1491469502.371:242): pid=833
cap_pi=0000003fffffffff cap_pp=0000003fffffffff cap_pe=0000003fffffffff
cap_pa=0000000000000000
INTERPRET: type=CAPSET msg=audit(04/06/2017 05:05:02.371:242) : pid=833
cap_pi=chown,dac_override,dac_read_search,fowner,fsetid,kill,
setgid,setuid,setpcap,linux_immutable,net_bind_service,net_broadcast,
net_admin,net_raw,ipc_lock,ipc_owner,sys_module,sys_rawio,sys_chroot,
sys_ptrace,sys_pacct,sys_admin,sys_boot,sys_nice,sys_resource,sys_time,
sys_tty_config,mknod,lease,audit_write,audit_control,setfcap,
mac_override,mac_admin,syslog,wake_alarm,block_suspend,audit_read
cap_pp=chown,dac_override,dac_read_search,fowner,fsetid,kill,setgid,
setuid,setpcap,linux_immutable,net_bind_service,net_broadcast,
net_admin,net_raw,ipc_lock,ipc_owner,sys_module,sys_rawio,sys_chroot,
sys_ptrace,sys_pacct,sys_admin,sys_boot,sys_nice,sys_resource,
sys_time,sys_tty_config,mknod,lease,audit_write,audit_control,setfcap,
mac_override,mac_admin,syslog,wake_alarm,block_suspend,audit_read
cap_pe=chown,dac_override,dac_read_search,fowner,fsetid,kill,setgid,
setuid,setpcap,linux_immutable,net_bind_service,net_broadcast,
net_admin,net_raw,ipc_lock,ipc_owner,sys_module,sys_rawio,sys_chroot,
sys_ptrace,sys_pacct,sys_admin,sys_boot,sys_nice,sys_resource,
sys_time,sys_tty_config,mknod,lease,audit_write,audit_control,setfcap,
mac_override,mac_admin,syslog,wake_alarm,block_suspend,audit_read
cap_pa=none
See: https://github.com/linux-audit/audit-kernel/issues/40
Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
Acked-by: Serge Hallyn <serge@hallyn.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Diffstat (limited to 'kernel/auditsc.c')
-rw-r--r-- | kernel/auditsc.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/kernel/auditsc.c b/kernel/auditsc.c index b2dcbe637b7c..5fa68d10032f 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c | |||
@@ -1260,6 +1260,7 @@ static void show_special(struct audit_context *context, int *call_panic) | |||
1260 | audit_log_cap(ab, "cap_pi", &context->capset.cap.inheritable); | 1260 | audit_log_cap(ab, "cap_pi", &context->capset.cap.inheritable); |
1261 | audit_log_cap(ab, "cap_pp", &context->capset.cap.permitted); | 1261 | audit_log_cap(ab, "cap_pp", &context->capset.cap.permitted); |
1262 | audit_log_cap(ab, "cap_pe", &context->capset.cap.effective); | 1262 | audit_log_cap(ab, "cap_pe", &context->capset.cap.effective); |
1263 | audit_log_cap(ab, "cap_pa", &context->capset.cap.ambient); | ||
1263 | break; | 1264 | break; |
1264 | case AUDIT_MMAP: | 1265 | case AUDIT_MMAP: |
1265 | audit_log_format(ab, "fd=%d flags=0x%x", context->mmap.fd, | 1266 | audit_log_format(ab, "fd=%d flags=0x%x", context->mmap.fd, |
@@ -1381,9 +1382,11 @@ static void audit_log_exit(struct audit_context *context, struct task_struct *ts | |||
1381 | audit_log_cap(ab, "old_pp", &axs->old_pcap.permitted); | 1382 | audit_log_cap(ab, "old_pp", &axs->old_pcap.permitted); |
1382 | audit_log_cap(ab, "old_pi", &axs->old_pcap.inheritable); | 1383 | audit_log_cap(ab, "old_pi", &axs->old_pcap.inheritable); |
1383 | audit_log_cap(ab, "old_pe", &axs->old_pcap.effective); | 1384 | audit_log_cap(ab, "old_pe", &axs->old_pcap.effective); |
1384 | audit_log_cap(ab, "new_pp", &axs->new_pcap.permitted); | 1385 | audit_log_cap(ab, "old_pa", &axs->old_pcap.ambient); |
1385 | audit_log_cap(ab, "new_pi", &axs->new_pcap.inheritable); | 1386 | audit_log_cap(ab, "pp", &axs->new_pcap.permitted); |
1386 | audit_log_cap(ab, "new_pe", &axs->new_pcap.effective); | 1387 | audit_log_cap(ab, "pi", &axs->new_pcap.inheritable); |
1388 | audit_log_cap(ab, "pe", &axs->new_pcap.effective); | ||
1389 | audit_log_cap(ab, "pa", &axs->new_pcap.ambient); | ||
1387 | break; } | 1390 | break; } |
1388 | 1391 | ||
1389 | } | 1392 | } |
@@ -2341,10 +2344,12 @@ int __audit_log_bprm_fcaps(struct linux_binprm *bprm, | |||
2341 | ax->old_pcap.permitted = old->cap_permitted; | 2344 | ax->old_pcap.permitted = old->cap_permitted; |
2342 | ax->old_pcap.inheritable = old->cap_inheritable; | 2345 | ax->old_pcap.inheritable = old->cap_inheritable; |
2343 | ax->old_pcap.effective = old->cap_effective; | 2346 | ax->old_pcap.effective = old->cap_effective; |
2347 | ax->old_pcap.ambient = old->cap_ambient; | ||
2344 | 2348 | ||
2345 | ax->new_pcap.permitted = new->cap_permitted; | 2349 | ax->new_pcap.permitted = new->cap_permitted; |
2346 | ax->new_pcap.inheritable = new->cap_inheritable; | 2350 | ax->new_pcap.inheritable = new->cap_inheritable; |
2347 | ax->new_pcap.effective = new->cap_effective; | 2351 | ax->new_pcap.effective = new->cap_effective; |
2352 | ax->new_pcap.ambient = new->cap_ambient; | ||
2348 | return 0; | 2353 | return 0; |
2349 | } | 2354 | } |
2350 | 2355 | ||
@@ -2363,6 +2368,7 @@ void __audit_log_capset(const struct cred *new, const struct cred *old) | |||
2363 | context->capset.cap.effective = new->cap_effective; | 2368 | context->capset.cap.effective = new->cap_effective; |
2364 | context->capset.cap.inheritable = new->cap_effective; | 2369 | context->capset.cap.inheritable = new->cap_effective; |
2365 | context->capset.cap.permitted = new->cap_permitted; | 2370 | context->capset.cap.permitted = new->cap_permitted; |
2371 | context->capset.cap.ambient = new->cap_ambient; | ||
2366 | context->type = AUDIT_CAPSET; | 2372 | context->type = AUDIT_CAPSET; |
2367 | } | 2373 | } |
2368 | 2374 | ||