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

arm64: syscall: Ensure saved x0 is kept in-sync with tracer updates

When seccomp support was originally added to arm64 in a1ae65b21941
("arm64: add seccomp support"), seccomp was erroneously called _before_
the ptrace syscall-enter-stop and therefore the tracer could trivially
manipulate the syscall register state after the seccomp check had
passed. This was subsequently fixed in a5cd110cb836 ("arm64/ptrace: run
seccomp after ptrace") by moving the seccomp check after the tracer has
run. Unfortunately, a decade later, that fix has been reported to be
incomplete.

On arm64, both the first argument to a syscall and its eventual return
value are allocated to register x0. In order to facilitate syscall
restarting and querying of syscall arguments on the syscall exit path,
the original value of x0 is stashed in 'struct pt_regs::orig_x0' early
during the syscall entry path and is returned for the first argument by
syscall_get_arguments(). Unlike 32-bit Arm, this stashed value is not
directly exposed via ptrace() and so changes to register x0 made by the
tracer on a syscall-enter-stop are not reflected in 'orig_x0'. This
means that seccomp, syscall tracepoints and audit can observe a stale
value for the register compared to the argument that will be observed by
the actual syscall.

Re-sync 'orig_x0' from x0 on the syscall entry path following a
potential ptrace stop (i.e. PTRACE_EVENTMSG_SYSCALL_ENTRY or
SECCOMP_RET_TRACE). This behaviour is limited to native tasks (because
compat tasks expose 'orig_r0' to ptrace) where the syscall is not being
skipped (because x0 is updated to hold the return value of -ENOSYS in
that case).
Published: 2026-08-10
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The flaw occurs on arm64 Linux when a ptrace session modifies the syscall register (x0) after the seccomp filter has already evaluated it. Because the kernel saves the original value of x0 in pt_regs::orig_x0 before the tracer has had a chance to run, the seccomp check and the associated tracepoints operate on stale data. As a result a process that can be ptraced can change the arguments of a syscall after the filter has passed, enabling it to bypass seccomp restrictions and invoke privileged or otherwise blocked system calls. The weakness lies in improper synchronization of kernel state with tracer updates.

Affected Systems

This issue is limited to the arm64 architecture within the Linux kernel. The vendors affected are Linux:Linux. The data does not list specific kernel version ranges, but the defect existed in versions prior to the inclusion of commit a5cd110cb836, which moved the seccomp check to run after the ptrace handler. Any arm64 kernel that had incorporated the original seccomp fix but had not applied the later completion commit may still be susceptible.

Risk and Exploitability

Although a CVSS score is not provided and the EPSS score is unavailable, the absence of a KEV listing indicates no known publicly observed exploits at the time of this advisory. Nevertheless, the vulnerability permits a local attacker with ptrace privileges to alter syscall arguments and defeat security filters, which could lead to arbitrary code execution or privilege escalation. The primary attack vector involves a process that can attach via ptrace to a target process that is subject to seccomp policies; this requires local kernel or user privileges. The severity of this flaw is high because the conditions for exploitation are straightforward once ptrace access is available.

Generated by OpenCVE AI on August 10, 2026 at 13:52 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the kernel to a version that includes commit a5cd110cb836 and any subsequent backports that complete the fix for this issue
  • Configure and enforce appropriate seccomp filters for all privileged workloads so that any remaining stale‑value handling is monitored
  • Restrict the use of ptrace to trusted processes by setting /proc/sys/kernel/yama/ptrace_scope or by using policy tools to limit ptrace permissions
  • Audit the system for any debugging or instrumentation tools that may attach to processes with seccomp enabled and ensure they are used only in controlled environments

Generated by OpenCVE AI on August 10, 2026 at 13:52 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 10 Aug 2026 14:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-20

Mon, 10 Aug 2026 12:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: arm64: syscall: Ensure saved x0 is kept in-sync with tracer updates When seccomp support was originally added to arm64 in a1ae65b21941 ("arm64: add seccomp support"), seccomp was erroneously called _before_ the ptrace syscall-enter-stop and therefore the tracer could trivially manipulate the syscall register state after the seccomp check had passed. This was subsequently fixed in a5cd110cb836 ("arm64/ptrace: run seccomp after ptrace") by moving the seccomp check after the tracer has run. Unfortunately, a decade later, that fix has been reported to be incomplete. On arm64, both the first argument to a syscall and its eventual return value are allocated to register x0. In order to facilitate syscall restarting and querying of syscall arguments on the syscall exit path, the original value of x0 is stashed in 'struct pt_regs::orig_x0' early during the syscall entry path and is returned for the first argument by syscall_get_arguments(). Unlike 32-bit Arm, this stashed value is not directly exposed via ptrace() and so changes to register x0 made by the tracer on a syscall-enter-stop are not reflected in 'orig_x0'. This means that seccomp, syscall tracepoints and audit can observe a stale value for the register compared to the argument that will be observed by the actual syscall. Re-sync 'orig_x0' from x0 on the syscall entry path following a potential ptrace stop (i.e. PTRACE_EVENTMSG_SYSCALL_ENTRY or SECCOMP_RET_TRACE). This behaviour is limited to native tasks (because compat tasks expose 'orig_r0' to ptrace) where the syscall is not being skipped (because x0 is updated to hold the return value of -ENOSYS in that case).
Title arm64: syscall: Ensure saved x0 is kept in-sync with tracer updates
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-10T11:59:40.623Z

Reserved: 2026-07-30T09:28:09.372Z

Link: CVE-2026-68171

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-10T19:00:04Z

Weaknesses
  • CWE-20

    Improper Input Validation