آسیب‌ پذیری Dirty Frag و ایمن سازی سرور
مقالات تخصصی IT و هاستینگ

بررسی آسیب‌ پذیری Dirty Frag در Linux و روش‌های ایمن‌ سازی سرور

به تازگی یک آسیب پذیری بسیار خطرناک و بحرانی در کرنل لینوکس با نام Dirty Frag شناسایی شده است که زنگ خطر را برای مدیران سیستم و متخصصان امنیت سایبری به صدا درآورده است. این آسیب پذیری به یک مهاجم با دسترسی محدود (Local User) اجازه می دهد تا در مدت زمان بسیار کوتاهی، سطح دسترسی خود را به بالاترین حد ممکن یعنی Root ارتقا دهد. با توجه به انتشار عمومی کد مخرب (PoC) برای این آسیب پذیری، اقدام فوری برای ایمن سازی سرورها کاملاً ضروری است.

  • سطح تهدید: بحرانی (Critical)
  • نوع حمله: ارتقاء سطح دسترسی محلی (Local Privilege Escalation - LPE)
  • وضعیت فعلی: کد اکسپلویت (PoC) به صورت عمومی منتشر شده است

آسیب پذیری Dirty Frag چیست؟

این نقص امنیتی ریشه در نحوه مدیریت Page Fragment و Page Cache در کرنل لینوکس دارد. مهاجم با سوءاستفاده از این ضعف در مدیریت حافظه، می تواند اقدامات زیر را انجام دهد:

  1. بازنویسی فایل های محافظت شده: مهاجم می تواند فایل هایی مانند /etc/passwd، /etc/shadow، فایل های اجرایی باینری های SUID (مانند sudo یا passwd) یا فایل های پیکربندی حیاتی را که در حالت عادی یک کاربر عادی حق ویرایش آن ها را ندارد، بازنویسی کند.

بررسی آسیب‌ پذیری Dirty Frag در Linux

تصویر(1)

  1. دور زدن مکانیزم های امنیتی: با دستکاری Page Cache، امکان تغییر رفتار برنامه های سیستمی و خنثی کردن لایه های دفاعی کرنل فراهم می شود.
  2. دسترسی Root: ارتقاء سطح دسترسی با درصد موفقیت بسیار بالا و در زمان کوتاه.
  3. فرار از محیط های ایزوله (Container Escape): یکی از خطرناک ترین پیامدهای این آسیب پذیری، توانایی فرار از کانتینرها (مانند Docker یا Kubernetes Pod) است. از آنجایی که کانتینرها کرنل سیستم عامل میزبان (Host Kernel) را به اشتراک می گذارند، اگر مهاجم بتواند به یک کانتینر نفوذ کند (حتی با دسترسی کاربر عادی)، می تواند از طریق Dirty Frag از محیط ایزوله کانتینر خارج شده و کنترل کامل سرور فیزیکی یا مجازی میزبان (Host Node) را به دست آورد.

این امر برای ارائه دهندگان سرویس های ابری و سازمان هایی که از Kubernetes استفاده می کنند، یک فاجعه امنیتی به شمار می رود.

این آسیب پذیری از نظر عملکرد، شباهت های ساختاری با آسیب پذیری های مشهور گذشته مانند Dirty COW (CVE-2016-5195) و Dirty Pipe (CVE-2022-0847) دارد که همگی از نقص در مدیریت حافظه کرنل برای ارتقاء سطح دسترسی استفاده می کردند.

سناریوی احتمالی یک حمله

نفوذگران معمولاً از این آسیب پذیری طی یک زنجیره ۵ مرحله ای استفاده می کنند:

دسترسی اولیه:

نفوذ به سیستم از طریق آسیب پذیری های وب (ایجاد WebShell) یا سرقت اطلاعات یک کاربر عادی.

انتقال و کامپایل اکسپلویت (Weaponization & Delivery):

پس از دسترسی اولیه، مهاجم فایل منبع اکسپلویت Dirty Frag (که اغلب به زبان C نوشته شده است) را روی سرور قربانی دانلود می کند. این فایل معمولاً در پوشه های موقتی که کاربران عادی دسترسی نوشتن دارند (مانند /tmp، /var/tmp یا /dev/shm) ذخیره و سپس با استفاده از کامپایلرهایی مانند gcc یا clang (در صورت وجود روی سرور) کامپایل می شود.

دستکاری حافظه و اجرای اکسپلویت (Exploitation):

مهاجم برنامه اکسپلویت کامپایل شده را اجرا می کند. این برنامه با سوءاستفاده از ضعف Page Fragment و Race Condition، عملیات خواندن/نوشتن غیرمجاز را روی Page Cache کرنل انجام می دهد. هدف این مرحله، بازنویسی یک فایل حساس سیستمی (مثلاً اضافه کردن یک کاربر جدید با دسترسی روت به /etc/passwd یا تغییر دسترسی یک باینری SUID) است.

