HIGH Introduced in 5.9
entry Seccomp Bypass
CVE-2026-89603
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
KernelScan AI7.7HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: entry: Fix seccomp bypass after ptrace with TSYNC Sashiko review pointed out the following issue. If a thread is stopped in syscall_trace_enter() for ptrace, another thread can install a seccomp filter with SECCOMP_FILTER_FLAG_TSYNC (e.g., via seccomp_attach_filter()). This will successfully set SYSCALL_WORK_SECCOMP on the stopped thread, but syscall_trace_enter() evaluates a cached 'work' variable sampled on entry. Consequently, the subsequent check for SYSCALL_WORK_SECCOMP misses the newly assigned flag, and the filter is silently bypassed. This race condition could allow an unprivileged process to execute a prohibited system call (e.g., execve) that the newly installed filter was intended to block, especially since the tracer might have modified the system call number during the ptrace stop. Fix this by re-reading the syscall_work flags after ptrace handling, so that any new SYSCALL_WORK_SECCOMP flag set by another thread via TSYNC during the ptrace stop is observed before the subsequent seccomp check.
02KernelScan AI Analysis
Risk summary
A race condition in the syscall entry path allows a seccomp filter installed via TSYNC to be bypassed when a thread is stopped for ptrace. An unprivileged process can exploit this to execute syscalls that should be blocked, potentially escalating privileges or escaping container sandboxes.
Vulnerability analysis
When a thread is stopped in the syscall entry path for ptrace, another thread can install a seccomp filter with TSYNC, setting the seccomp work flag on the stopped thread. However, the entry code uses a cached copy of the work flags sampled before the ptrace stop, so the seccomp check after ptrace does not see the newly set flag and silently skips the filter. This allows a prohibited syscall (potentially one whose number was modified by the tracer during the ptrace stop) to execute. The fix re-reads the syscall work flags after ptrace handling so that any seccomp flag set by TSYNC during the stop is observed before the seccomp check. The bug is reachable locally by an unprivileged process that can use ptrace and threads.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 5.10 | 5.9 | 5.10.270 | eca5ed4200f0 |
| 5.15 | 5.9 | 5.15.221 | 8709e7e1dd7d |
| 6.1 | 5.9 | 6.1.188 | 22bb836fc133 |
| 6.12 | 5.9 | 6.12.110 | 09e8880ce540 |
| 6.18 | 5.9 | 6.18.51 | 459f33f82864 |
| 6.6 | 5.9 | 6.6.157 | 23001ee5d863 |
| 7.2 | 5.9 | 7.2.4 | ab4647459098 |
| mainline | 5.9 | 7.3-rc1 | 4a3591287fb7 |
| cip/5.10 | 5.9 | 5.10.271-cip78 | eca5ed4200f0 |
| cip/6.1 | 5.9 | 6.1.189-cip61 | 22bb836fc133 |
| cip/6.1-rt | 5.9 | 6.1.189-cip61-rt32 | 22bb836fc133 |
| cip/6.12 | 5.9 | 6.12.111-cip32 | 09e8880ce540 |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.111-cip32 |
| cip/6.1 | Fixed in 6.1.189-cip61 |
| cip/6.1-rt | Fixed in 6.1.189-cip61-rt32 |
| cip/5.10 | Fixed in 5.10.271-cip78 |
| cip/5.10-rt | Affected — no CIP fix yet (latest 5.10.268-cip77-rt34) |