بلاگ/آسیب‌پذیری ارتقا امتیاز Fragnesia در هسته لینوکس (CVE-2026-46300)؛ کدام نسخه‌ها آسیب‌پذیرند و چطور وصله کنیم
به‌روز شده

آسیب‌پذیری ارتقا امتیاز Fragnesia در هسته لینوکس (CVE-2026-46300)؛ کدام نسخه‌ها آسیب‌پذیرند و چطور وصله کنیم

1405/08/150 بازدید
آسیب‌پذیری ارتقا امتیاز Fragnesia در هسته لینوکس (CVE-2026-46300)؛ کدام نسخه‌ها آسیب‌پذیرند و چطور وصله کنیم

آسیب‌پذیری ارتقا امتیاز Fragnesia در هسته لینوکس (CVE-2026-46300)؛ کدام نسخه‌ها آسیب‌پذیرند و چطور وصله کنیم

آسیب‌پذیری هسته لینوکس با نام Fragnesia و شناسه CVE-2026-46300 به فهرست آسیب‌پذیری‌های فعالانه اکسپلویت‌شده CISA اضافه شده و تیم‌های زیرساخت باید هرچه سریع‌تر وضعیت سرورهای خود را بررسی کنند. در این مطلب می‌بینید این باگ دقیقا چیست، کدام توزیع‌ها و نسخه‌های کرنل را درگیر می‌کند، و چطور وصله یا مقابله موقت کنید.

چه اتفاقی افتاده است؟

CISA در تاریخ ۲۸ اکتبر ۲۰۲۶ (۲۸ مهر ۱۴۰۵) این آسیب‌پذیری را به کاتالوگ Known Exploited Vulnerabilities (KEV) اضافه کرد و برای سازمان‌های فدرال آمریکا مهلت اقدام را ۳۱ اکتبر ۲۰۲۶ تعیین کرد. دلیل این فوریت، شواهد مستند از سوءاستفاده واقعی از این باگ در محیط‌های عملیاتی است، به‌ویژه در ترکیب با یک زنجیره نفوذ دیگر به نام PHP2Shell.

Fragnesia دقیقا چیست؟

Fragnesia یک نسخه جدید از خانواده باگ‌های قبلا شناخته‌شده با نام «Dirty Frag» است و در زیرسیستم XFRM مربوط به ESP-over-TCP در هسته لینوکس قرار دارد. مشکل در تابع skb_try_coalesce() است: این تابع می‌تواند فرگمنت‌های صفحه‌ای (paged fragments) را بین بافرهای شبکه (skb) ادغام کند بدون اینکه نشانگر «shared-frag» را حفظ کند.

نتیجه این است که پردازش ورودی ESP ممکن است داده را به‌صورت in-place روی فرگمنت‌هایی رمزگشایی کند که در واقع به page cache فایل‌های فقط‌خواندنی - از جمله باینری‌های setuid - اشاره دارند. یک کاربر محلی کم‌دسترسی، یا مهاجمی که از راه دور یک پایگاه اولیه (مثلا از طریق یک وب‌شل PHP) به دست آورده، می‌تواند از این مسیر برای نوشتن بایت‌های دلخواه روی این صفحات کش‌شده و بازنویسی باینری‌های حساس استفاده کند و دسترسی محدود را به روت کامل تبدیل کند.

برای افزایش امنیت سرور لینوکس به‌طور کلی، شناخت همین نوع مسیرهای ارتقا امتیاز در کرنل نقطه شروع خوبی است.

چرا خطرناک است؟

امتیاز CVSS 3.1 این آسیب‌پذیری برابر ۷.۸ (High) است با وکتور AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H. شرکت Red Hat آن را «Important» رده‌بندی کرده، نه «Critical»، چون بردار حمله صرفا محلی است. اما نکته مهم این است:

  • نیازی به تعامل کاربر ندارد
  • پیچیدگی اکسپلویت پایین است
  • CISA تأیید کرده که در حال سوءاستفاده فعال است

به‌خصوص وقتی این باگ با زنجیره PHP2Shell (دو آسیب‌پذیری RCE در PHP با شناسه‌های CVE-2026-109618 و CVE-2026-109619) ترکیب شود، یک مهاجم بدون هیچ حساب کاربری می‌تواند از یک وب‌شل روی سرور PHP شروع کند و در نهایت به روت کامل هاست برسد.

برای پایش همین نوع رویدادهای امنیتی روی سرور، راه‌اندازی Auditd در لینوکس کمک می‌کند تغییرات مشکوک روی فایل‌ها زودتر دیده شوند.

کدام نسخه‌ها آسیب‌پذیرند؟

پچ بالادستی با عنوان «net: skbuff: preserve shared-frag marker during coalescing» در ۱۳ می ۲۰۲۶ منتشر شد. هر توزیع به‌صورت جداگانه این پچ را در یک نسخه بیلد مشخص عرضه کرده است:

توزیعنسخه‌های آسیب‌پذیرنسخه وصله‌شده
Ubuntu 16.04 LTSقبل از این نسخه4.4.0-283.317
Ubuntu 18.04 LTSقبل از این نسخه4.15.0-253.265
Ubuntu 20.04 LTSقبل از این نسخه5.4.0-233.253
Ubuntu 22.04 LTSقبل از این نسخه5.15.0-181.191
Ubuntu 24.04 LTSقبل از این نسخه6.8.0-124.124
Ubuntu 26.04 LTSقبل از این نسخه7.0.0-22.22
Debian bullseyeقبل از این نسخه5.10.257-1
Debian bookwormقبل از این نسخه6.1.174-1
Debian trixieقبل از این نسخه6.12.90-1
Debian sidقبل از این نسخه7.0.9-1
AlmaLinux 8قبل از این نسخهkernel-4.18.0-553.124.3.el8_10
AlmaLinux 9قبل از این نسخهkernel-5.14.0-611.54.5.el9_7
AlmaLinux 10قبل از این نسخهkernel-6.12.0-124.56.3.el10_1