مقابله با آسیب‌ پذیری Dirty Frag در Linux

تصویر(2)

فتح سرور (Privilege Escalation):

پس از موفقیت آمیز بودن دستکاری حافظه، مهاجم اکنون به بالاترین سطح دسترسی (Root) تبدیل شده و کنترل کامل و ۱۰۰ درصدی روی سیستم عامل، تمام فایل ها، پروسه ها و منابع سیستم را در اختیار دارد.

تثبیت دسترسی (Persistence):

برای اینکه مهاجم حتی پس از ریبوت شدن سرور یا پچ شدن آسیب پذیری نیز دسترسی خود را از دست ندهد، اقدام به تثبیت دسترسی می کند. این کار می تواند شامل:

  • ایجاد درب پشتی (Backdoor) از طریق اضافه کردن کاربران جدید با دسترسی روت.
  • اضافه کردن کلید SSH عمومی خود به فایل authorized_keys کاربر روت.
  • نصب Rootkit برای پنهان کردن فعالیت های خود.
  • تغییر در سرویس های سیستمی (Systemd services) برای اجرای کد مخرب در هنگام بوت.
  • تغییر در Cron Jobs یا فایل های استارتاپ  (Startup scripts)

چه سیستم هایی در معرض خطر هستند؟

با توجه به ماهیت آسیب پذیری که در هسته لینوکس قرار دارد، تقریباً تمام توزیع های رایج لینوکس ممکن است تحت تأثیر این نقص قرار داشته باشند. از جمله:

  • Ubuntu
  • Debian
  • خانواده  RedHat (RHEL / AlmaLinux / Rocky Linux)
  • Fedora
  • Arch Linux
  • openSUSE

راهکارهای مقابله و ایمن سازی (Mitigation)

مدیران سیستم باید در سریع ترین زمان ممکن اقدامات زیر را روی سرورهای خود پیاده سازی کنند:

۱. به روزرسانی فوری کرنل (اصلی ترین راهکار)

سریعاً سیستم عامل و کرنل لینوکس خود را به آخرین نسخه منتشر شده توسط توزیع کننده ارتقا دهید. توجه داشته باشید که پس از نصب Patch، ریبوت (Reboot) کردن سرور الزامی است.

۲. غیرفعال سازی ماژول های آسیب پذیر (در صورت عدم نیاز)

اگر کرنل شما هنوز آپدیت نشده است، می توانید موقتاً ماژول های درگیر را غیرفعال کنید:

modprobe -r esp4 esp6 rxrpc

برای Blacklist کردن دائمی این ماژول ها، دستورات زیر را اجرا کنید:

echo "blacklist esp4" >> /etc/modprobe.d/dirtyfrag.conf

echo "blacklist esp6" >> /etc/modprobe.d/dirtyfrag.conf

echo "blacklist rxrpc" >> /etc/modprobe.d/dirtyfrag.conf

۳. محدود کردن  User Namespace

با غیرفعال کردن امکان ایجاد User Namespace برای کاربران غیرمجاز، ریسک اجرای اکسپلویت را کاهش دهید:

sysctl -w kernel.unprivileged_userns_clone=0

۴. بررسی محیط های Production

به طور کلی سرورهای عملیاتی نیازی به ابزارهای کامپایل کد ندارند. وجود یا نصب ناگهانی ابزارهایی مانند gcc یا make روی سرور می تواند یک زنگ خطر جدی و نشانه تلاش مهاجم برای کامپایل کد Exploit  باشد.

تشخیص آسیب‌ پذیری Dirty Frag در Linux

تصویر(3)

۵. فعال سازی مانیتورینگ و لاگ گیری امنیتی

استفاده از ابزارهای مانیتورینگ امنیتی مانند Wazuh، Falco یا Auditd به شدت توصیه می شود. در این ابزارها، هشدارهای مربوط به موارد زیر را تنظیم کنید:

  • تغییر در فایل های دارای مجوز SUID
  • بارگذاری (Load) شدن ماژول های مشکوک در کرنل
  • اجرای غیرعادی ابزارهای کامپایلر (مثل gcc) توسط کاربران وب یا عادی
  • هرگونه تغییر در فایل های حیاتی /etc/passwd و /etc/shadow
سخن پایانی

آسیب پذیری های ارتقاء سطح دسترسی مانند Dirty Frag، به ویژه زمانی که PoC آن ها عمومی می شود، نیازمند واکنش در لحظه هستند.

پیشنهاد می شود همین امروز وضعیت وصله های امنیتی سرورهای فیزیکی، ماشین های مجازی و نودهای کلاستر خود را بررسی کرده و وصله های امنیتی را در قالب یک شرایط اضطراری (Emergency Patching) اعمال نمایید. عدم اقدام فوری می تواند منجر به از دست رفتن کامل کنترل سرورها، نشت اطلاعات، حملات باج افزاری و از کار افتادن سرویس های حیاتی شود.

اشتراک گذاری:

نظرات

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *