Dirty Frag: یک آسیبپذیری جدید افزایش دسترسی در کرنل لینوکس با کپی-صفر
Dirty Frag: یک زنجیره آسیبپذیری در مسیر کپی-صفر کرنل لینوکس که نوشتنهای کش صفحه را مسموم میکند و آسیبپذیریهای xfrm-ESP و RxRPC را به هم زنجیر میکند. تقریباً همه توزیعهای اصلی از ۲۰۱۷ را تحت تأثیر قرار میدهد و اجازه افزایش دسترسی بدون رمز عبور به روت میدهد.
دوباره شروع شد
راستش را بخواهی، فکر نمیکردم اینقدر زود مجبور باشم یک پست دیگر درباره افزایش دسترسی کرنل بنویسم.
فقط هشت روز از مقاله Copy Fail گذشته. هشت روز! لیست سیاه algif_aead از Copy Fail به سختی در ترمینال تایپ شده بود، وصله حتی گرم هم نبود، و بعد—Dirty Frag منتشر شد.
چیزی که حتی پوچتر است این است که کاهشهای Copy Fail کاملاً بیاثر در برابر Dirty Frag هستند. این بار، حمله زیرسیستمهای کاملاً متفاوت کرنل را هدف میگیرد—مسیرهای رمزنگاری xfrm-ESP و RxRPC—پس چه algif_aead را غیرفعال کنی چه نکنی مطلقاً تفاوتی ندارد.
Dirty Pipe (۲۰۲۲)، Copy Fail (۲۰۲۶.۰۴)، Dirty Frag (۲۰۲۶.۰۵)… هر بار میگوید «تقریباً همه توزیعها از ۲۰۱۷ را تحت تأثیر قرار میدهد.» میدانی یعنی چه؟ یعنی برای نزدیک به یک دهه گذشته، هرکس که به هر حساب بدون دسترسی روی سیستم تو لاگین کرده یک شانس برای بیصدا شدن روت داشته.
تحلیل تأثیر
| معیار | جزئیات |
|---|---|
| CVE | هنوز هیچ |
| نوع آسیبپذیری | نقص منطق قطعی، نه race condition |
| نرخ موفقیت بهرهبرداری | ۱۰۰٪، موفقیت تضمینی در اولین اجرا |
| محدوده تأثیر | تقریباً همه توزیعهای لینوکس اصلی از ۲۰۱۷ |
| روش بهرهبرداری | ۱۹۲ بایت payload |
| ردپای دیسک | بدون تغییر پایدار |
مقایسه با آسیبپذیریهای تاریخی LPE کرنل:
| ویژگی | Dirty Cow | Dirty Pipe | Copy Fail | Dirty Frag |
|---|---|---|---|---|
| Race condition | نیاز داشت | نیاز نداشت | نیاز نداشت | نیاز ندارد |
| محدوده | نسخههای خاص | ۵.۸+ | همه توزیعها از ۲۰۱۷+ | همه توزیعها از ۲۰۱۷+ |
| پیچیدگی کد بهرهبرداری | پیچیده | پیچیده | ۱۰ خط پایتون | برنامه C تکفایلی |
| وضعیت وصله | رفع شد | رفع شد | رفع شد | هنوز وصله رسمی ندارد |
اصول فنی: چرا «Dirty Frag»؟
هسته در یک جمله
splice() یک مرجع کش صفحه یک فایل فقط-خواندنی را در شکاف بافر ارسال شبکه (skb)植入 میکند → کرنل دریافتکننده عملیات رمزنگاری درجا روی frag انجام میدهد → آنچه باید عملیات رمزگشایی روی متن رمز باشد تبدیل به یک STORE مستقیم که روی کش صفحه فقط-خواندنی مینویسد میشود → جایگزینی کد ماشین su با یک روت-شل ELF.
«Dirty» به مسموم کردن کش صفحه اشاره دارد، «Frag» به بهرهبرداری از مکانیزم frag بافر سوکت (skb). با هم—Dirty Frag.
پاسخ اضطراری: غیرفعال کردن موقت ماژولهای آسیبپذیر
تا ۸ می ۲۰۲۶، وصلههای رسمی کرنل هنوز منتشر نشدهاند. تنها کاهش موقت، بارگیری و لیست سیاه کردن سه ماژول آسیبپذیر است.
sudo sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf"sudo rmmod esp4 esp6 rxrpc 2>/dev/nullاگر مشکوک هستی PoC قبلاً اجرا شده، باید کش صفحه را پاک کنی:
echo 3 | sudo tee /proc/sys/vm/drop_cachesمسابقه تسلیحاتی آسیبپذیری با شتاب هوش مصنوعی
آسیبپذیریهای LPE کرنل از یکی در سال به یکی در ماه رفتند، و حالا از یکی در ماه به… یکی در هفته؟
پشت این، رشد انفجاری ابزارهای حسابرسی کد با کمک هوش مصنوعی است. قبلاً با تکیه بر بررسی خط به خط انسانی، یک آسیبپذیری که ده سال کشف نشده باقی میماند طبیعی بود. حالا هوش مصنوعی میتواند یک زیرسیستم کامل را در عرض ساعتها اسکن کند و همه مسیرهای کپی-صفر، عملیات درجا و مراجع مشترک را بیرون بکشد.
References
- مخزن GitHub PoC: https://github.com/V4bel/dirtyfrag
- گزارش LWN: https://lwn.net/Articles/1071719/
- گزارش Phoronix: https://www.phoronix.com/news/Dirty-Frag-Linux
- سایت افشای Copy Fail: https://copy.fail/