Cloudanix VulnDB

CVE-2026-98979

None

CVSS

—

EPSS

0.2%

Published

Oct 23, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in the Linux kernel can let a local program crash the entire system or freeze all file operations until the machine is restarted.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Moderate
Impact
Denial Of Service
Component
OS kernel
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The vulnerability allows an attacker to create an automount below a mount that uses the internal MNT_NS_INTERNAL error pointer. When fanotify events on an overlay lower layer trigger attach_recursive_mnt and count_mounts, the kernel dereferences this error pointer, causing a null-pointer dereference and holding namespace_sem for write, which blocks all subsequent mount operations system-wide.

Why it matters to the business

Successful exploitation can crash or permanently hang Linux systems, halting all file-system operations and requiring a reboot; the issue affects any kernel still carrying the flawed namespace logic and can disrupt production workloads until patched.

How an attack unfolds

An attacker with the ability to set up an overlay filesystem and place a fanotify mark on its lower layer (for example debugfs) opens a path that causes clone_private_mount to succeed with MNT_NS_INTERNAL. Reading the resulting fanotify event then invokes attach_recursive_mnt and count_mounts under namespace_sem, dereferencing the invalid pointer and deadlocking the system.

How to fix it

Update the Linux kernel to a version containing the fix that replaces the MNT_NS_INTERNAL check with a call to is_mounted(), which correctly rejects both unmounted and internal mounts. Reboot affected systems after the update.

How to confirm the fix worked

Confirm the running kernel contains the commit that changes the namespace mount validation logic to use is_mounted(); attempt to reproduce the fanotify-plus-overlay reproducer and verify that openat now returns EINVAL instead of triggering the oops.

Typical attack path

  1. Create an overlay mount whose lower layer is a filesystem that can be marked with fanotify (e.g., debugfs).
  2. Place a fanotify filesystem mark on the lower layer.
  3. Trigger an automount by opening a directory path inside the marked layer via the fanotify event file descriptor.
  4. The kernel path through finish_automount and attach_recursive_mnt reaches count_mounts with an MNT_NS_INTERNAL pointer.
  5. Null-pointer dereference occurs, kernel oops is logged, and namespace_sem remains held, blocking all mount operations.

How to detect it

Inspect kernel logs for general protection faults or KASAN null-ptr-deref reports inside count_mounts, attach_recursive_mnt, or finish_automount while namespace_sem is held; correlate with processes that recently performed fanotify marks on overlay lower layers.

What your security team should do

  • Prioritize kernel updates on all Linux systems that expose fanotify or overlay mounts to untrusted users.
  • Monitor vendor advisories for the exact upstream commit and backported packages.
  • Restrict unprivileged use of fanotify and overlay mounts via seccomp or LSM policies until patches are applied.
  • Reboot systems after kernel upgrades to clear any held namespace_sem state.

The record

In the Linux kernel, the following vulnerability has been resolved: namespace: refuse an automount below a mount that is in no namespace It's possible to add autmounts even when the parent mount isn't in the mount namespace of the caller. The only requirement we have is that the parent mount namespace must not be NULL, i.e., unmounted. Problem is that clone_private_mount() has MNT_NS_INTERNAL which makes that trivially true. So that passes the test and attach_recursive_mnt() accepts that as a mount point and funny enough, count_mounts() dereferences MNT_NS_INTERNAL. The problem is it is an error pointer... So we can reach this in userspace via fanotify. A filesystem mark on the lower filesystem of an overlay reports paths on the layer clone and reading the event hands out a descriptor on it. For example with debugfs as the lower layer it goes kaboom: openat(evfd, "tracing", O_DIRECTORY) Oops: general protection fault KASAN: null-ptr-deref in range [0x1d0-0x1d7] RIP: 0010:count_mounts+0x35/0x200 attach_recursive_mnt finish_automount And since that sleeping beauty happens under namespace_sem held for writing every mount operation on the system blocks from then on. Congrats. Use is_mounted() instead which rejects unmounted and internal mounts alike. The open fails with EINVAL just as it did before clone_private_mount() used MNT_NS_INTERNAL.

Affected packages

Ecosystem Package Introduced Fixed