چکیده
آسیبپذیری GhostLock در کامپوننت rtmutex کرنل لینوکس از نوع استفاده پس از آزادسازی (Use-After-Free) است که در نتیجه مدیریت نادرست وضعیت یک Waiter در مسیرهای خاص rtmutex ایجاد میشود. این ضعف امنیتی با ایجاد خرابی حافظه (Memory Corruption) در سطح کرنل، امکان افزایش سطح دسترسی (Privilege Escalation) را برای یک مهاجم لوکال با سطح دسترسی محدود فراهم میکند و در سناریوهای اندروید، میتواند منجر به افزایش سطح دسترسی تا Root و کنترل بخشهای حساس سیستم شود.
توضیحات
آسیبپذیری GhostLock با شناسه CVE-2026-43499 در کامپوننت rtmutex کرنل لینوکس و در مسیر مرتبط با Futex Priority Inheritance (Futex PI) قرار دارد. ریشه این آسیبپذیری به تابع remove_waiter()مربوط است؛ تابعی که برای حذف یک Waiter از ساختارهای مرتبط با انتظار در rtmutex استفاده میشود. این تابع در حالت عادی باید عملیات حذف را بر اساس تسک ثبتشده در waiter->task انجام دهد، اما در مسیر Proxy-Lock Rollback که از طریق futex_requeue() فراخوانی میشود، بهجای waiter->task از current استفاده میکند. از آنجا که در این مسیر waiter->task لزوماً همان current نیست، برخی عملیات مرتبط با Waiter روی تسکی انجام میشود که به آن Waiter تعلق ندارد و این ناهماهنگی، وضعیت داخلی مرتبط با Priority Inheritance (PI) را دچار خطا میکند.
این خطا چند پیامد مرتبط در سطح کرنل دارد. از یک سو، عملیات حذف Waiter از ساختار Red-Black Tree (RBTrees) بدون در اختیار داشتن قفل pi_lock مربوط به تسک واقعی Waiter انجام میشود. از سوی دیگر، وضعیت pi_blocked_on برای همان تسک بهدرستی پاکسازی نمیشود و در نتیجه، یک اشارهگر معلق (Dangling Pointer) باقی میماند؛ یعنی اشارهگری که همچنان به یک بخش یا ساختار نامعتبر در حافظه ارجاع میدهد. ادامه استفاده از این اشارهگر میتواند منجر به آسیبپذیری استفاده پس از آزادسازی (Use-After-Free) شود. علاوه بر این، تابع rt_mutex_adjust_prio_chain() ممکن است بهجای تسک واقعی مرتبط با Waiter، روی تسک دیگری عمل کند و در نتیجه، زنجیره تنظیم اولویت (Priority Chain) در وضعیت نادرستی قرار گیرد.
این آسیبپذیری در دسته CWE-416 قرار میگیرد که به ضعف «استفاده پس از آزادسازی» (UAF) مربوط است. در این نوع آسیبپذیری، سیستم پس از آزاد شدن یک Object یا حافظه اختصاصیافته به آن، همچنان از مرجع مربوط به آن استفاده میکند. از آنجا که حافظه آزادشده ممکن است بعداً به یک Object دیگر اختصاص پیدا کند، استفاده از مرجع قبلی میتواند باعث خواندن یا تغییر دادههای متعلق به Object دیگری شود و در نهایت منجر به خرابی حافظه (Memory Corruption) یا پیامدهای امنیتی جدیتر گردد. در GhostLock، باقی ماندن این اشارهگر نامعتبر در وضعیت Waiter باعث میشود یک خطای منطقی در مدیریت قفل به یک آسیبپذیری قابل سوءاستفاده در سطح کرنل تبدیل شود.
اهمیت این آسیبپذیری زمانی بیشتر مشخص میشود که بدانیم کد آسیبپذیر سالها در کرنل لینوکس وجود داشته است. بر اساس گزارش پژوهشگران، این کد از نسخه Linux 2.6.39 وارد کرنل شده و در نهایت با Commit 3bfdc63936dd پچ شده است. در این پچ، منطق تابع remove_waiter() تغییر کرده تا عملیات حذف Waiter، پاکسازی وضعیت pi_blocked_on و تنظیم زنجیره اولویت ، بهجای current بر اساس waiter->task انجام شود. به این ترتیب، عملیات مربوط به Waiter روی تسک واقعی مرتبط با آن انجام میشود و از ایجاد وضعیتهای نامعتبر در ساختارهای داخلی کرنل جلوگیری میشود.
در محیط اندروید، اهمیت GhostLock از این جهت است که یک آسیبپذیری در سطح کرنل میتواند یک دسترسی اولیه و محدود را به کنترل گستردهتری بر سیستم تبدیل کند. در سناریوی اکسپلویت منتشرشده برای دستگاههای اندرویدی، مهاجم ابتدا از مسیر Futex PI (Priority Inheritance) برای ایجاد وضعیت استفاده پس از آزادسازی در کامپوننت rtmutex استفاده میکند. سپس با دستکاری ساختارهای مرتبط با Waiter، شرایط لازم برای انجام نوشتن دلخواه در حافظه کرنل را فراهم میکند.
در ادامه این زنجیره، مهاجم میتواند با دستکاری ساختارهای حساس کرنل، کنترل بیشتری بر مکانیزمهای امنیتی و اطلاعات مربوط به سطح دسترسی پردازه به دست آورد. در نمونه اکسپلویت اندروید، این فرآیند شامل تغییر وضعیت SELinux و سپس دستکاری اطلاعات اعتبارنامه پردازه است. در این مرحله، اعتبارنامه پردازه به init_cred تغییر داده میشود تا شناسه کاربر (UID) به 0 و قابلیتهای پردازه به سطح کامل برسد. در نتیجه، پردازه مهاجم میتواند به سطح Root دست پیدا کند. بنابراین، GhostLock در این سناریو صرفاً به کرش یا ناپایداری کرنل محدود نمیشود و میتواند افزایش سطح دسترسی لوکال را تا دستیابی به سطح Root امکانپذیر کند.
این موضوع در دستگاههایی که از نسخههای آسیبپذیر کرنل اندروید استفاده میکنند اهمیت ویژهای دارد؛ زیرا در صورتی که مهاجم از طریق یک آسیبپذیری دیگر، یک برنامه مخرب یا هر روش دیگری به اجرای کد در فضای کاربر دست پیدا کند، میتواند از GhostLock بهعنوان مرحله بعدی زنجیره حمله استفاده کرده و با عبور از محدودیتهای سطح کاربر، دسترسی خود را تا سطح کرنل افزایش دهد.
از نظر پیامدهای امنیتی، هر سه اصل اصلی امنیت با شدت بالا تحت تأثیر قرار میگیرند. از منظر محرمانگی (Confidentiality)، سوءاستفاده موفق از GhostLock میتواند امکان دسترسی غیرمجاز به دادهها و منابع حساس سیستم را فراهم کند. از منظر یکپارچگی (Integrity)، مهاجم میتواند با دستیابی به سطح Root، اطلاعات و تنظیمات حساس سیستم را تغییر داده و حتی مکانیزمهای امنیتی آن را دستکاری کند. از منظر دسترسپذیری (Availability) نیز سوءاستفاده از این آسیبپذیری میتواند با ایجاد کرش یا ناپایداری در کرنل، عملکرد سرویسها و پایداری دستگاه را مختل کند. آسیبپذیری GhostLock در کرنل لینوکس برطرف شده است و برای جلوگیری از سوءاستفاده، باید کرنل به نسخه حاوی پچ امنیتی Commit 3bfdc63936dd بهروزرسانی شود.
CVSS
| Score | Severity | Version | Vector String |
| 7.8 | HIGH | 3.1 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |

لیست محصولات آسیب پذیر
| Versions | Product |
| Affected at 2.6.39 | Linux |
| affectedfrom 8161239a8bcce9ad6b537c04a1fa3b5c68bae693before f3fa3424bceb128d2be4b3745506b22844b87db7 | Linux |
| affectedfrom 8161239a8bcce9ad6b537c04a1fa3b5c68bae693before 838ce5cb5d93c3ab8b27e75bc6ad905a94b752fd | Linux |
| affectedfrom 8161239a8bcce9ad6b537c04a1fa3b5c68bae693before d8cce4773c2b23d819baf5abedc62f7b430e8745 | Linux |
| affectedfrom 8161239a8bcce9ad6b537c04a1fa3b5c68bae693before 8a1fc8d698ac5e5916e3082a0f74450d71f9611f | Linux |
| affectedfrom 8161239a8bcce9ad6b537c04a1fa3b5c68bae693before 6d52dfcb2a5db86e346cf51f8fcf2071b8085166 | Linux |
| affectedfrom 8161239a8bcce9ad6b537c04a1fa3b5c68bae693before 3fb7394a837740770f0d6b4b30567e60786a63f2 | Linux |
| affectedfrom 8161239a8bcce9ad6b537c04a1fa3b5c68bae693before 88614876370aac8ad1050ad785a4c095ba17ac11 | Linux |
| affectedfrom 8161239a8bcce9ad6b537c04a1fa3b5c68bae693before 3bfdc63936dd4773109b7b8c280c0f3b5ae7d349 | Linux |
لیست محصولات بروز شده
| Versions | Product |
| unaffectedfrom 0before 2.6.39 | Linux |
| unaffectedfrom 5.10.261through 5.10 | Linux |
| unaffectedfrom 5.15.212 through 5.15 | Linux |
| unaffectedfrom 6.1.175 through 6.1 | Linux |
| unaffectedfrom 6.6.140 through 6.6 | Linux |
| unaffectedfrom 6.12.86 through 6.12 | Linux |
| unaffectedfrom 6.18.27 through 6.18 | Linux |
| unaffectedfrom 7.0.4 through 7.0 | Linux |
| unaffectedat 7.1 | Linux |
| f3fa3424bceb128d2be4b3745506b22844b87db7 | Linux |
| 838ce5cb5d93c3ab8b27e75bc6ad905a94b752fd | Linux |
| d8cce4773c2b23d819baf5abedc62f7b430e8745 | Linux |
| 8a1fc8d698ac5e5916e3082a0f74450d71f9611f | Linux |
| 6d52dfcb2a5db86e346cf51f8fcf2071b8085166 | Linux |
| 3fb7394a837740770f0d6b4b30567e60786a63f2 | Linux |
| 88614876370aac8ad1050ad785a4c095ba17ac11 | Linux |
| 3bfdc63936dd4773109b7b8c280c0f3b5ae7d349 | Linux |
استفاده محصول در ایران
در این جدول، تعداد صفحات ایندکسشده در گوگل با دامنه .ir که Linux kernel را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.
| Approx. Usage in .ir Domain via Google (Total Pages) | Search Query (Dork) | Product |
| 38,400 | site:.ir “Linux kernel” | Linux kernel |
نتیجه گیری
آسیبپذیری GhostLock با شدت بالا (High) در کامپوننت rtmutex کرنل لینوکس، از نوع استفاده پس از آزادسازی (UAF) است که میتواند در شرایط خاص منجر به خرابی حافظه، افزایش سطح دسترسی و در سناریوهای اندروید، دستیابی به سطح Root شود. با توجه به امکان سوءاستفاده از این ضعف در سطح کرنل، اجرای اقدامات زیر برای کاهش ریسک توصیه میشود:
- بهروزرسانی کرنل: بهروزرسانی کرنل مهمترین اقدام برای رفع آسیبپذیری GhostLock است؛ بنابراین باید کرنل به نسخهای حاوی پچ امنیتی Commit 3bfdc63936dd بهروزرسانی شود.
- بررسی وضعیت کرنل دستگاههای اندروید: مدیران سیستم و تیمهای امنیتی باید نسخه کرنل دستگاههای اندروید را بررسی کرده و مشخص کنند آیا نسخه مورد استفاده در محدوده آسیبپذیر قرار دارد یا خیر.
- اولویتبندی دستگاههای حساس: سیستمهای اشتراکی، سرورهای چندمستاجری (Multi-Tenant Servers)، محیطهای ابری، کانتینرها و دستگاههایی که دادههای حساس را پردازش میکنند، باید در اولویت دریافت پچ قرار گیرند.
- کنترل اجرای کد در فضای کاربر: دسترسی کاربران و برنامههای غیرمجاز به اجرای کد در فضای کاربر (User Space) باید تا حد امکان محدود شود؛ زیرا سوءاستفاده از GhostLock در سناریوهای لوکال به دسترسی اولیه در همین سطح نیاز دارد.
- مانتیتورینگ فعالیتهای مشکوک: تیمهای امنیتی باید فعالیتهای غیرعادی مرتبط با کرشهای کرنل، تلاش برای افزایش سطح دسترسی و تغییرات مشکوک در پیکربندی امنیتی سیستم را بهدقت مانیتور کنند
اجرای این اقدامات، بهویژه بهروزرسانی کرنل و اعمال پچ امنیتی مربوط به GhostLock، احتمال سوءاستفاده موفق از این آسیبپذیری را کاهش میدهد و از تبدیل یک دسترسی محدود در فضای کاربر به دسترسی سطح Root و کنترل گستردهتر سیستم جلوگیری میکند.
امکان استفاده در تاکتیکهای MITRE ATT&CK (در زمان اجرای حمله)
Privilege Escalation (TA0004)
بهره برداری موفق از CVE-2026-43499 مستلزم افزایش امتیاز (Privilege Escalation) است. مهاجم برای آغاز حمله، نیاز به دسترسی محلی با سطح دسترسی پایه (مطابق CVSS، PR:L) دارد. او با مهندسی شرایط رقابت (Race Condition) در مسیرهای rtmutex و futex، قادر به ایجاد یک وضعیت ناهمگام سازی (Synchronization Flaw) و به دنبال آن، استفاده از حافظهٔ آزاد شده (Use-After-Free) در فضای کرنل می شود. در پی تخریب حافظهٔ هسته (Kernel Memory Corruption)، امکان اجرای کد دلخواه با سطح دسترسی ریشه (root) یا کرنل فراهم میگردد.
Execution (TA0002)
پس از فعال شدن حالت آسیب پذیر، استفاده از اشاره گری که به ساختار waiter آزاد شده اشاره دارد، منجر به Use-After-Free (UAF) در فضای کرنل می شود. اگر مهاجم بتواند قابلیت های لازم برای کنترل حافظهٔ تخریب شده را فراهم آورد (مانند دسترسی به نوشتن یا تغییر محتوای اشیاء کرنلی) این نقص از یک Crash به ابزاری برای تغییر جریان اجرا (Control Flow Hijacking) تبدیل می شود. در نتیجه، اجرای کد با سطح دسترسی کرنل، پیامدِ نهایی بهره برداری هدفمند از این UAF است، نه صرفاً یک عارضه جانبی ناشی از Crash.
Defense Evasion (TA0005)
در صورت تبدیل موفق UAF به اجرای کد در فضای کرنل، مهاجم می تواند فعالیت های خود را خارج از محدوده کنترل معمول پردازه های user-space انجام دهد. اجرای عملیات در سطح Kernel می تواند به مهاجم امکان دستکاری مکانیزم های امنیتی، فرآیندهای نظارتی یا ساختارهای مورد استفاده سیستم عامل برای اعمال کنترل دسترسی را بدهد. با این حال، Defense Evasion قابلیت ذاتی CVE نیست و تنها پس از اجرای موفق exploit و در صورت وجود یک primitive مناسب قابل تحقق است.
Impact (TA0040)
خرابی حافظه در Kernel می تواند علاوه بر اجرای کد، موجب Kernel Panic، Crash سیستم یا Denial of Service شود. از طرف دیگر، اگر مهاجم بتواند UAF را به اجرای کد کنترل شده تبدیل کند، تأثیر آن می تواند شامل از دست رفتن محرمانگی، یکپارچگی و دسترس پذیری سیستم باشد. CVSS نیز برای هر سه مؤلفه C:H/I:H/A:H را تعیین کرده و امتیاز پایه 7.8 (High) است.
منابع
- https://www.cve.org/CVERecord?id=CVE-2026-43499
- https://www.cvedetails.com/cve/CVE-2026-43499/
- https://vulmon.com/vulnerabilitydetails?qid=CVE-2026-43499
- https://vuldb.com/vuln/365007
- https://github.com/cuteaplane/GhostLock-for-OnePlus15T
- https://github.com/mumaosong/cve-2026-43499-CyberMeowfia
- http://www.openwall.com/lists/oss-security/2026/07/08/12
- https://nvd.nist.gov/vuln/detail/CVE-2026-43499
- https://git.kernel.org/stable/c/3bfdc63936dd4773109b7b8c280c0f3b5ae7d349
- https://git.kernel.org/stable/c/3fb7394a837740770f0d6b4b30567e60786a63f2
- https://git.kernel.org/stable/c/6d52dfcb2a5db86e346cf51f8fcf2071b8085166
- https://git.kernel.org/stable/c/88614876370aac8ad1050ad785a4c095ba17ac11
- https://git.kernel.org/stable/c/8a1fc8d698ac5e5916e3082a0f74450d71f9611f
- https://git.kernel.org/stable/c/d8cce4773c2b23d819baf5abedc62f7b430e8745
- https://git.kernel.org/stable/c/838ce5cb5d93c3ab8b27e75bc6ad905a94b752fd
- https://git.kernel.org/stable/c/f3fa3424bceb128d2be4b3745506b22844b87db7
- http://cwe.mitre.org/data/definitions/416.html
گزارش اثبات آسیبپذیری CVE-2026-43499
اطلاعات آسیبپذیری
عنوان: آسیبپذیری GhostLock از نوع Use-After-Free در مدیریت RT Mutex در Linux Kernel با امکان افزایش سطح دسترسی تا Root
شناسه: CVE-2026-43499
وضعیت مشاوره: Advisory / Patch Available
امتیاز: CVSS: 7.8 (High)
محصول: Linux Kernel (هسته لینوکس و سیستم عامل های مبتنی بر آن مانند Android)
محصول / نسخههای آسیبپذیر
در نسخههای زیر:
- نسخه های کرنل لینوکس ۲.۶.۳۹ تا ۶.۱.۱۷۵ (به استثنای ۶.۱.۱۷۵)
- نسخه های کرنل لینوکس ۶.۲ تا ۶.۶.۱۴۰ (به استثنای ۶.۶.۱۴۰)
- نسخه های کرنل لینوکس ۶.۷ تا ۶.۱۲.۸۶ (به استثنای ۶.۱۲.۸۶)
- نسخه های کرنل لینوکس ۶.۱۳ تا ۶.۱۸.۲۷ (به استثنای ۶.۱۸.۲۷)
- نسخه های کرنل لینوکس ۶.۱۹ تا ۷.۰.۴ (به استثنای ۷.۰.۴)
- دستگاه های Android مبتنی بر هسته GKI (مانند برخی مدل های Pixel و سامسونگ) که نسخه های آسیب پذیر را اجرا می کنند
محیطهای درگیر
- تمام سرورها و ایستگاه های کاری لینوکسی با هسته آسیب پذیر
- محیط های Cloud و Container که از هسته میزبان مشترک استفاده میکنند
- زیرساخت های CI/CD که امکان فرار از کانتینر به میزبان را فراهم میکند
- دستگاه های Android با هسته آسیب پذیر
کامپوننتهای آسیبپذیر
- فایل kernel/locking/rtmutex.c، پیادهسازی Real-Time Mutex در هسته لینوکس
- تابع remove_waiter()، پاککننده صف انتظار در مسیر PI
- سیستمکال futex(2) با پرچم هایPI مانند ( FUTEX_WAIT_REQUEUE_PI و FUTEX_CMP_REQUEUE_PI)
ریشه مشکل (Root Cause Analysis)
CVE-2026-43499 که توسط Nebula Security با نام GhostLock معرفی شده است، این آسیب پذیری ناشی از مدیریت نادرست طول عمر (lifetime management) ساختارهای waiter در مسیر timeout مربوط به futex PI requeue است. در شرایط deadlock، مسیر cleanup پس از انقضای timeout همچنان به داده های ذخیره شده روی stack کرنل اعتماد میکند، در حالی که این داده ها دیگر معتبر نبوده و ممکن است توسط syscall های دیگر بازنویسی شده باشند. این وضعیت منجر به یک Kernel Stack Use-After-Free قابل کنترل توسط مهاجم شده و امکان ساخت primitive های قدرتمند برای افشای حافظه، خواندن/نوشتن دلخواه در کرنل و در نهایت ارتقای سطح دسترسی تا root را فراهم میکند.
تابع remove_waiter() در هسته لینوکس وظیفه پاک سازی یک waiter از صف انتظار یک rtmutex را بر عهده دارد. این تابع برای مسیر عادی (self-blocking slow path) طراحی شده است، جایی که current (وظیفه در حال اجرا) همان waiter است.
مرحله 1: ایجاد PI Requeue
مکانیزم requeue پیآی (PI) در futex لینوکس برای انتقال یک waiter که بر روی futex_A در حال انتظار است، به زنجیره ی انتظار PI مربوط به futex_B استفاده میشود. یک سناریوی معمول برای این کار، تابع pthread_cond_broadcast در سطح زیرین است. این مکانیزم شامل دو عملیات زیر میشود:
ابتدا یک thread روی futex A منتظر میماند:
FUTEX_WAIT_REQUEUE_PI(uaddr_A, timeout, uaddr_B) // Waiting on A, expected to be requeued to B.
سپس توسط:
FUTEX_CMP_REQUEUE_PI(uaddr_A, nr, uaddr_B) // Requeue the waiter on A to B.
از آنجایی که B یک futex از نوع PI است، waiter به درخت انتظار PI مربوط به rt_mutex متعلق به B اضافه شده و در فرآیند ارث بری اولویت (Priority Inheritance) شرکت داده میشود
مرحله 2: ایجاد Deadlock
PoC ارائهشده توسط Nebula از سه futex و سه thread برای ساختن یک حلقه وابستگی استفاده میکند:
owner -> waits on chain
waiter -> waits on target
در نهایت وضعیت زیر ایجاد میشود:
owner thread
holds f_pi_target
waits on f_pi_chain
waiter thread
holds f_pi_chain
waits on f_pi_target
بنابراین یک deadlock در PI chain شکل میگیرد
مرحله 3: Timeout
پس از پایان timeout مربوط به:
FUTEX_WAIT_REQUEUE_PI(..., timeout=5s)
کرنل وارد مسیر rollback میشود تا waiter را از درخت PI حذف کند.
مرحله 4: استفاده از دادههای منقضیشده
اشکال اصلی در همین مرحله رخ میدهد. کد cleanup برای بازگردانی وضعیت PI به ساختارهایی مراجعه میکند که آدرس آن ها قبلاً روی stack ذخیره شده است. اما در این زمان:
- frame اولیه دیگر معتبر نیست
- stack کرنل ممکن است آزاد یا reuse شده باشد
- محتوای آن توسط syscall های دیگر بازنویسی شده باشد
با وجود این، cleanup همچنان همان pointer ها را معتبر فرض میکند و روی آن ها عملیات انجام میدهد.
برخلاف بسیاری از آسیب پذیری های UAF که روی slab یا heap رخ میدهند، GhostLock مستقیماً روی stack کرنل اتفاق میافتد بنابراین تکنیک های سنتی heap feng shui کاربرد محدودی دارند. در عوض هر syscall که بتواند داده های کنترل شده را روی stack کرنل قرار دهد میتواند برای overwrite کردن frame قدیمی استفاده شود.
آسیب پذیری زمانی قابل بهره برداری میشود که مهاجم بتواند پیش از اجرای cleanup، محتوای stack را با داده های دلخواه بازنویسی کند در IonStack این کار از طریق syscall هایی انجام میشود که buffer های کاربر را مستقیماً روی stack کرنل کپی میکنند. سری توابع stamp_* استفاده شده در کد PoC رویکردهای مختلف کنترل پشته را نشان میدهد.
- stamp_prctl
- stamp_socket
- stamp_pselect
- stamp_process_vm
- stamp_keyctl
- stamp_tcp
- stamp_futex
مسیر اصلی مورد استفاده در PoC مبتنی بر pselect6() است در این روش پارامترهای fd_set از pselect مستقیماً روی stack کرنل قرار میگیرند و مهاجم اشارهگرهای جعلی را به fd_set وارد میکند و هنگامی که timeout رخ میدهد و مسیر پاک سازی میشود، این اشاره گرها خوانده میشوند و در نتیجه به کنترل پذیری UAF پشته دست مییابد.
بخش آسیبپذیر
رفتار ناامن سیستم:
هسته لینوکس در مسیر futex_requeue() با پرچم های PI، هنگام rollback از بن بست، تابع remove_waiter() را به اشتباه فراخوانی میکند. این اشتباه باعث میشود که pi_blocked_on در وظیفه waiter به جای NULL، همچنان به ساختار rt_mutex_waiter آزادشده روی پشته خود اشاره کند. این اشاره گر معلق (dangling pointer) در هر بازرسی بعدی از زنجیره PI (مانند sched_setattr()) میتواند باعث Use-After-Free و در نتیجه خرابی حافظه هسته شود.
نحوه سوءاستفاده مهاجم:
- مهاجم یک برنامه معمولی (unprivileged) روی سیستم هدف اجرا میکند
- با استفاده از سه futex و سه Thread هماهنگ، یک بن بست Priority Inheritance (PI) ایجاد میکند
- مهاجم با استفاده از prctl(PR_SET_MM_MAP)، پشته آزاد شده را با داده های کنترل شده خود بازنویسی میکند و یک ساختار جعلی rt_mutex_waiter میسازد
- سپس با فراخوانی sched_setattr()، هسته را مجبور به پیمایش زنجیره PI و دنبال کردن اشاره گر جعلی میکند
- مهاجم با کنترل دقیق ساختار جعلی، به یک کنترل محدود بر نوشتن (constrained write) در یک آدرس دلخواه هسته دست مییابد
- مهاجم با نوشتن روی inet6_protos[IPPROTO_UDP]، یک بسته UDP IPv6 لوپ بک را به سمت کد مخرب خود در CPU Entry Area (CEA) هدایت میکند (یک primitive برای اجرای کد)
- سپس بیت های core_pattern را تغییر داده و یک شل با دسترسی root اجرا میکند
- مهاجم از یک کاربر معمولی به root تبدیل میشود
نقش این آسیبپذیری در زنجیره حمله
این آسیب پذیری یک ابزار افزایش سطح دسترسی (Privilege Escalation) کامل و قابل اعتماد در زنجیره حمله محلی محسوب میشود. با توجه به نمره CVSS 7.8 (بالا) ، ماهیت محلی (Local)، نیاز به دسترسی سطح پایین (Low Privileges Required)، و قابلیت فرار از کانتینر، مهاجم ابتدا باید از طریق روش دیگری (مثل فیشینگ، بدافزار، یا آسیبپذیری دیگر) یک پوسته اولیه روی سیستم قربانی اجرا کند، اما پس از آن میتواند طی حدود ۵ ثانیه به root دسترسی پیدا کند.
این آسیب پذیری بخش دوم زنجیره حمله IonStack است . بخش اول (CVE-2026-10702) یک نقص در مرورگر Firefox است که به مهاجم امکان اجرای کد در داخل سندباکس مرورگر را میدهد. GhostLock این کد را به root روی سیستم میزبان ارتقا میدهد.
پیشنیازهای بهرهبرداری (Prerequisites)
- دسترسی محلی به سیستم (حساب کاربری با سطح دسترسی پایین)
- هسته آسیب پذیر با CONFIG_FUTEX_PI فعال
- امکان اجرای برنامه در سیستم
- عدم نصب وصله امنیتی
رفتار مورد انتظار در حالت امن (Expected Secure Behavior)
- تابع remove_waiter() باید pi_blocked_on را روی waiter->task پاک کند، نه روی current
- هنگام rollback در مسیر futex_requeue()، pi_blocked_on در وظیفه waiter باید به NULL تنظیم شود تا اشارهگر معلق باقی نماند
- در صورت بروز خطا یا شرایط غیرمنتظره در عملیات proxy lock، تمام اشارهگرهای باقیمانده باید به NULL تنظیم شوند
- پیادهسازی اخطارهای ابزارهای تحلیل ایستا برای شناسایی استفاده از current در توابعی که ممکن است به نمایندگی از وظیفه دیگر فراخوانی شوند
راهکارها و کاهش ریسک (Mitigation / Patch Guidance)
اقدامات فوری برای کاهش ریسک:
- بروزرسانی فوری هسته لینوکس
- راه اندازی مجدد سیستم پس از نصب هسته جدید
اقدامات کوتاهمدت / میانمدت برای کاهش ریسک:
- استفاده از KernelCare Live Patching (برای CloudLinux و سایر توزیع های پشتیبانیشده) به عنوان راهکار موقت
- فعالسازی kernel.randomize_kstack_offset=1
- محدود کردن دسترسی محلی کاربران، حذف حساب های کاربری غیرضروری و اعمال اصل کمترین دسترسی (Least Privilege)
اقدامات بلندمدت برای کاهش ریسک:
- استقرار راهکارهای خودکار بروزرسانی امنیتی (Patch Management) برای هسته سیستم عامل
- پیاده سازی اصل Zero Trust و Least Privilege در سطح سیستم عامل و شبکه
- اجرای دوره ای تست نفوذ (Penetration Testing) با سناریوهای افزایش سطح دسترسی محلی
- استفاده از راهکارهای EDR و endpoint security برای شناسایی رفتارهای غیرعامل در سطح هسته
تشخیص و مانیتورینگ (Detection & Monitoring)
نشانههای تلاش برای سوءاستفاده:
- پردازه های با سطح دسترسی پایین که الگوهای غیرعادی از فراخوانی های futex یا عملیات requeue انجام می دهند
- تلاش برای استفاده از prctl(PR_SET_MM, PR_SET_MM_MAP,…) توسط پردازه های غیرمجاز
- اجرای ناگهانی پردازه ها با امتیاز root از حسابهای با سطح دسترسی پایین
- رفتارهای فرار از کانتینر (دسترسی به منابع میزبان)
- crash های هسته یا رفتار غیرعادی در زیرسیستم شبکه (به دلیل دستکاری inet6_protos)
- فعالیت غیرعادی در محیط های Android (بهره برداری از طریق مرورگر)
- اجرای پردازه های غیرمنتظره توسط Firefox
منابع پیشنهادی برای مانیتورینگ و پایش:
- لاگ های هسته (dmesg و journalctl -k)
- سیستم های SIEM برای جمع آوری و تحلیل مرکزی لاگ ها
- راهکارهای EDR (Endpoint Detection and Response) مانند CrowdStrike، SentinelOne، یا Microsoft Defender for Endpoint
واکنش به حادثه (Incident Response)
- ایزوله سازی فوری، سیستم آسیب دیده را از شبکه جدا کنید تا از حرکت جانبی مهاجم جلوگیری شود
- جمع آوری و حفظ لاگ های crash، لاگ های شبکه برای تحلیل فارنزیک (Forensics)
- پردازه های دارایسطح دسترسی بالا و زمان اجرای آنها را بررسی کنید
- بازنشانی تمام رمزهای عبور کاربران، توکنهای session، و هر گونه اعتبار دسترسی
- هسته را به نسخه اصلاح شده ارتقا دهید و راه اندازی مجدد انجام دهید
- بررسی یکپارچگی فایل های سیستمی و شناسایی باینری های غیرمجاز
- اسکن کامل سایر سیستم های شبکه برای شناسایی علائم مشابه یا دسترسی مهاجم به آن ها
- مستندسازی کامل حادثه (زمان وقوع، نشانهها، اقدامات انجامشده، درسآموختهها) و گزارش به مدیریت ارشد و تیم واکنش سریع (CSIRT)
جریان حمله (Attack Flow)
در نمودار زیر (شکل ۱)، مهاجم با دسترسی سطح پایین، از نقص remove_waiter() برای ایجاد یک Use-After-Free در هسته استفاده کرده و با کنترل دقیق حافظه، به root دسترسی پیدا میکند.