RHEL 8، 9 و 10 نیز آسیب‌پذیر هستند، همین‌طور محصولات مبتنی بر RHEL مثل RHEL CoreOS، OpenShift، OpenStack Platform و Red Hat Virtualization. برای این محصولات باید از کانال به‌روزرسانی رسمی Red Hat نسخه پچ‌شده را دریافت کنید. اگر روی یکی از همین توزیع‌ها سرور لینوکس را با SELinux سخت‌سازی کرده‌اید، وصله کرنل تغییری در تنظیمات SELinux نمی‌دهد و بعد از ریبوت هم باقی می‌ماند.

چطور بررسی کنید سرور شما آسیب‌پذیر است؟

نسخه کرنل در حال اجرا را ببینید:

uname -r

روی اوبونتو یا دبیان، نسخه پکیج نصب‌شده را هم بررسی کنید:

apt list --installed | grep linux-image

روی RHEL یا AlmaLinux:

rpm -q kernel
cat /etc/os-release

نسخه خروجی را با جدول بالا مقایسه کنید. اگر نسخه شما قدیمی‌تر از عدد وصله‌شده است، سرور آسیب‌پذیر است.

چون این زنجیره با PHP2Shell هم ترکیب می‌شود، نسخه PHP را هم بررسی کنید:

php -v

چطور وصله یا مقابله کنیم؟

راه‌حل اصلی، به‌روزرسانی پکیج کرنل به نسخه وصله‌شده و ریبوت سرور است؛ این باگ در سطح کرنل است و امکان live-patch ندارد، یعنی صرف نصب پکیج کافی نیست.

# اوبونتو/دبیان
sudo apt update && sudo apt install linux-image-generic
sudo reboot

# RHEL/AlmaLinux
sudo dnf update kernel
sudo reboot

اگر ریبوت فوری ممکن نیست، طبق بولتن RHSB-2026-003 ردهت، دو راه‌حل موقت وجود دارد:

مقایسه یک کلاستر سرور آسیب‌پذیر و وصله‌نشده (سمت چپ، قفل باز) با همان کلاستر بعد از وصله و ریبوت (سمت راست، قفل بسته)

۱. مسدود کردن ماژول‌های esp4/esp6 (در صورتی که از IPsec استفاده نمی‌کنید). ابتدا بررسی کنید که این ماژول‌ها در حال استفاده نیستند:

lsmod | grep -E 'esp4|esp6'

سپس:

printf 'install esp4 /bin/false\ninstall esp6 /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf

۲. غیرفعال کردن user namespaces بدون امتیاز (اگر IPsec/esp باید فعال بماند):

echo 'user.max_user_namespaces=0' > /etc/sysctl.d/dirtyfrag.conf

چون این آسیب‌پذیری عملا با زنجیره PHP2Shell استفاده می‌شود، وصله کردن فقط کرنل کافی نیست. سرورهای PHP باید هم‌زمان به نسخه ۸.۵.۱۲، ۸.۴.۲۷، ۸.۳.۳۶ یا ۸.۲.۳۵ (یا بالاتر) ارتقا یابند؛ وصله کردن فقط یک نیمه از زنجیره، نیمه دیگر را همچنان در معرض خطر نگه می‌دارد.

روی یک سرور مجازی که مالکیت کامل آن را دارید، این فرآیند ساده‌تر است: پیش از آپدیت کرنل یک snapshot می‌گیرید، ریبوت را در زمان کم‌ترافیک انجام می‌دهید، و با فایروال سطح سرور دسترسی به سرویس‌های غیرضروری مثل IPsec را محدود می‌کنید. اگر هنوز روی یک سرور مجازی لینوکس این سطح کنترل را ندارید یا می‌خواهید محیط تست جداگانه‌ای برای اعمال این وصله راه بیندازید، حتی یک سرور مجازی لینوکس ساعتی هم برای این کار کافی است.

سؤالات متداول

آیا Fragnesia از راه دور هم قابل سوءاستفاده است؟ به‌طور مستقیم نه؛ بردار حمله محلی است. اما در عمل، مهاجمان از راه دور ابتدا از طریق PHP2Shell یک وب‌شل روی سرور می‌گذارند و سپس از Fragnesia برای رسیدن به روت استفاده می‌کنند.

آیا نصب پکیج کرنل جدید بدون ریبوت کافی است؟ خیر. این آسیب‌پذیری در سطح کرنل در حال اجراست و live-patch نمی‌شود؛ باید سرور را ریبوت کنید تا کرنل جدید بار شود.

اگر همین حالا نمی‌توانم ریبوت کنم چه کار کنم؟ طبق بولتن ردهت، می‌توانید موقتا ماژول‌های esp4/esp6 را مسدود کنید یا user namespaces بدون امتیاز را غیرفعال کنید، تا زمانی که فرصت ریبوت فراهم شود.

چطور بفهمم سرورم هنوز آسیب‌پذیر است؟ با دستور uname -r (یا rpm -q kernel روی RHEL/AlmaLinux) نسخه کرنل را بگیرید و با جدول نسخه‌های وصله‌شده در این مطلب مقایسه کنید.

منابع