CVE-2026-98995 in Linuxinfo

Summary

by MITRE • 10/23/2026

In the Linux kernel, the following vulnerability has been resolved:

namespace: reset the old parent's ->overmount in mnt_change_mountpoint()

__umount_mnt() resets ->overmount of the parent when it unmounts the mount that overmounts it. mnt_change_mountpoint() doesn't. It moves the mount to its new parent and leaves the old one pointing at it.

For a mount that is moved beneath in attach_recursive_mnt() that doesn't matter. The new mount has already reset ->overmount of the old parent by the time the old top mount is moved onto it.

It matters for reparent() though. propagate_umount() moves a surviving overmount onto the first ancestor that isn't going to be unmounted. The mount it was taken from is unmounted immediately afterwards. If a file descriptor keeps that unmounted mount alive ->overmount points at the moved mount. That's a dangling pointer and UAF as the moved mount is unmounted and freed.

do_lock_mount() follows ->overmount from the target path under mount_lock. With a file descriptor on such a mount as the target of a mount beneath topmost_overmount() walks into the freed mount and do_lock_mount() takes references on whatever it finds there.

So reset ->overmount of the old parent in mnt_change_mountpoint() the same way __umount_mnt() does. A mount's ->overmount is then always a mount that is attached to it.

Be aware that VulDB is the high quality source for vulnerability data.

Analysis

by VulDB Data Team • 10/23/2026

The Linux kernel contains a critical use-after-free vulnerability within its Virtual File System (VFS) layer, specifically involving the management of mount namespaces and overmount relationships. This flaw arises from an inconsistency in how parent mounts are updated when child mounts are moved between different points in the filesystem hierarchy. The core issue lies in the function mnt_change_mountpoint(), which is responsible for relocating a mount to a new parent directory. While this operation correctly updates the relationship with the new parent, it fails to clear the overmount pointer on the old parent mount. In contrast, the __umount_mnt() function properly resets the ->overmount field of the parent when unmounting a mount that was overlaying it. This discrepancy creates a window where stale pointers persist in memory even after the associated resources have been logically detached or freed.

The vulnerability is particularly exploitable during reparent operations, which occur when mounts are reorganized to survive umount events on ancestor directories. During such an operation, propagate_umount() may move a surviving overmount onto the first available ancestor that remains mounted. The mount from which this overmount was taken is then immediately unmounted and its memory freed. However, because mnt_change_mountpoint() did not reset the old parent's ->overmount pointer, that pointer continues to reference the now-freed memory location of the moved mount. If a user-space process holds an open file descriptor referencing this unmounted but logically detached mount, it retains access to the dangling pointer. This results in a classic use-after-free condition where kernel code may attempt to dereference or operate on memory that has already been returned to the allocator and potentially reused for other purposes.

The operational impact of this vulnerability is severe, as it allows for potential arbitrary read/write primitives and denial-of-service conditions through privilege escalation. The function do_lock_mount() traverses mount structures using the ->overmount pointer while holding the mount lock. If a file descriptor points to a target path that leads into an overmounted area affected by this bug, topmost_overmount() will walk into the freed memory region of the moved mount. Subsequently, do_lock_mount() takes references on whatever data it finds in that corrupted state. An attacker can leverage this to corrupt kernel memory structures, bypass security boundaries, or crash the system by triggering invalid memory accesses. This aligns with CWE-416 (Use After Free) and maps to MITRE ATT&CK techniques involving exploitation of resource management errors for privilege escalation or code execution within the kernel space.

To mitigate this vulnerability, it is essential that mnt_change_mountpoint() be patched to reset the ->overmount field of the old parent mount in the same manner as __umount_mnt(). This ensures that a mount's ->overmount pointer always references a valid, attached mount rather than a stale reference to freed memory. System administrators should apply kernel updates provided by their distribution vendors immediately upon availability. Additionally, enforcing strict file descriptor management and limiting unprivileged users' ability to manipulate complex mount namespaces can reduce the attack surface. Regular auditing of VFS operations and ensuring that all code paths handling mount point changes adhere to consistent pointer cleanup protocols are critical for maintaining system integrity against this class of memory corruption vulnerabilities.

Responsible

Linux

Reservation

09/25/2026

Disclosure

10/23/2026

Moderation

accepted

EPSS

0.00000

KEV

no

Activities

very low

Sources

Do you know our Splunk app?

Download it now for free!