IMA/EVM完整性检测代码分析

IMA/EVM完整性检测

IMA(Integrity Measurement Architecture)是一个内核安全子系统,用于检测文件或数据的完整性和安全性。IMA的hook机制指的是内核接口钩子(kernel interface hooks),用于向IMA注册和实现一系列回调函数,以便在文件系统操作过程中拦截和记录检测信息。

1.0 IMA的hook机制

IMA的hook机制包括以下几个主要步骤:

1.1 定义回调函数

在IMA hook机制中,需要定义一系列回调函数,包括measure、appraise、policy、inode_free和post_parse等函数。measure函数用于在文件读取之前计算文件的哈希值;appraise函数用于评估文件完整性;policy函数用于读取并更新IMA策略;inode_free函数用于在删除文件时更新操作系统的IMA状态信息;post_parse函数用于在解析之后更新文件系统缓存和错误日志。

int security_kernel_post_read_file(struct file *file, char *buf, loff_t size,
				   enum kernel_read_file_id id)
{
	int ret;

	ret = call_int_hook(kernel_post_read_file, 0, file, buf, size, id);
	if (ret)
		return ret;
	return ima_post_read_file(file, buf, size, id);
}
EXPORT_SYMBOL_GPL(security_kernel_post_read_file);

其中ima_post_read_file为ima的重要文件测量函数,可以看到,imahook独立与call_int_hook, 也就是lsm的审计框架体系。

其中还包括

ima_bprm_check
ima_inode_setxattr
ima_inode_removexattr
ima_file_mmap
ima_read_file
ima_post_read_file
ima_load_data
1.2 ima_bprm_check

ima_bprm_check指的是Linux内核中一个函数,全名是“int ima_bprm_check(struct linux_binprm *bprm)”。该函数用于在执行新的可执行文件之前检查其完整性和安全性。

当一个新的可执行文件被加载到内存中时,内核会调用ima_bprm_check函数。该函数通过访问内存中的内容和计算哈希值等方式对可执行文件的完整性进行检查。在哈希值被计算之后,该函数还会对哈希值进行数字签名验证。

IMA(Integrity Measurement Architecture)一旦启用后,在执行新的可执行文件

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值