- شناسه CVE-2026-43284 :CVE
- CWE-123 :CWE
- yes :Advisory
- منتشر شده: می 8, 2026
- به روز شده: می 11, 2026
- امتیاز: 8.8
- نوع حمله: Local Elevation of Privilege (LPE)
- اثر گذاری: Service Takeover
- حوزه: سیستمعاملها و اجزای کلیدی آن
- برند: Linux
- محصول: Linux
- وضعیتPublished :CVE
- Yes :POC
- وضعیت آسیب پذیری: patch شده
چکیده
آسیبپذیری Dirty Frag که با نام Copy Fail 2 نیز شناخته میشود، یک ضعف امنیتی جدی در کرنل لینوکس است. این ضعف به یک کاربر لوکال اجازه میدهد با سوءاستفاده از مدیریت حافظه کش سیستم، سطح دسترسی خود را به root افزایش دهد. در محیطهای کانتینری مانند Kubernetes، این آسیبپذیری میتواند منجر به فرار از کانتینر (Container Escape) و نفوذ به میزبان اصلی شود.
توضیحات
آسیبپذیری CVE-2026-43284 که با نام Dirty Frag و Copy Fail 2 نیز شناخته میشود، یک ضعف جدی از نوع نوشتن مقدار دلخواه در مکان دلخواه (Write-what-where) مطابق با CWE-123 در کرنل لینوکس است که در مسیر پردازش بستههای ESP در زیرسیستم xfrm رخ میدهد. این ضعف به دلیل مدیریت نادرست فرگمنتهای حافظه در ساختار بافر سوکت (Socket Buffer یا skb) ایجاد شده است. در این وضعیت، کرنل در شرایط خاص امکان نوشتن دادههای کنترلشده مهاجم را در یک آدرس دلخواه فراهم میکند که میتواند منجر به تغییر محتوای حافظه مرتبط با فایلها شود.
ریشه این آسیبپذیری به تعامل نادرست میان مکانیزم Zero-Copy I/O از طریق فراخوانی سیستمی splice و فرآیند رمزگشایی In-place در پیادهسازی ESP بازمیگردد. در لینوکس، splice این امکان را فراهم میکند که دادهها بدون کپی در فضای کاربر و مستقیماً از صفحات کش فایل (Page Cache) به مقصد منتقل شوند. وقتی صفحات یک فایل با splice به یک skb متصل میشوند، این صفحات ممکن است در واقع صفحات کش مشترک باشند و نه یک بافر خصوصی قابل نوشتن. در حالت عادی، برای جلوگیری از تغییر ناخواسته این صفحات، کرنل باید فلگ SKBFL_SHARED_FRAG را روی skb تنظیم کند تا در صورت نیاز عملیات Copy-On-Write (COW) انجام شود. با این حال، در برخی مسیرهای ساخت بستههای IPv4 و IPv6 datagram این فلگ به درستی تنظیم نمیشود و در نتیجه کرنل به اشتباه فرض میکند که دادههای موجود در skb به حافظه خصوصی تعلق دارند.
در ادامه، هنگامی که بسته ESP-in-UDP به سیستم دریافتکننده میرسد، تابع esp_input() در زیرسیستم xfrm برای بهبود کارایی تلاش میکند عملیات رمزگشایی را مستقیماً روی همان بافر انجام دهد. این مسیر یا به اصطلاح fast path زمانی فعال میشود که skb کلون نشده باشد و فرگمنتهای آن به عنوان حافظه مشترک علامتگذاری نشده باشند. به دلیل خطای ذکرشده، کرنل تصور میکند که امکان نوشتن مستقیم در این بافر وجود دارد، در حالی که این بافر در واقع به صفحات کش فایل اشاره میکند. در نتیجه، تابع رمزنگاری مانند crypto_authenc_esn_decrypt() چند بایت داده کنترلشده را مستقیماً در همان صفحات مینویسد. اگر این صفحات متعلق به یک فایل اجرایی یا فایل سیستمی باشند، محتوای موجود در صفحات کش آن فایل تغییر میکند؛ هرچند نسخه واقعی فایل روی دیسک تغییر نخواهد کرد. با این حال، از آنجا که سیستمعامل در زمان اجرا ابتدا نسخه موجود در صفحات کش را استفاده میکند، برنامههایی که بعداً اجرا شوند نسخه دستکاریشده را بارگذاری خواهند کرد.
این آسیبپذیری معمولا به صورت لوکال قابل بهرهبرداری بوده و به سادگی قابل خودکارسازی است. همچنین، این ضعف یک باگ منطقی (Logic Bug) قطعی است و بهرهبرداری از آن به هیچگونه شرایط رقابتی (Race Condition) وابسته نیست، بنابراین نرخ موفقیت بالایی دارد و حتی در صورت ناموفق بودن، معمولاً کرنل دچار کرش نمیشود. مهاجم میتواند با ایجاد یک فضای نام کاربری (User Namespace) و یک فضای نام شبکه (Network Namespace) از طریق فراخوانی unshare() به قابلیت CAP_NET_ADMIN در Namespace جدید دست پیدا کند. سپس با پیکربندی ساختارهای موردنیاز در زیرسیستم xfrm و استفاده از ترکیب splice() برای اتصال صفحات فایل هدف به skb و sendmsg() برای ارسال بستههای ESP دستکاریشده، مسیر آسیبپذیر در esp_input را فعال کند. کد اثبات مفهومی (PoC) برای این آسیبپذیری منتشر شده است که نشان میدهد چگونه با ایجاد یک فضای نام کاربری و شبکه جدید و سپس اتصال صفحات یک فایل حساس به یک بافر سوکت از طریق splice(), میتوان با ارسال بستههای دستکاریشده ESP، بخشهایی از صفحات کش فایل آن را بازنویسی کرد. این فرآیند امکان تزریق کد مخرب به باینریهای سیستمی را فراهم میکند که در نهایت منجر به افزایش سطح دسترسی (Privilege Escalation) میشود.
در محیطهای مدرن مبتنی بر کانتینر مانند Kubernetes، پیامدهای این آسیبپذیری میتواند شدیدتر باشد. بسیاری از کانتینرها از لایههای مشترک ایمیج استفاده میکنند و این لایهها در حافظه به صورت صفحات کش مشترک مدیریت میشوند. در چنین شرایطی، یک کانتینر با دسترسی پایین میتواند محتوای صفحات کش مربوط به یک باینری مشترک را تغییر دهد و منتظر بماند تا یک سرویس یا کانتینر با دسترسی بالاتر همان فایل را اجرا کند. این موضوع میتواند منجر به فرار از کانتینر و در نهایت اجرای کد با سطح دسترسی بالا در میزبان شود.
از منظر اصول سهگانه امنیت سایبری، این آسیبپذیری تأثیر قابل توجهی دارد. از نظر محرمانگی (Confidentiality)، امکان اجرای کد با سطح دسترسی بالاتر میتواند منجر به افشای اطلاعات حساس شود. از نظر یکپارچگی (Integrity)، مهاجم قادر است محتوای فایلهای سیستمی یا اجرایی را در حافظه دستکاری کند. همچنین از نظر دسترسپذیری (Availability)، تغییر عملکرد برنامههای حیاتی سیستم میتواند موجب اختلال در سرویسها یا از کار افتادن سیستم شود. این ضعف در نسخههای جدیدتر کرنل لینوکس با اصلاح مدیریت فرگمنتهای skb و اعمال بررسیهای لازم برای جلوگیری از نوشتن مستقیم روی صفحات مشترک پچ شده است.
CVSS
| Score | Severity | Version | Vector String |
| 8.8 | HIGH | 3.1 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |

شکل 1: تفسیر جدول CVSS
لیست محصولات آسیب پذیر
| Versions | Product |
| affected at 4.11 | Linux |
| affected from cac2661c53f35cbe651bef9b07026a5a05ab8ce0 before a6cb440f274a22456ef3e86b457344f1678f38f9
affected from cac2661c53f35cbe651bef9b07026a5a05ab8ce0 before ab8b995323e5237041472d07e5055f5f7dcdf15b affected from cac2661c53f35cbe651bef9b07026a5a05ab8ce0 before fe785bb3a8096dffcc4048a85cd0c83337eeecad affected from cac2661c53f35cbe651bef9b07026a5a05ab8ce0 before 5d55c7336f8032d434adcc5fab987ccc93a44aec affected from cac2661c53f35cbe651bef9b07026a5a05ab8ce0 before 8253aab4659ca16116b522203c2a6b18dccacea7 affected from cac2661c53f35cbe651bef9b07026a5a05ab8ce0 before 50ed1e7873100f77abad20fd31c51029bc49cd03 affected from cac2661c53f35cbe651bef9b07026a5a05ab8ce0 before b54edf1e9a3fd3491bdcb82a21f8d21315271e0d affected from cac2661c53f35cbe651bef9b07026a5a05ab8ce0 before 71a1d9d985d26716f74d21f18ee8cac821b06e97 affected from cac2661c53f35cbe651bef9b07026a5a05ab8ce0 before 52646cbd00e765a6db9c3afe9535f26218276034 affected from cac2661c53f35cbe651bef9b07026a5a05ab8ce0 before f4c50a4034e62ab75f1d5cdd191dd5f9c77fdff4 |
Linux |
لیست محصولات بروز شده
| Versions | Product |
| unaffected from 0 before 4.11
unaffected from 5.10.255 through 5.10 unaffected from 5.15.205 through 5.15 unaffected from 5.15.206 through 5.15 unaffected from 6.1.171 through 6.1 unaffected from 6.1.172 through 6.1 unaffected from 6.6.138 through 6.6 unaffected from 6.12.87 through 6.12 unaffected from 6.18.28 through 6.18 unaffected from 7.0.5 through 7.0 unaffected from 7.1-rc3 |
Linux |
| a6cb440f274a22456ef3e86b457344f1678f38f9
ab8b995323e5237041472d07e5055f5f7dcdf15b fe785bb3a8096dffcc4048a85cd0c83337eeecad 5d55c7336f8032d434adcc5fab987ccc93a44aec 8253aab4659ca16116b522203c2a6b18dccacea7 50ed1e7873100f77abad20fd31c51029bc49cd03 b54edf1e9a3fd3491bdcb82a21f8d21315271e0d 71a1d9d985d26716f74d21f18ee8cac821b06e97 52646cbd00e765a6db9c3afe9535f26218276034 f4c50a4034e62ab75f1d5cdd191dd5f9c77fdff4 |
Linux |
استفاده محصول در ایران
در این جدول، تعداد صفحات ایندکسشده در گوگل با دامنه .ir که Linux kernel را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.
| Approx. Usage in .ir Domain via Google (Total Pages) | Search Query (Dork) | Product |
| 740,000 | site:.ir “linux” | Linux |
| 24,700 | site:.ir “Linux kernel” | Linux kernel |
نتیجه گیری
این آسیبپذیری با شدت بالا، به یک کاربر لوکال با دسترسی محدود اجازه میدهد تا با سوءاستفاده از مدیریت نادرست بافرها در پروتکل ESP، محتوای صفحات کش فایل را در حافظه دستکاری کرده و در نهایت به سطح دسترسی root دست یابد. وجود PoC عمومی و قابلیت اطمینان بالای این روش در محیطهای کانتینری، ریسک عملیاتی این ضعف امنیتی را بسیار جدی میکند. برای کاهش ریسک و مقابله با بهرهبرداریهای احتمالی، اجرای اقدامات زیر ضروری است:
- بهروزرسانی کرنل لینوکس: قطعیترین راهکار برای رفع این آسیبپذیری، ارتقای سیستمعامل به نسخههای پچشده کرنل است. سایر اقدامات نقش مکمل را داشته و برای کاهش ریسک در محیطهای عملیاتی ضروری میباشند.
- محدودسازی قابلیت فضاهای نام کاربری بدون دسترسی ویژه: از آنجا که بهرهبرداری از این حمله نیازمند ایجاد فضای نام کاربری برای کسب دسترسی CAP_NET_ADMIN است، محدود کردن ایجاد فضای نامهای غیرمجاز (از طریق تنظیمات unprivileged_userns_clone=0) میتواند به طور مؤثری مسیر حمله را مسدود کند.
- نظارت بر یکپارچگی فایلها (FIM): استفاده از ابزارهای مانیتورینگ یکپارچگی فایل (مانند AIDE، Tripwire یا Samhain) برای شناسایی تغییرات غیرمنتظره در فایلهای حساس سیستمی ضروری است. اگرچه این آسیبپذیری فایل روی دیسک را تغییر نمیدهد، اما ابزارهای پیشرفته میتوانند تغییرات مشکوک ناشی از اجرای کدهای آلوده در حافظه را گزارش کنند.
- کاهش سطح حمله در سیستم: غیرفعال کردن ماژولهای غیرضروری کرنل (بهویژهesp4، esp6 و rxrpc) و اعمال سیاستهای سختگیرانه امنیتی در محیطهای کانتینری (مانند جلوگیری از اجرای کانتینرها با سطح دسترسی بالا و محدود کردن مجوزهای با ریسک بالا)، سطح حمله را به شکل قابل توجهی کاهش میدهد.
- مانیتورینگ و ثبت لاگ امنیتی: بررسی لاگهای سیستم و استفاده از سامانههای تشخیص نفوذ میزبان (HIDS) برای شناسایی فراخوانیهای مشکوک، بهویژه در محیطهای کانتینری مانند Docker و Kubernetes، میتواند حملات مرتبط با این آسیبپذیری را شناسایی کند.
اجرای این اقدامات، بهویژه بهروزرسانی سریع کرنل لینوکس، ریسک سوءاستفاده از این آسیبپذیری را به شکل قابل توجهی کاهش داده و امنیت سیستمهای مبتنی بر لینوکس را در برابر حملات افزایش سطح دسترسی و فرار از کانتینر تضمین میکند.
امکان استفاده در تاکتیکهای Mitre Attack (در زمان اجرای حمله)
Initial Access (TA0001)
مهاجم نیاز به دسترسی اولیه به سیستم هدف دارد. این دسترسی میتواند از طریق یک اکانت محلی با هر سطح دسترسی، یک اکانت سرویس (مانند www-data)، یک پردازه مخرب ناشی از اجرای کد از راه دور (RCE) در یک برنامه کاربردی و یا از طریق دسترسی به یک کانتینر به دست آمده باشد.
Execution (TA0002)
پس از دسترسی، مهاجم اسکریپت بهرهبرداری (که اغلب با زبان C نوشته شده) را اجرا میکند. این اسکریپت با استفاده از فراخوانهای سیستمی `unshare()`، `socket()` (Netlink)، `splice()` و `sendmsg()` عملیات آلوده سازی حافظه (page‑cache corruption) را انجام میدهد.
Privilege Escalation (TA0004)
هدف اصلی این آسیبپذیری است. مهاجم با استفاده از Dirty Frag از یک کاربر بدون امتیاز به سطح دسترسی کامل ریشه (Root) ارتقا مییابد. این افزایش دسترسی امکان انجام هر عملیاتی را روی سیستم فراهم میکند.
Defense Evasion (TA0005)
از آنجا که تمام تغییرات فقط در حافظه نهان (Page Cache) اعمال میشود و هیچ فایلی روی دیسک تغییر نمیکند، ابزارهای سنتی تشخیص نفوذ مبتنی بر بررسی یکپارچگی فایلها (File Integrity Monitoring) و آنتیویروسها قادر به شناسایی حمله نخواهند بود. مهاجم همچنین میتواند اسکریپت خود را مبهم (Obfuscate) کند.
Credential Access (TA0006)
پس از دستیابی به دسترسی root، مهاجم میتواند به تمام فایلها از جمله فایلهای احراز هویت مانند /etc/ shadow دسترسی پیدا کرده و هش رمزهای عبور کاربران را استخراج کند. همچنین میتواند توکنهای احراز هویت ذخیره شده در حافظه را هدف قرار دهد.
Impact (TA0040)
بهرهبرداری موفق از این آسیبپذیری یک نقض کامل امنیتی است. مهاجم با دسترسی کامل root، قادر به نابودی محرمانگی، یکپارچگی و در دسترس بودن دادهها است. این دسترسی میتواند منجر به سرقت اطلاعات حساس (نظیر اسرار تجاری و اطلاعات شخصی کاربران)، تخریب یا اخاذی دادهها (Ransomware)، تغییر در پیکربندی سیستم، ایجاد یک دسترسی دائمی برای حملات بعدی (Lateral Movement) و در نهایت از کار افتادن کامل سرویسهای حیاتی شود. در چنین وضعیتی، اعتماد کاربران از بین رفته و سازمان با هزینههای سنگین ناشی از نقض دادهها، جریمههای قانونی و خسارت به اعتبار خود مواجه خواهد شد.
منابع
- https://www.cve.org/CVERecord?id=CVE-2026-43284
- https://www.cvedetails.com/cve/CVE-2026-43284/
- https://vulmon.com/vulnerabilitydetails?qid=CVE-2026-43284
- https://vuldb.com/vuln/362045
- https://github.com/0xBlackash/CVE-2026-43284
- https://github.com/Percivalll/Dirty-Frag-Kubernetes-PoC
- https://github.com/V4bel/dirtyfrag
- https://nvd.nist.gov/vuln/detail/CVE-2026-43284
- https://cwe.mitre.org/data/definitions/123.html
گزارش اثبات آسیبپذیری CVE-2026-43284
اطلاعات آسیبپذیری
عنوان: افزایش سطح دسترسی محلی از طریق رمزگشایی درجای ناامن در بستههای ESP کرنل (Dirty Frag / Copy Fail 2)
شناسه: CVE-2026-43284
وضعیت مشاوره: Advisory / Patch Available
امتیاز: CVSS: 7.8 (Critical)
محصول: Linux Kernel (کرنل لینوکس)
محصول / نسخههای آسیبپذیر
در نسخههای زیر (پیش از اعمال پچ امنیتی فوریه 2026):
- کرنل لینوکس از نسخه 6.5 به بعد، تا پیش از انتشار پچهای پایدار
- سیستمهایی که ماژولهای esp4، esp6 (IPsec ESP) در آنها بارگذاری شده یا قابلیت بارگذاری دارند
- کلیه محیطهایی که از IPsec برای ارتباطات رمزنگاریشده استفاده میکنند و در معرض کاربران محلی غیرقابل اعتماد هستند
محیطهای درگیر
- سازمانهایی که از سرورهای لینوکس در محیطهای shared یا multi-tenant (مانند ارائهدهندگان هاست، ابر، HPC) استفاده میکنند
- محیطهای مجازیسازی و کانتینری که از User Namespace استفاده میکنند (Docker، Podman)
- سرورهای VPN که از IPsec/IPsec site-to-site استفاده میکنند
- سیستمهایی که از فایلسیستم AFS (Andrew File System) استفاده میکنند (تحت تأثیر CVE-2026-43500 مرتبط)
کامپوننتهای آسیبپذیر
- ماژولهای کرنل esp4 و esp6 (پیادهسازی ESP برای IPv4 و IPv6 در زیرسیستم xfrm/Ipsec)
- زیرسیستم xfrm_user
- ماژولهای ipcomp4 و ipcomp6 (فشردهسازی IP Payload) که ممکن است خودکار بارگذاری شوند
- توابع ip_append_page و ip6_append_page در فایلهای net/ipv4/ip_output.c و net/ipv6/ip6_output.c
- تابع esp_input در فایلهای net/ipv4/esp4.c و net/ipv6/esp6.c
ریشه مشکل (Root Cause Analysis)
ریشه اصلی این آسیبپذیری به ترکیبی از دو نقص امنیتی اساسی در طراحی و پیادهسازی زیرسیستم شبکه کرنل بازمیگردد. اولین نقص از نوع “رمزگشایی درجای ناامن دادههای اشتراکی” (مشابه CWE-123: Write-what-where Condition) است . زمانی که دادهها از طریق مکانیزم MSG_SPLICE_PAGES (مورد استفاده توسط توابع سیستمی مانند splice(2) و sendfile(2)) به یک سوکت UDP متصل میشوند، صفحات حافظه به طور مستقیم به بافر سوکت (Socket Buffer) متصل میشوند بدون اینکه کپی شوند. کرنل برای بستههای TCP پرچم SKBFL_SHARED_FRAG را تنظیم میکند تا از تغییر دادههای اشتراکی جلوگیری شود، اما مسیرهای دیتاگرام IPv4 و IPv6 این پرچم را تنظیم نمیکنند.
نقص دوم در زیرسیستم ESP (Encapsulating Security Payload) IPsec رخ میدهد. هنگام دریافت یک بسته ESP-in-UDP، تابع esp_input() برای بهینهسازی عملکرد، مسیر بدون COW (Copy-on-Write path) را برای بافرهای غیرخطی (nonlinear skb) که شبیه بافرهای معمولی هستند، انتخاب میکند. این مسیر مستقیماً داده را در همان حافظه صفحهای که متعلق به کش صفحه (Page Cache) است، رمزگشایی میکند، در حالی که آن صفحه ممکن است توسط فرآیند دیگری (از طریق فایلمپ) نیز قابل مشاهده باشد.
این دو ضعف از طریق اجرای یک برنامه مخرب توسط یک کاربر معمولی (بدون نیاز به هیچ مجوز خاصی) قابل بهرهبرداری است. در سناریوی کلی، مهاجم با ترکیب قابلیتهای(2)splice و ارسال بستههای ESP طراحیشده، میتواند یک قابلیت «نوشتن دلخواه در کش صفحه» (arbitrary page cache write primitive) ایجاد کند. بدین ترتیب، مهاجم میتواند مستقیماً محتوای یک فایل حساس (مانند /etc/passwd یا یک باینری setuid) را در حافظه تغییر دهد، بدون اینکه روی دیسک اثری از خود بگذارد. سپس با اجرای همان فایل، کد خود را با سطح دسترسی root اجرا میکند
بخش آسیبپذیر
رفتار ناامن سیستم:
رمزگشایی درجای (in-place decryption) بستههای ESP توسط کرنل روی حافظه صفحهای که به صورت اشتراکی بین چندین بافر سوکت و کش صفحه (Page Cache) فایلها به اشتراک گذاشته شده است، بدون انجام کپی قبل از نوشتن (Copy-on-Write). این رفتار ناامن باعث میشود که یک مهاجم محلی بدون دسترسی ریشه، بتواند محتوای هر فایل قابل خواندنی (از جمله باینریهای setuid root) را در کش صفحه تغییر داده و باعث اجرای کد دلخواه با سطح دسترسی root شود.
نحوه سوءاستفاده مهاجم:
- مهاجم دسترسی محلی (Local Access) به یک سیستم لینوکس آسیبپذیر دارد، حتی با یک حساب کاربری معمولی
- مهاجم یک فایل هدف حساس (مثلاً یک باینری setuid مانند /usr/bin/su یا یک کتابخانه مشترک) را مشخص میکند و صفحه حافظه مربوط به آن فایل را در Page Cache شناسایی مینماید
- مهاجم با استفاده از فراخوانی سیستمی splice(2)، یک pipe ایجاد کرده و صفحات حافظه هدف را به یک بافر سوکت UDP متصل میکند
- مهاجم یک بسته ESP-in-UDP حاوی دادههای مخرب طراحی میکند به گونهای که تابع esp_input در کرنل آن بسته را گرفته و دادهها را مستقیماً روی صفحات حافظه اشتراکی رمزگشایی (نوشتن) کند
- در نتیجه، محتوای صفحه حافظه فایل هدف در Page Cache با دادههای کنترلشده توسط مهاجم بازنویسی میشود
- حال مهاجم فایل تغییریافته (که فقط در حافظه تغییر کرده) را اجرا میکند. از آنجا که باینری تغییر یافته است، کد مخرب مهاجم با سطح دسترسی root (به دلیل پرچم setuid اصلی فایل) اجرا میشود
- مهاجم یک شل ریشه به دست میآورد و کنترل کامل سیستم را در اختیار میگیرد
نقش این آسیبپذیری در زنجیره حمله
این آسیبپذیری یک ابزار افزایش سطح دسترسی (Privilege Escalation) کامل، قابل اعتماد و بدون نیاز بهrace condition در زنجیره حمله محلی محسوب میشود . با توجه به نمره CVSS 7.8، ماهیت محلی و نیاز به حداقل دسترسی (وجود یک حساب کاربری عادی)، مهاجم ابتدا باید از طریق روش دیگری (مثلاً فیشینگ، بدافزار، یا یک آسیبپذیری remote code execution در یک سرویس) یک فایل مخرب اولیه روی سیستم هدف اجرا کند. اما پس از آن، میتواند در یک مرحله و بدون نیاز به تعامل بیشتر، به بالاترین سطح دسترسی (root) برسد
کرنل لینوکس به عنوان قلب سیستمعامل، دسترسی مستقیم به تمام منابع سختافزاری، فایلها، فرآیندها و حافظه دارد. موفقیت در بهرهبرداری از این آسیبپذیری عملاً به معنای نقض کامل محرمانگی (Confidentiality)، یکپارچگی (Integrity) و در دسترس بودن (Availability) کل سیستم است. مهاجم میتواند:
- هر فایلی را بخواند، تغییر دهد یا حذف کند
- بدافزارهای سطح کرنل (rootkit) نصب کند
- لاگهای سیستم را پاک کرده و ردپای خود را از بین ببرد
- سایر سیستمهای موجود در شبکه را هدف قرار دهد
پیشنیازهای بهرهبرداری (Prerequisites)
- دسترسی محلی (Local Access) به سیستم هدف، حتی با یک کاربر معمولی
- استفاده از نسخه آسیبپذیر کرنل لینوکس (معمولاً نسخههای 6.5 تا پیش از انتشار پچهای پایدار 6.6.138، 6.12.87، 6.18.28 و 7.0.5)
- بارگذاری یا قابلیت بارگذاری ماژولهای esp4، esp6 و xfrm_user در کرنل (در اکثر توزیعها به صورت پیشفرض به عنوان ماژول موجود هستند)
- فعال بودن قابلیت User Namespace برای کاربران غیرامتیازدار (user.max_user_namespaces > 0)؛ این قابلیت در بسیاری از توزیعهای مدرن به صورت پیشفرض فعال است و برای بهرهبرداری از مسیر ESP لازم است
- عدم اعمال پچ امنیتی (عدم آپدیت کرنل به نسخه اصلاحشده) روی سیستم هدف
- نبود محدودیتهای امنیتی اضافی مانند SELinux در حالت enforcing (اگرچه ممکن است SELinux برخی از اقدامات بعدی را محدود کند، اما خود آسیبپذیری همچنان قابل بهرهبرداری است )
رفتار مورد انتظار در حالت امن (Expected Secure Behavior)
- کرنل باید هنگام رمزگشایی بستههای ESP روی بافرهای سوکت (skb) که دارای fragهای اشتراکی (shared frags) هستند، ابتدا با فراخوانی skb_cow_data یک کپی اختصاصی ایجاد کند و سپس روی آن کپی عمل رمزگشایی را انجام دهد
- بستههای UDP که از طریق splice(2) ساخته میشوند، باید با پرچم SKBFL_SHARED_FRAG علامتگذاری شوند، دقیقاً مشابه کاری که زیرسیستم TCP انجام میدهد
- کرنل باید اصل “کپی قبل از نوشتن” (Copy-on-Write) را برای تمام دادههایی که ممکن است بین چندین زیرسیستم به اشتراک گذاشته شوند، رعایت کند
- دسترسی به ماژولهای آسیبپذیر (esp4, esp6 وxfrm_user) باید فقط برای پردازه های با مجوزهای کافی (معمولاً root) امکانپذیر باشد و کاربران عادی نباید بتوانند این ماژولها را بارگذاری کنند
- مستندات امنیتی توزیعهای لینوکس باید به وضوح نسبت به خطرات فعال بودن User Namespace برای کاربران عادی و نحوه غیرفعالسازی آن در صورت عدم نیاز هشدار دهند
راهکارها و کاهش ریسک (Mitigation / Patch Guidance)
اقدامات فوری برای کاهش ریسک:
- بهروزرسانی کرنل به آخرین نسخه پایدار ارائهشده توسط توزیعکننده خود (بالاترین اولویت). پچ اصلی در کرنل
- در صورت عدم امکان بهروزرسانی فوری، مسدودسازی ماژولهای آسیبپذیر (البته در نظر داشته باشید این کار باعث اختلال در عملکرد IPsec و VPNهای مبتنی بر IPsec میشود):
- غیرفعال کردن User Namespace برای کاربران عادی(این کار روی rootless containers، Flatpak و برخی مرورگرهای sandboxed تأثیر میگذارد):
- پایش سیستمها برای شناسایی تلاش احتمالی بهرهبرداری (با استفاده از ابزارهایی مثل vcheck )
اقدامات کوتاهمدت / میانمدت برای کاهش ریسک:
- انجام اسکن تمام سیستمهای لینوکس سازمان برای شناسایی نسخههای کرنل آسیبپذیر و اعمال وصله به صورت متمرکز (مثلاً با ابزارهای Patch Management)
- پیادهسازی و تقویت راهکارهای EDR (Endpoint Detection and Response) بر روی سرورها برای شناسایی رفتارهای مشکوک مرتبط با بهرهبرداری از کرنل
- بازبینی و محدود کردن دسترسیهای sudo و role-based access control (RBAC) برای کاهش تعداد کاربرانی که دسترسی محلی دارند
اقدامات بلندمدت برای کاهش ریسک:
- تدوین و اجرای سیاست “بهروزرسانی امنیتی خودکار” (Automated Patch Management) برای کرنل و بستههای سیستمی در تمام سرورها و ایستگاههای کاری
- کاهش سطح حمله با غیرفعال کردن ماژولهای کرنلی که به آنها نیاز نیست
- استفاده از ابزارهای تحلیل آسیبپذیری و اسکنرهای امنیتی به صورت دورهای
- استقرار سیستمهای تشخیص نفوذ مبتنی بر هاست (HIDS) مانند Osquery یا Wazuh برای پایش تغییرات در فایلهای سیستمی حساس و فراخوانیهای سیستمی غیرعادی
- آموزش تیمهای عملیاتی در خصوص خطرات آسیبپذیریهای کرنل و نحوه شناسایی و پاسخ به آنها
- فعالسازی و تقویت لاگبرداری از رویدادهای کرنل (با استفاده از auditd) و ارسال آنها به سیستم SIEM
- استقرار راهکارهای خودکار بهروزرسانی امنیتی (Patch Management) برای اعمال سریع وصلههای امنیتی
- پیادهسازی فرآیندهای منظم تست نفوذ (Penetration Testing) و ارزیابی امنیتی برای کشف زودهنگام آسیبپذیریهای مشابه در زیرساخت
تشخیص و مانیتورینگ (Detection & Monitoring)
نشانههای تلاش برای سوءاستفاده:
- بارگذاری ناگهانی یا غیرمنتظره ماژولهای esp4، esp6 و xfrm_user در سیستمی که معمولاً از IPsec استفاده نمیکند
- وجود رکوردهایی از خطاهای کرنل مرتبط با esp_input یا skb در خروجی فرمان dmesg یا لاگهای کرنل (/var/log/kern.log)
- تغییرات غیرمنتظره در هش (مثل md5sum) باینریهای سیستمی حساس مانند /bin/su، /usr/bin/sudo و /bin/ps در حین اجرا (که بعد از ریبوت مجدداً به حالت عادی برمیگردند، چون تغییر فقط در حافظه بوده)
- اجرای فرآیندهایی با سطح دسترسی root که نباید از یک کاربر معمولی اجرا شوند
- تلاش برای بارگذاری ماژولهای blacklisted شده
- فعالیت غیرعادی در لاگهای سیستم مربوط به فراخوانیهای سیستمی splice(2) یا sendfile(2) توسط پردازه های کاربری
منابع پیشنهادی برای مانیتورینگ و پایش:
- لاگ کرنل (dmesg و /var/log/kern.log) برای مشاهده پیامهای مربوط به بارگذاری ماژولها و خطاهای رمزگشایی ESP
- خروجی فرمان lsmod (برای نظارت بر ماژولهای بارگذاری شده، ترجیحاً به صورت دورهای با یک اسکریپت)
- سیستمهای SIEM برای جمعآوری و تحلیل مرکزی لاگهای تمام سرورها
- ابزار vcheck که مخصوص شناسایی این آسیبپذیری طراحی شده است
- راهکارهای EDR (Endpoint Detection and Response)
- ابزار sysdig یا falco برای پایش فراخوانیهای سیستمی حساس مانند splice و write به صفحه حافظه فایلهای setuid
- سیستمهای نظارت بر یکپارچگی فایل (FIM) مانند AIDE یا Tripwire برای تشخیص تغییرات ناخواسته در فایلهای باینری سیستمی (با این نکته که تغییرات در حافظه ممکن است توسط FIM شناسایی نشود، اما تغییر در دیسک پس از flush شدن قابل شناسایی است)
واکنش به حادثه (Incident Response)
- ایزولهسازی فوری سیستم آسیبدیده از شبکه جهت جلوگیری از حرکت جانبی مهاجم و ادامه نفوذ
- جمعآوری و حفظ خروجی فرمانهای dmesg، lsmod، ps aux، netstat -tulpn، و لاگهای /var/log برای تحلیل فارنزیک (Forensics)
- بررسی فایل /etc/modprobe.d برای وجود فایلهای غیرمنتظره یا تغییر یافته
- بازنشانی تمام رمزهای عبور کاربران، توکنهای SSH، و هر گونه اعتبار دسترسی به سیستم
- اعمال پچ امنیتی
- بررسی یکپارچگی باینریهای سیستمی با استفاده از ابزارهایی مانند rpm -Va (در RHEL/Fedora) یا dpkg –verify (در Debian/Ubuntu) برای شناسایی فایلهای تغییر یافته
- اسکن کامل سایر سیستمهای شبکه برای شناسایی علائم مشابه یا دسترسی مهاجم به آنها
- مستندسازی کامل حادثه (زمان وقوع، نشانهها، اقدامات انجامشده، درسآموختهها) و گزارش به مدیریت ارشد و تیم واکنش سریع (CSIRT)
جریان حمله (Attack Flow)
مهاجم با یک حساب کاربری عادی وارد سیستم میشود و یک بسته ESP-in-UDP حاوی payload مخرب طراحی میکند. با استفاده از splice(2)، صفحات حافظه یک فایل setuid (مثلاً /usr/bin/su) را به یک سوکت UDP متصل میکند. بسته ESP طراحیشده را به سوکت UDP هدف (معمولاً loopback) ارسال میکند. کرنل بسته را دریافت کرده و تابع esp_input() بدون COW، payload را مستقیماً روی صفحات حافظه فایل setuid در Page Cache مینویسد. مهاجم فایل setuid تغییر یافته (که اکنون کد مخرب دارد) را اجرا میکند. به دلیل پرچم setuid فایل، کد مخرب با سطح دسترسی root اجرا میشود و یک شل روت (root shell) در اختیار مهاجم قرار میدهد.

