12. سپتامبر 2026
CVE-2026-89603: فیلتر seccomp بعد از ptrace با TSYNC بیصدا دور زده میشود

seccomp معمولاً بعد از ptrace اعمال میشود تا اگر tracer شماره syscall را عوض کرد، فیلتر همان مقدار جدید را ببیند. CVE-2026-89603 دقیقاً روی همین ترتیب سوار است، ولی با یک متغیر کهنه.
۱۱ سپتامبر ۲۰۲۶ ردHat باگ ۲۵۳۲۴۹۳ را با همین شناسه باز کرد. متن آسیبپذیری همان advisory آپاستریم کرنل است: اگر یک نخ داخل syscall_trace_enter() برای ptrace متوقف باشد، نخ دیگری میتواند فیلتر seccomp را با SECCOMP_FILTER_FLAG_TSYNC نصب کند (مسیر معمولی: seccomp_attach_filter()). کرنل روی نخ متوقفشده SYSCALL_WORK_SECCOMP را ست میکند. مشکل اینجاست که syscall_trace_enter() روی متغیر work که سر ورود نمونه گرفته کار میکند، نه روی فلگ تازهنوشتهشده. چک بعدی SYSCALL_WORK_SECCOMP فیلتر جدید را نمیبیند و فیلتر بیصدا دور زده میشود.
این race میتواند به پروسه بدون امتیاز اجازه بدهد syscall ممنوع — مثلاً execve — را اجرا کند؛ بهخصوص اگر tracer همان لحظه شماره syscall را عوض کرده باشد. کلاس ضعف در NVD/OpenCVE: CWE-367 (TOCTOU). OpenCVE امتیاز CVSS 3.1 = 8.4 با بردار AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N را ثبت کرده. در KEV نیست. EPSS پایین است، ولی مدل تهدید برای sandboxهایی که هم ptrace دارند هم TSYNC، واقعی است.
فیکس سهخطی، نه بازنویسی مسیر
پچ v2 جینجی روان (هواوی) در include/linux/entry-common.h بعد از بلوک ptrace یک READ_ONCE روی current_thread_info()->syscall_work میگذارد. پیشنهاد سبکوزن توماس گلایکسنر همین بود: بهجای صدا زدن بیقید seccomp_permit_syscall()، فلگ را بعد از ptrace از نو بخوان. کامنت در کد: «ptrace might have changed work flags». Fixes: 142781e108b1 («entry: Provide generic syscall entry functionality»).
نسخههای سالم طبق OpenCVE از جمله ۵٫۱۰٫۲۷۰، ۵٫۱۵٫۲۲۱، ۶٫۱٫۱۸۸، ۶٫۶٫۱۵۷، ۶٫۱۲٫۱۱۰، ۶٫۱۸٫۵۱، ۷٫۲٫۴ و ۷٫۳-rc1 به بعد هستند. کد آسیبپذیر از ۵٫۹ وارد درخت شده. بکپورتهای stable از جمله eca5ed4200f0 لینک شدهاند.
کرنل را به شاخهٔ پچشده برسانید. محدود کردن ptrace (yama.ptrace_scope، برداشتن CAP_SYS_PTRACE از کاربران غیرقابلاعتماد) سطح حمله را کوچک میکند ولی جایگزین پچ نیست. جزئیات: Bugzilla ردHat و OpenCVE.