VYPR
Unrated severityNVD Advisory· Published Dec 9, 2025· Updated Apr 15, 2026

CVE-2025-40341

CVE-2025-40341

Description

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

futex: Don't leak robust_list pointer on exec race

sys_get_robust_list() and compat_get_robust_list() use ptrace_may_access() to check if the calling task is allowed to access another task's robust_list pointer. This check is racy against a concurrent exec() in the target process.

During exec(), a task may transition from a non-privileged binary to a privileged one (e.g., setuid binary) and its credentials/memory mappings may change. If get_robust_list() performs ptrace_may_access() before this transition, it may erroneously allow access to sensitive information after the target becomes privileged.

A racy access allows an attacker to exploit a window during which ptrace_may_access() passes before a target process transitions to a privileged state via exec().

For example, consider a non-privileged task T that is about to execute a setuid-root binary. An attacker task A calls get_robust_list(T) while T is still unprivileged. Since ptrace_may_access() checks permissions based on current credentials, it succeeds. However, if T begins exec immediately afterwards, it becomes privileged and may change its memory mappings. Because get_robust_list() proceeds to access T->robust_list without synchronizing with exec() it may read user-space pointers from a now-privileged process.

This violates the intended post-exec access restrictions and could expose sensitive memory addresses or be used as a primitive in a larger exploit chain. Consequently, the race can lead to unauthorized disclosure of information across privilege boundaries and poses a potential security risk.

Take a read lock on signal->exec_update_lock prior to invoking ptrace_may_access() and accessing the robust_list/compat_robust_list. This ensures that the target task's exec state remains stable during the check, allowing for consistent and synchronized validation of credentials.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

A race condition in Linux kernel's futex robust list handling allows unauthorized access to a privileged process's memory after exec().

Vulnerability

Overview

In the Linux kernel, the sys_get_robust_list() and compat_get_robust_list() system calls use ptrace_may_access() to verify that the calling task is allowed to access another task's robust list pointer. This check is racy against a concurrent exec() in the target process. During exec(), a task may transition from a non-privileged binary to a privileged one (e.g., a setuid binary), changing its credentials and memory mappings. If get_robust_list() performs the ptrace_may_access() check before this transition, it may erroneously allow access to sensitive information after the target becomes privileged [1][2].

Exploitation

Scenario

An attacker task A can call get_robust_list() on a target task T while T is still unprivileged but about to execute a setuid-root binary. Since ptrace_may_access() checks permissions based on current credentials, it succeeds. However, if T begins exec() immediately afterwards, it becomes privileged and may change its memory mappings. Because get_robust_list() proceeds to access T->robust_list without synchronizing with exec(), it may read user-space pointers from a now-privileged process [1][2].

Impact

This race condition violates the intended post-exec access restrictions and could expose sensitive memory addresses of a privileged process. Such information disclosure can be used as a primitive in a larger exploit chain, potentially leading to unauthorized access across privilege boundaries [1][2].

Mitigation

The fix takes a read lock on signal->exec_update_lock prior to invoking ptrace_may_access() and accessing the robust list. This ensures that the target task's exec state remains stable during the check, providing consistent and synchronized validation of credentials. The patch has been applied to the stable kernel trees [1][2].

AI Insight generated on May 19, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected products

2

Patches

5

Vulnerability mechanics

Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

5

News mentions

0

No linked articles in our index yet.