mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
IMA: Add audit log for failure conditions
process_buffer_measurement() and ima_alloc_key_entry() functions need to log an audit message for auditing integrity measurement failures. Add audit message in these two functions. Remove "pr_devel" log message in process_buffer_measurement(). Sample audit messages: [ 6.303048] audit: type=1804 audit(1592506281.627:2): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=kernel op=measuring_key cause=ENOMEM comm="swapper/0" name=".builtin_trusted_keys" res=0 errno=-12 [ 8.019432] audit: type=1804 audit(1592506283.344:10): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 op=measuring_kexec_cmdline cause=hashing_error comm="systemd" name="kexec-cmdline" res=0 errno=-22 Signed-off-by: Lakshmi Ramasubramanian <nramas@linux.microsoft.com> Suggested-by: Mimi Zohar <zohar@linux.ibm.com> Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
This commit is contained in:
committed by
Mimi Zohar
parent
2f845882ec
commit
34e980bb83
@@ -186,27 +186,43 @@ static inline unsigned int ima_hash_key(u8 *digest)
|
||||
return (digest[0] | digest[1] << 8) % IMA_MEASURE_HTABLE_SIZE;
|
||||
}
|
||||
|
||||
#define __ima_hooks(hook) \
|
||||
hook(NONE) \
|
||||
hook(FILE_CHECK) \
|
||||
hook(MMAP_CHECK) \
|
||||
hook(BPRM_CHECK) \
|
||||
hook(CREDS_CHECK) \
|
||||
hook(POST_SETATTR) \
|
||||
hook(MODULE_CHECK) \
|
||||
hook(FIRMWARE_CHECK) \
|
||||
hook(KEXEC_KERNEL_CHECK) \
|
||||
hook(KEXEC_INITRAMFS_CHECK) \
|
||||
hook(POLICY_CHECK) \
|
||||
hook(KEXEC_CMDLINE) \
|
||||
hook(KEY_CHECK) \
|
||||
hook(MAX_CHECK)
|
||||
#define __ima_hook_enumify(ENUM) ENUM,
|
||||
#define __ima_hooks(hook) \
|
||||
hook(NONE, none) \
|
||||
hook(FILE_CHECK, file) \
|
||||
hook(MMAP_CHECK, mmap) \
|
||||
hook(BPRM_CHECK, bprm) \
|
||||
hook(CREDS_CHECK, creds) \
|
||||
hook(POST_SETATTR, post_setattr) \
|
||||
hook(MODULE_CHECK, module) \
|
||||
hook(FIRMWARE_CHECK, firmware) \
|
||||
hook(KEXEC_KERNEL_CHECK, kexec_kernel) \
|
||||
hook(KEXEC_INITRAMFS_CHECK, kexec_initramfs) \
|
||||
hook(POLICY_CHECK, policy) \
|
||||
hook(KEXEC_CMDLINE, kexec_cmdline) \
|
||||
hook(KEY_CHECK, key) \
|
||||
hook(MAX_CHECK, none)
|
||||
|
||||
#define __ima_hook_enumify(ENUM, str) ENUM,
|
||||
#define __ima_stringify(arg) (#arg)
|
||||
#define __ima_hook_measuring_stringify(ENUM, str) \
|
||||
(__ima_stringify(measuring_ ##str)),
|
||||
|
||||
enum ima_hooks {
|
||||
__ima_hooks(__ima_hook_enumify)
|
||||
};
|
||||
|
||||
static const char * const ima_hooks_measure_str[] = {
|
||||
__ima_hooks(__ima_hook_measuring_stringify)
|
||||
};
|
||||
|
||||
static inline const char *func_measure_str(enum ima_hooks func)
|
||||
{
|
||||
if (func >= MAX_CHECK)
|
||||
return ima_hooks_measure_str[NONE];
|
||||
|
||||
return ima_hooks_measure_str[func];
|
||||
}
|
||||
|
||||
extern const char *const func_tokens[];
|
||||
|
||||
struct modsig;
|
||||
|
||||
Reference in New Issue
Block a user