شکل 1: جریان اجرای آسیب پذیری
اثبات مفهوم (PoC) — کاملاً غیرمخرب
آزمایشگاه تخصصی Vulnerbyte، این آسیبپذیری را در محیط ایزوله و کنترلشده با استفاده از نسخه آسیبپذیر بررسی و اجرا کرده است
- یک توزیع لینوکس با کرنل آسیبپذیر بدون دسترسی root برای کاربر
- با استفاده از یک ابزار PoC عمومی (که در GitHub موجود است ) بستههای ESP مورد نیاز را تولید میکند سپس یک کپی از /bin/bash با چسباندن پرچم setuid در حافظه تغییر داده میشود یک شل root را باز میکند که نشاندهنده افزایش سطح دسترسی موفق است (شکل 2)
- این اثبات مفهوم صرفاً توصیفی و آموزشی بوده و شامل تغییرات مخرب نمیشود

شکل 2: اجرای POC
رفع مسئولیت
این گزارش صرفاً با هدف آموزش، تحلیل فنی و ارتقای امنیت سازمانی تهیه شده است. هرگونه استفاده مخرب یا خارج از چارچوبهای قانونی از محتوای آن ممنوع است.
منابع
https://www.cve.org/CVERecord?id=CVE-2026-43284
https://nvd.nist.gov/vuln/detail/CVE-2026-43284
https://cwe.mitre.org/data/definitions/123.html
https://github.com/whosfault/CVE-2026-43284
GNU/Linux Kernel
CVE-2026-43284 – Local Privilege Escalation via Page Cache Corruption in IPsec ESP Subsystem
Affects
- Linux Kernel
- Versions:
- All versions before the patch commit
f4c50a4034e6(including all major stable branches) .
- All versions before the patch commit
- Components:
- Kernel networking subsystem (IPsec)
- XFRM (Transform framework) / ESP (Encapsulating Security Payload)
- Files:
net/xfrm/xfrm_input.c(related logic)net/ipv4/esp4.cnet/ipv6/esp6.c
- Functions:
esp_input()crypto_authenc_esn_decrypt()
Description
CVE-2026-43284, known as “Dirty Frag” , is a critical local privilege escalation vulnerability in the Linux kernel .
The kernel uses a memory-corruption primitive in the IPsec ESP receive path to allow an unprivileged local attacker to execute arbitrary code with root privileges. This flaw belongs to the same family as “Dirty Pipe” and “Copy Fail” .
The issue arises because:
- The
esp_input()function can incorrectly skip theskb_cow_data()check for a non-linear skb (socket buffer) that lacks afrag_list. - This oversight allows the
crypto_authenc_esn_decrypt()function to write 4 bytes of attacker-controlled data into a page-cache page that is accessed viasplice(). - The file on disk is not modified. However, the corruption resides in the kernel’s in-memory cache. When a privileged process or user subsequently executes the corrupted binary, the kernel loads the malicious code from the cache, leading to privilege escalation .
This results in:
- A reliable, deterministic exploit with no race condition (unlike many other memory corruption bugs) .
- Overwriting the in-memory copy of a
setuidbinary (e.g.,/usr/bin/su). - Gaining a root shell by executing the corrupted binary.
Attack Vector
Primary Attack Vector:
Local / Low-privileged User Access
Attack Scenario:
- An attacker gains a low-privileged shell on a vulnerable Linux system (e.g., via a compromised web application or a user account).
- The attacker checks for the presence of the
esp4oresp6kernel modules and ensures user namespaces are enabled (user.max_user_namespaces > 0) . - The attacker runs a publicly available exploit binary or script. The exploit:
- Creates new user and network namespaces to acquire
CAP_NET_ADMIN. - Registers crafted xfrm Security Associations (SAs) where the high sequence fields contain a 4-byte payload.
- Opens a
setuidbinary (e.g.,/usr/bin/su) read-only and usessplice()to trigger the vulnerable kernel path. - Corrupts the target binary’s page-cache contents.
- Creates new user and network namespaces to acquire
- The attacker then executes the corrupted binary (e.g., by running
su), which executes the attacker’s code with root privileges.
Key Characteristics:
- Local access required (cannot be exploited remotely on its own).
- Low-privileged user account is sufficient.
- No user interaction required.
- High reliability (deterministic, no race condition) .
- Works on all major Linux distributions (RHEL, Ubuntu, Debian, SUSE, Amazon Linux, etc.) .
Conditions Increasing Risk:
- Multi-tenant environments (shared hosting, cloud VMs, containers) where untrusted users have local access.
- Systems running container workloads with
user namespacesenabled (default on many distributions) . - Systems with
esp4,esp6, orrxrpcmodules loaded (common on systems using IPsec or VPNs) . - Kubernetes environments where an unprivileged pod can exploit this to escape to the host node .
Impact
Successful exploitation allows:
- Full local privilege escalation from an unprivileged user to root .
- Complete system compromise.
- Installation of backdoors, rootkits, or persistence mechanisms.
- Data theft or ransomware deployment on the affected host.
- Container escape in Kubernetes environments (e.g., Amazon EKS) by corrupting a binary in a shared image layer used by a privileged DaemonSet (e.g.,
kube-proxy) .
This represents a complete system takeover risk.
Observed Exploitation & Threat Activity
- Public PoC available immediately upon disclosure (May 7, 2026) .
- Compiled exploit binaries appeared on VirusTotal within 7 minutes of the source code release .
- The PoC was forked hundreds of times and actively modified within 24 hours .
- No confirmed widespread exploitation campaigns as of mid-May 2026, but interest was observed in multiple countries within 24 hours .
- Security researchers confirmed that the patch for Dirty Frag unintentionally activated a new vulnerability named “Fragnesia” (CVE-2026-XXXXX), creating a patch cycle .
Severity & Metrics
- CVSS v3.1: Important / High (7.8 – 8.8) depending on the scoring vendor .
- Red Hat: Important (not Critical)
- SUSE: 8.8 (AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H)
- NVD: 7.8 (AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H)
- Amazon Linux: 7.8
- Attack Vector: Local
- Privileges Required: Low
- User Interaction: None
Relevant CWE:
- CWE-123 – Write-what-where Condition
- CWE-787 – Out-of-bounds Write
- CWE-119 – Improper Restriction of Operations within Memory Bounds
Patch & Vendor Status
- Patch committed to Linux kernel mainline: Commit
f4c50a4034e6(May 5, 2026) . - Distribution status (as of May 18, 2026):
- Red Hat: Investigating; mitigations available; no universal fix for all products .
- Ubuntu/Debian: Vendor-specific patches rolling out; check your distribution’s security advisories.
- SUSE/openSUSE: Patches available (e.g., SUSE-SU-2026:1906-1) .
- Amazon Linux: Fixed in ALAS2-2026-3302 and ALAS2023-2026-1694 .
- Oracle Linux: Fixed in ELSA-2026-50258 for Unbreakable Enterprise Kernel .
- CloudLinux: Patches available for CL8, CL9, CL10; KernelCare livepatch available .
- QNAP NAS (ARM64/x86): No patch currently available .
Note: The patch for CVE-2026-43284 unintentionally activated a new vulnerability (Fragnesia) . This means organizations must update again to address the follow-up issue .
Mitigation & Remediation
Immediate Actions
- Blacklist vulnerable kernel modules (if IPsec/AFS is not required) :
sudo sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true" - Disable unprivileged user namespaces (blocks the exploit primitive but may break containers, Flatpak, etc.) :
echo "user.max_user_namespaces=0" > /etc/sysctl.d/dirtyfrag.conf sysctl --system - Drop kernel page cache (to clear any already-corrupted binary pages) :
echo 3 > /proc/sys/vm/drop_caches - Restrict local access to trusted users only.
Defensive Measures (Long-term)
- Update kernel to a patched version as soon as it is available from your distribution.
- Migrate sensitive workloads to patched nodes if using a container orchestration platform (e.g., Kubernetes).
- Use restrictive seccomp profiles (e.g.,
RuntimeDefault) to block theunsharesyscall in container environments . - Review and limit administrative privileges, including
sudoand role-based access. - Segment and isolate multi-tenant workloads (e.g., use separate bare-metal nodes for untrusted users).
Detection & Hunting
Indicators of Compromise (IOCs):
- Unexpected kernel crashes or error messages related to
xfrm,esp4,esp6, orrxrpc(checkdmesgor/var/log/kern.log). - Presence of suspicious kernel module loading/unloading activity.
- Unusual execution of
setuidbinaries (e.g.,/usr/bin/su,/usr/bin/sudo,/bin/ping) from non-interactive or low-privileged processes. - Child processes of
suorsudothat should not exist (e.g., a reverse shell). - Unexpected file modifications (though the exploit does not touch disk, post-exploitation tools may).
Log analysis:
- Check authentication logs (
/var/log/auth.log,/var/log/secure) for successfulsuorsudousage from unexpected UIDs. - Monitor process execution (e.g.,
auditd, EDR, Falco) for patterns consistent with the Dirty Frag exploit chain.
YARA Rules:
Public YARA rules are available from Netskope Threat Labs IoC repository .
Post-Incident Response
If exploitation is suspected:
- Isolate affected system from the network immediately (but preserve volatile memory if forensic analysis is required).
- Preserve forensic evidence (kernel logs, core dumps, process lists, network connections).
- Rotate all credentials and keys stored on the compromised system.
- Audit system for backdoors (check crontabs, SSH keys, systemd services, kernel modules).
- Assume full compromise – do not simply change passwords.
- Rebuild system from a trusted backup or clean installation after applying the kernel patch.
- Check for container escape if the system runs Kubernetes or Docker (assume the entire node is compromised) .
References
- Canadian Centre for Cyber Security – AL26-011
- Red Hat Security Bulletin – RHSB-2026-003
- Netskope Threat Labs – DirtyFrag Analysis
- GitHub PoC – Dirty-Frag-Kubernetes-PoC
- CloudLinux – Dirty Frag Mitigation
- Amazon Linux Security Center – CVE-2026-43284
- IT Daily – Fragnesia (German)
- Linux Kernel Patch Commit – f4c50a4034e6
- CWE-123 – Write-what-where Condition
- CWE-787 – Out-of-bounds Write