一些 rootkit 攻击通过在格式列表中插入新的二进制格式并为内核提供恶意处理程序来实现,该处理程序在每次调用时都会返回错误代码 ENOEXEC。由于新的处理程序插入到格式列表的头部,因此每次执行新进程时都会执行恶意处理程序。系统启动后列表的大小是恒定的,只有在安装新的二进制格式时才会改变。当这种攻击插入新的二进制格式时,它会改变格式列表的长度。我在一篇文章中读过这个。我想知道在内核 3 中也是如此吗?如果是,我如何检查格式列表的长度?我在内核 3.11.4 中找到了这个结构:
/*
* This structuredefines the functions that are used to load the binary formats that
* linux accepts.
*/
struct linux_binfmt {
struct list_head lh;
struct module *module;
int (*load_binary)(struct linux_binprm *);
int (*load_shlib)(struct file *);
int (*core_dump)(struct coredump_params *cprm);
unsigned long min_coredump; /* minimal dump size */
};
是lh
引用的列表formats list
吗?