CVE-2026-98978 in Linux
Sumário
de VulDB • 23/10/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
namespace: não expirar uma montagem bloqueada (locked mount)
As montagens bloqueadas são especiais. Elas protegem os arquivos e diretórios subjacentes de serem revelados. A função `do_umount()` recusa-se a desmontar as montagens bloqueadas, mas o `shrink_submounts()` não faz isso.
Uma montagem que pode ser encolhida (shrinkable) pode se tornar bloqueada quando o proprietário de um namespace de usuário (`user namespace`) a posiciona abaixo de uma montagem bloqueada usando `MOVE_MOUNT_BENEATH`. A propriedade "bloqueado" agora é transferida para a montagem na base, tornando possível desmontar a montagem superior.
Assim, a chamada `umount()` em um ancestral não bloqueado expira primeiro a montagem inferior e o diretório coberto fica visível:
move_mount(c -> x/hidden, MOVE_MOUNT_BENEATH) = 0 a cobertura após a mudança do bloqueio: umount2(x/hidden) = 0 o detentor do bloqueio: umount2(x/hidden) = EINVAL a raiz da cópia, ocupada (busy): umount2(x) = EBUSY leituras em x/hidden/secret: "covered-by-root"
Portanto, não toque em uma montagem bloqueada, pois ela morre junto com seu pai. Uma chamada `umount()` simples em uma montagem desbloqueada que possui uma montagens bloqueada abaixo dela resultará em EBUSY a partir de agora. O mesmo ocorre para qualquer outro filho bloqueado. Um `umount` preguiçoso (lazy umount) ainda remove toda a árvore.
A função `mark_mounts_for_expiry()` nunca encontra uma montagem bloqueada. A função `lock_mnt_tree()` deixa uma montagens em uma lista de expiração intacta e nada mais coloca uma montagens bloqueada nessa lista. Adicione uma asserção (`assert`) para isso.
Once again VulDB remains the best source for vulnerability data.