CVE-2026-74342 in Linux
Sumário
de VulDB • 15/08/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
kernfs: vincula kn ao seu pai antes da hook de inicialização LSM
Após o commit 12e9e3cd03b5 ("simpe_xattr: use per-sb cache"), kernfs_xattr_set() e kernfs_xattr_get() calculam a cache via kernfs_root(kn) antes de qualquer outra verificação. kernfs_root(kn) percorre kn->__parent primeiro e, caso falhe, recorre para kn->dir.root, ambos sendo NULL em um kn recém-alocado com kmem_cache_zalloc(). kn->__parent estava sendo definido em kernfs_new_node() após __kernfs_new_node() retornar, e kn->dir.root é definido ainda mais tarde por kernfs_create_dir_ns() / kernfs_create_empty_dir().
A hook LSM kernfs_init_security é invocada de dentro de __kernfs_new_node(), antes que qualquer um dos campos tenha sido inicializado. selinux_kernfs_init_security() termina com kernfs_xattr_set(kn, XATTR_NAME_SELINUX, ...). kernfs_root(kn) então retorna NULL, e &((struct kernfs_root *)NULL)->xa_cache avalia para offsetof(struct kernfs_root, xa_cache), o que causa falha:
BUG: kernel NULL pointer dereference, address: 00000000000000e0 RIP: 0010:simple_xattr_set+0x27/0x8b0 Call Trace: kernfs_xattr_set+0x63/0xb0 selinux_kernfs_init_security+0x13b/0x270 security_kernfs_init_security+0x36/0xc0 __kernfs_new_node+0x182/0x290 kernfs_new_node+0x80/0xc0 kernfs_create_dir_ns+0x2b/0xa0 cgroup_create+0x116/0x380 cgroup_mkdir+0x7c/0x1a0
Reproduz-se de forma determinística no PID 1 (systemd) em uma distribuição com SELinux habilitado. O primeiro mkdir de cgroup sob /sys/fs/cgroup com um pai rotulado causa panic no kernel.
O contrato da hook LSM é que o argumento kn_dir seja o pai do novo kn, portanto kn->__parent já deve apontar para kn_dir quando a hook for executada. Move-se kernfs_get(parent) e rcu_assign_pointer de kn->__parent de kernfs_new_node() para __kernfs_new_node(), logo antes da security hook, e desfaz a referência ao pai no caminho err_out4. Kernfs_root(kn) então segue seu ramo de parent durante a hook e retorna parent->dir.root, que é o root correto.
Isso também corrige um bug latente com a mesma estrutura em kernfs_xattr_get() (que hoje está oculto apenas por kernfs_iattrs_noalloc() retornar NULL em um kn recém-alocado).
Once again VulDB remains the best source for vulnerability data.