اثبات مفهوم (PoC) — کاملاً غیرمخرب
آزمایشگاه تخصصی Vulnerbyte، این آسیبپذیری را در محیط ایزوله و کنترلشده با استفاده از نسخه آسیبپذیر بررسی و اجرا کرده است
- این آزمایشگاه شامل نسخه آسیب پذیر هسته است
- فایل PoC به نام preload.so با استفاده از adb به دستگاه منتقل شده و سپس با استفاده از دستور زیر آن را اجرا می کنیم
adb shell ‘LD_PRELOAD=/data/local/tmp/preload.so /system/bin/true’
- اجرای PoC در بعضی از دستگاه باعث reboot شدن دستگاه می شود و در مابقی باعث افزایش دسترسی به root می شود
- اجرای PoC در محیط آزمایشگاهی منجر به crash و ریستارت شدن دستگاه و سپس گرفتن دسترسی root در سامانه آسیبپذیر شد
- این اثبات مفهوم صرفاً توصیفی و آموزشی بوده و شامل تغییرات مخرب نمیشود

رفع مسئولیت
این گزارش صرفاً با هدف آموزش، تحلیل فنی و ارتقای امنیت سازمانی تهیه شده است. هرگونه استفاده مخرب یا خارج از چارچوبهای قانونی از محتوای آن ممنوع است.
منابع
https://www.cve.org/CVERecord?id=CVE-2026-43499
https://nvd.nist.gov/vuln/detail/CVE-2026-43499
https://nebusec.ai/research/ionstack-part-2/
https://nebusec.ai/research/ionstack-part-3/
https://github.com/NebuSec/CyberMeowfia/blob/main/IonStack/CVE-2026-43499/poc/poc.c
https://github.com/No-22-Github/UnPlus/
https://cwe.mitre.org/data/definitions/416.html
Linux Kernel
CVE-2026-43499 – Use-After-Free in rtmutex Subsystem Leading to Local Privilege Escalation and Container Escape (GhostLock)
Affects
- Linux Kernel
- Versions:
- Linux Kernel 2.6.39 through 6.1.174 (excluding 6.1.175)
- Linux Kernel 6.2 through 6.6.139 (excluding 6.6.140)
- Linux Kernel 6.7 through 6.12.85 (excluding 6.12.86)
- Linux Kernel 6.13 through 6.18.26 (excluding 6.18.27)
- Linux Kernel 6.19 through 7.0.3 (excluding 7.0.4)
- Linux Kernel up to 7.1-rc1
- Components:
- Real-time mutex (rtmutex) subsystem (
kernel/locking/rtmutex.c) - Futex priority-inheritance (PI) path
- Real-time mutex (rtmutex) subsystem (
- Files:
kernel/locking/rtmutex.c
- Functions:
remove_waiter()
NOT VULNERABLE:
- Linux Kernel 6.1.175 and later
- Linux Kernel 6.6.140 and later
- Linux Kernel 6.12.86 and later
- Linux Kernel 6.18.27 and later
- Linux Kernel 7.0.4 and later
Affected Linux Distributions include (but are not limited to):
- Red Hat Enterprise Linux 6, 7, 8, 9, 10
- AlmaLinux 8, 9, 10
- Debian (various releases)
- Ubuntu (various releases)
- SUSE Linux Enterprise and openSUSE
- CloudLinux (CL7, CL7h, CL8)
- TencentOS Server 2.4, 3.1, 3.3, 4
Description
CVE-2026-43499, nicknamed “GhostLock” , is a critical use-after-free (UAF) vulnerability in the Linux kernel’s real-time mutex (rtmutex) subsystem discovered by Nebula Security using their automated VEGA tool .
The vulnerability resides in the remove_waiter() function within kernel/locking/rtmutex.c . This function is responsible for cleaning up after a task that has stopped waiting for a mutex. However, on the futex priority-inheritance (PI) path, a specific rollback scenario causes an error: instead of clearing the pi_blocked_on pointer on the actual waiting task, the function clears it on the current task .
// Simplified illustration of the bug in remove_waiter()
// In the requeue-PI rollback path, the function operates on the
// wrong task, leaving a dangling pointer.
As a result, the waiter task returns to userspace with pi_blocked_on still pointing to a freed rt_mutex_waiter structure on its kernel stack frame . An attacker can trigger this race condition to create a stale pointer, then reclaim the freed memory with controlled data through a series of futex operations and syscalls, forging a fake rt_mutex_waiter structure . This can be chained to achieve arbitrary kernel read/write and hijack control flow, leading to privilege escalation to root .
This bug was introduced in the kernel’s 2.6.39 release in 2011 and went unnoticed for approximately 15 years .
Attack Vector
Primary Attack Vector:
Local (requires ability to run unprivileged native code on the target system)
Attack Scenario:
- An attacker obtains a low-privileged shell or code execution on a vulnerable Linux system or within a container .
- The attacker runs a crafted exploit that uses ordinary threading and futex system calls to trigger the race condition in the
remove_waiter()function . - The race condition creates a dangling pointer to freed kernel stack memory .
- The attacker reclaims the freed stack frame with controlled data, forging a fake
rt_mutex_waiterstructure and leveraging theprefetchinstruction and other techniques to bypass kernel security mitigations like KASLR . - The attacker chains this primitive into a kernel write primitive, typically by pointing to the
inet6_protos[IPPROTO_UDP]table and then hijacking control flow from a loopback IPv6 UDP packet . - This results in execution of attacker-controlled code with root privileges and also enables container escape .
Key Characteristics:
| Attribute | Details |
|---|---|
| Attack Vector | LOCAL |
| Attack Complexity | LOW |
| Privileges Required | LOW |
| User Interaction | NONE |
| Scope | CHANGED (can escape container) |
| Confidentiality Impact | HIGH |
| Integrity Impact | HIGH |
| Availability Impact | HIGH |
| Exploit Availability | Yes – Proof-of-concept exploit code is publicly available |
| Active Exploitation | Not confirmed in the wild |
Conditions Increasing Risk:
- Publicly available working exploit code
- Affects default kernel configurations on essentially all Linux distributions
- No special capabilities or user namespaces required
- Can be used for container escape, making it dangerous in multi-tenant environments
- Exploit is approximately 97% reliable and can achieve root in ~5 seconds on a targeted system
Impact
Successful exploitation allows an unprivileged local attacker to:
- Escalate privileges to root on the affected system
- Escape containers, breaking the isolation boundary between the container and the host
- Execute arbitrary code with kernel privileges
- Compromise the entire system, as root access allows full control over all files, processes, and system configurations
- Use the compromised system as a pivot point for lateral movement within enterprise networks
| Impact Area | Level | Description |
|---|---|---|
| Confidentiality | HIGH | Full access to all system data |
| Integrity | HIGH | Complete control over system modification |
| Availability | HIGH | Potential to disrupt or destroy the system |
Observed Exploitation & Threat Activity
- Discovery: Nebula Security’s VEGA automated analysis tool
- Reported: April 18, 2026
- Patched in Mainline: April 20, 2026 (commit 3bfdc63936dd)
- Backported: May 4, 2026
- Public Disclosure: July 7, 2026
- Public PoC: Publicly available
- In-the-Wild Exploitation: Not confirmed as of publication
- CISA KEV Catalog: Not listed as of publication
- CVSS Score: 7.8 (High)
- Google kernelCTF Award: $92,337 for the exploit
- Regression: The original fix introduced a separate crash vulnerability (CVE-2026-53166) that was later patched
Severity & Metrics
- CVSS v3.1 (NVD/GitHub CNA): High (7.8)
- Attack Vector: LOCAL
- Attack Complexity: LOW
- Privileges Required: LOW
- User Interaction: NONE
- Scope: CHANGED (can escape container)
- Confidentiality Impact: HIGH
- Integrity Impact: HIGH
- Availability Impact: HIGH
Relevant CWE:
- CWE-416 – Use After Free
- CWE-667 – Improper Locking
- CWE-821 – Incorrect Synchronization
Patch & Vendor Status
- Official Patches Available: Yes – fixed upstream and backported to stable kernels
- Mainline Fix: Linux commit 3bfdc63936dd
- First Fixed Stable Kernels:
- 6.1.175
- 6.6.140
- 6.12.86
- 6.18.27
- 7.0.4
Distribution-Specific Fixed Versions:
| Distribution | Fixed Kernel Version(s) |
|---|---|
| AlmaLinux 8 | 4.18.0-553.141.2.el8_10 or higher |
| AlmaLinux 9 | 5.14.0-687.24.1.el9_8 or higher |
| AlmaLinux 10 | 6.12.0-211.32.1.el10_2 or higher |
| CloudLinux 7 | 3.10.0-962.3.2.lve1.5.89.el7 or higher |
| CloudLinux 7h | 4.18.0-553.141.2.lve.el7h or higher |
| CloudLinux 8 | 4.18.0-553.141.2.lve.el8 or higher |
| TencentOS 2.4 | 5.4.119-19.0009.67.1.tl2 or higher |
| TencentOS 3.1 | 5.4.119-19.0009.67.1.tl3 or higher |
| TencentOS 3.3 | 5.4.241-24.0017.41.3.tl3 or higher |
| TencentOS 4 | 6.6.117-45.11.4.tl4 or higher |
Update Methods:
| Distribution | Command |
|---|---|
| AlmaLinux / RHEL / CloudLinux | sudo dnf clean metadata && sudo dnf upgrade |
| AlmaLinux / RHEL (older) | sudo yum update kernel |
| TencentOS Server | dnf install kernel-<fixed-version> |
| Debian / Ubuntu | sudo apt update && sudo apt upgrade |
| SUSE | zypper update kernel |
| Critical: A system reboot is required after installing the updated kernel for the changes to take effect . |
Mitigation & Remediation
Immediate Actions
| Action | Method |
|---|---|
| Update the kernel | Apply the vendor-provided kernel updates as per the table above |
| Reboot the system | The updated kernel will not take effect until the system is rebooted |
| Verify the new kernel version | After rebooting, run uname -r to confirm the running kernel is at or above the fixed version |
| Prioritize multi-tenant systems | Systems with untrusted users, containers, cloud servers, and CI runners should be patched first |
Critical Reminder: There is no complete runtime workaround for this vulnerability. The affected code is compiled into the standard kernel and cannot be disabled . Applying the patched kernel is the only complete remediation.
Short-Term Defensive Measures
If patching cannot be applied immediately:
- Restrict local user access – Limit who can log into the system
- Consider using seccomp filters – Block the specific futex operations (
FUTEX_WAIT_REQUEUE_PIandFUTEX_CMP_REQUEUE_PI) that trigger the vulnerability, but this may break legitimate applications - Enable additional kernel mitigations – Settings like
kernel.randomize_kstack_offset=1(can reduce exploit reliability) are not a substitute for the fix - Consider using KernelCare live patching if available, but test before deploying
Important Note: These are temporary mitigations, not complete fixes. Patching is the only complete solution.
Long-term Defensive Measures
- Implement a robust patch management policy for kernel updates
- Use live patching solutions where available to apply critical kernel fixes without rebooting
- Limit local user access on critical systems
- Deploy intrusion detection systems to monitor for kernel exploitation attempts
- Use security modules like SELinux or AppArmor to limit the impact of a compromise
- Regularly audit systems for indicators of privilege escalation
Detection & Monitoring
Recommended Detection Sources:
| Source | Purpose |
|---|---|
System logs (/var/log/syslog, /var/log/messages) |
Detect kernel instability or crashes |
| EDR / SIEM | Monitor for unusual futex system call patterns or local process behavior |
| Vulnerability scanners | Identify systems running vulnerable kernel versions |
| Asset inventory | Track kernel versions across the organization |
Indicators of Attempted Exploitation:
- Unexpected system crashes or kernel panics
- Unusual local process activity from unprivileged users
- Suspicious system calls in the
futexfamily - Unauthorized root access events
- Container escape events
Detection Strategy:
- Inventory all Linux systems across your organization
- Check kernel versions against the list of fixed versions:
- Fixed versions are listed in the Patch & Vendor Status section
- Monitor for publicly available PoC usage through endpoint detection
- Review local user activity for suspicious processes
Post-Incident Response
If exploitation is suspected:
- Isolate affected system from the network immediately
- Preserve forensic evidence (system logs, memory dumps, process history, network captures)
- Identify the source of the local access that was used for exploitation
- Rotate all credentials stored on the compromised system (SSH keys, application secrets, user passwords)
- Audit for backdoors – Check:
- SUID/SGID binaries, especially those that are modified or newly created
- Systemd services and cron jobs
- Kernel modules
- SSH authorized_keys files
- User accounts, especially those with UID 0
- Assume full compromise – Root access means the attacker could have modified any system component
- Rebuild system from a trusted, clean installation
- Apply the kernel patch before reconnecting to the network
- Extend investigation to any systems accessible from the compromised host
- Document and report findings to internal security teams and relevant authorities
References
- https://nebusec.ai/research/ionstack-part-2/
- https://access.redhat.com/security/vulnerabilities/RHSB-2026-010
- https://almalinux.org/sv/blog/2026-07-09-ghostlock/
- https://blog.cloudlinux.com/ghostlock-cve-2026-43499-local-root-exploit-kernel-update-for-cloudlinux/
- https://www.govcert.gov.hk/en/alerts_detail.php?id=1954
- https://support.huaweicloud.com/intl/en-us/bulletin-cce/cce_bulletin_0134.html
- https://osg-htc.org/security/vulns/OSG-SEC-2026-07-08/
- https://cloud.tencent.com.cn/document/product/1397/134520
- https://thehackernews.com/2026/07/15-year-old-ghostlock-flaw-enables-root.html
- https://nvd.nist.gov/vuln/detail/CVE-2026-43499
- https://cwe.mitre.org/data/definitions/416.html
آسیب پذیری CVE-2026-43499 در کشور ایران
محصول آسیب پذیر: Linux Kernel
میزان استفاده در ایران بر اساس سایت های آمار مرتبط با محصول
دادههای StatCounter در می 2026 نشان میدهد که سهم سیستمعامل اندروید از بازار موبایل ایران به بیش از 82.96٪ میرسد. این آمار حاکی از سلطه مطلق اندروید بر اکوسیستم دستگاههای همراه کشور است؛ به گونهای که نسبت دستگاههای اندرویدی به سایر سیستمعاملها در ایران بیش از ۵ به ۱ بوده و از هر ده گوشی هوشمند، دست کم هشت دستگاه اندروید را اجرا میکند.
میزان استفاده در ایران بر اساس موتورهای جستجو (بر اساس ایندکس های گوگل در بخش tools)
تعداد در زمان نگارش گزارش
| موتور جستجو | Dork | تعداد |
| site:.ir “Android” | 14,000,000 |
وجود نمایندگی در ایران
سیستمعامل اندروید توسط شرکت Google توسعه داده میشود. این شرکت دفتر رسمی یا نمایندگی در ایران ندارد. کاربران ایرانی برای دریافت بهروزرسانیهای امنیتی عمدتاً به سازندگان دستگاههای خود (مانند سامسونگ، شیائومی، هواوی، نوکیا و برندهای مونتاژی داخلی) و همچنین برنامه بتای اندروید (Android Beta Program) وابسته هستند. هیچ گونه پشتیبانی رسمی از طرف شرکت سازنده در کشور وجود ندارد.
میزان استفاده بر اساس گزارشات تحقیقات بازار برای این محصول در ایران
اگرچه آمار رسمی و دقیقی از تعداد سیستمهای آسیبپذیر در ایران وجود ندارد، اما شواهد زیر نشاندهنده سطح قابل توجه ریسک است.
- استفاده گسترده از اندروید در ایران: طبق دادههای StatCounter، اندروید با سهم بیش از 82٪ از بازار موبایل ایران، غالبترین سیستمعامل همراه در کشور است. این یعنی دهها میلیون دستگاه اندرویدی در ایران فعال هستند که زیرساخت بالقوهای برای این آسیبپذیری محسوب میشوند.
- محبوبیت در بین کاربران فارسیزبان: وجود مقالات آموزشی متعدد در وبسایتهای معتبر ایرانی مانند «زومیت»، «دیجیاتو» و کانالهای تلگرامی و یوتیوبی درباره نحوه ثبتنام در برنامه بتای اندروید و نصب نسخههای آزمایشی، نشاندهنده استقبال گسترده از این نسخهها در جامعه کاربران حرفهای ایرانی است.
- حضور برندهای چینی در بازار ایران: با توجه به تحریمهای بینالمللی، برندهای چینی مانند شیائومی، هواوی و ریل می سهم قابل توجهی از بازار موبایل ایران را در اختیار دارند. این برندها معمولاً به روزرسانیهای امنیتی را با تأخیر ارائه میدهند و کاربران این دستگاهها ممکن است در معرض خطر بیشتری قرار داشته باشند
- تخمین میزان استفاده: دستگاه اندرویدی در ایران به طور بالقوه در معرض این آسیبپذیری قرار دارند. این تخمین شامل توسعهدهندگان برنامه، تسترهای حرفهای، کاربران علاقهمند به فناوری و افرادی است که صرفاً برای دسترسی زودهنگام به قابلیتهای جدید در برنامه بتا ثبتنام کردهاند
