خانه » CVE-2026-23398

CVE-2026-23398

icmp: fix NULL pointer dereference in icmp_tag_validation()

توسط Vulnerbyte Alerts
91 بازدید
هشدار سایبری CVE-2026-23398

چکیده

آسیب‌پذیری در زیرسیستم شبکه IPv4 کرنل لینوکس (Linux Kernel) ناشی از یک خطای برنامه‌نویسی از نوع ارجاع به اشاره‌گر تهی (NULL Pointer Dereference) در تابع icmp_tag_validation() است. این ضعف زمانی رخ می‌دهد که کرنل در حالت Hardened Path MTU Discovery یک پیام ICMP خاص را پردازش کند و پروتکل داخلی مربوطه در سیستم ثبت نشده باشد. در این شرایط، کرنل بدون بررسی مقدار NULL به ساختار داده مربوطه دسترسی پیدا می‌کند که می‌تواند باعث Kernel Panic یا کرش کرنل شده و در نهایت منجر به انکار سرویس (DoS) شود.

توضیحات

آسیب‌پذیری CVE‑2026‑23398 در زیرسیستم شبکه IPv4 کرنل لینوکس و به‌طور مشخص در پیاده‌سازی تابع icmp_tag_validation() در فایل icmp.c رخ می‌دهد. این تابع مسئول بررسی اعتبار برخی ویژگی‌های پیام‌های ICMP (پروتکل پیام‌های کنترل اینترنتی) است. پروتکل ICMP یکی از کامپوننت‌های کلیدی مجموعه پروتکل‌های TCP/IP محسوب می‌شود و برای ارسال پیام‌های کنترلی و خطا مانند پیام‌های Destination Unreachable (مقصد غیرقابل دسترسی) یا Fragmentation Needed  در شبکه به کار می‌رود.

در پیاده‌سازی آسیب‌پذیری، تابع icmp_tag_validation() نتیجه فراخوانی rcu_dereference(inet_protos[proto]) را بدون بررسی NULL مورد استفاده قرار می‌دهد. آرایه inet_protos[]  در کرنل لینوکس برای ثبت هندلرهای (Handler) پروتکل‌های شبکه استفاده می‌شود و شامل 256 خانه (Entry) است، اما تنها حدود 15 پروتکل دارای هندلر ثبت‌شده هستند؛ بنابراین بسیاری از خانه‌های این آرایه مقدار NULL دارند.

این ضعف زمانی بروز می‌کند که مقدار پارامتر proto به یکی از پروتکل‌های ثبت‌نشده اشاره کند. در چنین حالتی، فراخوانی rcu_dereference(inet_protos[proto]) مقدار NULL بازمی‌گرداند، اما کد بدون بررسی آن تلاش می‌کند به فیلد icmp_strict_tag_validation دسترسی پیدا کند. این دسترسی مستقیم به یک اشاره‌گر تهی باعث وقوع خطای NULL Pointer Dereference می‌شود.

سناریوی فعال شدن این آسیب‌پذیری به پیکربندی خاص کرنل وابسته است. زمانی که گزینه ip_no_pmtu_disc روی 3 تنظیم شود، کرنل وارد حالت Hardened PMTU Mode  می‌شود که نسخه هاردنینگ مکانیزم Path MTU Discovery (شناسایی حداکثر واحد انتقال مسیر) است. این مکانیزم برای تشخیص حداکثر اندازه بسته قابل ارسال در مسیر شبکه بدون نیاز بهFragmentation  استفاده می‌شود.

در این وضعیت، اگر کرنل یک پیام ICMP از نوع Fragmentation Needed دریافت کند که شامل یک Quoted Inner IP Header باشد و شماره پروتکل آن هدر مربوط به پروتکلی باشد که در inet_protos[]  ثبت نشده است، تابع ` icmp_tag_validation() مقدار NULL را ارجاع می‌دهد. این خطا در بستر اجرای softirq (Software Interrupt) رخ می‌دهد که مکانیزمی در کرنل لینوکس برای پردازش رویدادهای شبکه و عملیات زمان‌حساس در سطح کرنل است.

نتیجه این ضعف، وقوع kernel panic و توقف عملکرد سیستم است. در سناریوی نهایی این وضعیت می‌تواند منجر به اختلال کامل سرویس‌های سیستم و انکار سرویس (DoS) شود.

برای رفع این آسیب‌پذیری، در نسخه‌های جدید کرنل لینوکس، یک پچ حیاتی اعمال شده است. در نسخه پچ‌شده، پیش از دسترسی به فیلد icmp_strict_tag_validation، نتیجه rcu_dereference(inet_protos[proto]) در یک متغیر موقت ذخیره شده و بررسی می‌شود که آیا مقدار NULL است یا خیر. اگر برای شماره پروتکل مشخص‌شده هندلری ثبت نشده باشد، تابع مقدار false بازمی‌گرداند و از ادامه پردازش جلوگیری می‌کند. این بررسی مانع ارجاع به اشاره‌گر NULL شده و از وقوع kernel panic جلوگیری می‌کند.

CVSS

Score Severity Version Vector String
6.2 MEDIUM 3.1 CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

لیست محصولات آسیب پذیر

Versions Product
affected at 3.14 Linux
affected from 8ed1dc44d3e9e8387a104b1ae8f92e9a3fbf1b1e before 1f9f2c6d4b2a613b7756fc5679c5116ba2ca0161

affected from 8ed1dc44d3e9e8387a104b1ae8f92e9a3fbf1b1e before b61529c357f1ee4d64836eb142a542d2e7ad67ce

affected from 8ed1dc44d3e9e8387a104b1ae8f92e9a3fbf1b1e before 9647e99d2a617c355d2b378be0ff6d0e848fd579

affected from 8ed1dc44d3e9e8387a104b1ae8f92e9a3fbf1b1e before d938dd5a0ad780c891ea3bc94cae7405f11e618a

affected from 8ed1dc44d3e9e8387a104b1ae8f92e9a3fbf1b1e before 1e4e2f5e48cec0cccaea9815fb9486c084ba41e2

affected from 8ed1dc44d3e9e8387a104b1ae8f92e9a3fbf1b1e before 614aefe56af8e13331e50220c936fc0689cf5675

Linux

لیست محصولات بروز شده

Versions Product
unaffected from 0 before 3.14

unaffected from 6.1.167 through 6.1

unaffected from 6.6.130 through 6.6

unaffected from 6.12.78 through 6.12

unaffected from 6.18.20 through 6.18

unaffected from 6.19.10 through 6.19

unaffected from 7.0-rc5

Linux
1f9f2c6d4b2a613b7756fc5679c5116ba2ca0161

b61529c357f1ee4d64836eb142a542d2e7ad67ce

9647e99d2a617c355d2b378be0ff6d0e848fd579

d938dd5a0ad780c891ea3bc94cae7405f11e618a

1e4e2f5e48cec0cccaea9815fb9486c084ba41e2

614aefe56af8e13331e50220c936fc0689cf5675

Linux

استفاده محصول در ایران

در این جدول، تعداد صفحات ایندکس‌شده در گوگل با دامنه .ir که Linux kernel را ذکر کرده اند، ثبت شده است. این داده صرفاً برای برآورد تقریبی حضور محصولات در وب ایران استفاده شده و نمایانگر میزان نصب دقیق و استفاده واقعی نیست.

Approx. Usage in .ir Domain via Google (Total Pages) Search Query (Dork) Product
24,700 site:.ir “Linux kernel” Linux kernel

نتیجه گیری

این آسیب‌پذیری با شدت متوسط ناشی از عدم بررسی مقدار NULL در مسیر پردازش پیام‌های ICMP است که می‌تواند باعث بروز kernel panic و در نتیجه توقف کامل سیستم شود. از آنجا که کرنل هسته اصلی سیستم‌عامل است، وقوع چنین خطایی عملاً تمامی سرویس‌های در حال اجرا را مختل کرده و دسترس‌پذیری سیستم را از بین می‌برد.

برای کاهش ریسک بهره‌برداری از این آسیب‌پذیری و افزایش سطح امنیت سیستم‌های مبتنی بر لینوکس، اجرای اقدامات زیر توصیه می‌شود:

  • به‌روزرسانی فوری کرنل: مهم‌ترین و مؤثرترین اقدام، به‌روزرسانی سیستم به نسخه‌های پچ‌شده کرنل لینوکس است. سایر اقدامات نقش مکمل را دارند و می‌توانند به کاهش ریسک این آسیب پذیری و مقابله با حملات مشابه کمک کنند.
  • بررسی نسخه کرنل: مدیران سیستم باید نسخه در حال اجرای کرنل را با دستوراتی مانند uname -r بررسی کنند و اطمینان حاصل نمایند که کامیت‌های اصلاحی مربوط به این آسیب‌پذیری در سیستم اعمال شده‌اند.
  • مانیتورینگ سیستم: استفاده از ابزارهای مانیتورینگ سیستم و سامانه‌های تشخیص نفوذ (IDS) می‌تواند به شناسایی پیام‌های غیرعادی ICMP یا خطاهای مرتبط با زیرسیستم شبکه کمک کند.
  • محدودسازی ترافیک ICMP: در محیط‌های حساس، می‌توان با استفاده از فایروال سیستم‌عامل یا فایروال شبکه، برخی انواع پیام‌های ICMP غیرضروری را محدود یا فیلتر کرد. این کار می‌تواند سطح حمله را کاهش دهد.
  • ایمن‌سازی پیکربندی شبکه: بررسی تنظیمات مرتبط با PMTU Discovery و گزینه ip_no_pmtu_disc و اطمینان از پیکربندی صحیح آن در محیط‌های عملیاتی می‌تواند از فعال شدن شرایط خاصی که منجر به بروز این نقص می‌شود جلوگیری کند.

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

امکان استفاده در تاکتیک‌های Mitre Attack (در زمان اجرای حمله)

Initial Access (TA0001)
مهاجم برای دسترسی اولیه نیازی به احراز هویت یا تعامل کاربر ندارد. او می‌تواند از راه دور و با ارسال یک بسته ICMP ساخته‌شده به سیستم هدف، باعث ایجاد kernel panic شود. شرط موفقیت این مرحله، فعال بودن پارامتر ip_no_pmtu_disc=3 و قابلیت ارسال بسته به سیستم است.

Execution (TA0002)
مهاجم با ارسال بسته ICMP مخرب، باعث اجرای کد در سطح کرنل (تابع icmp_tag_validation) می‌شود. اگرچه این اجرا منجر به اجرای کد دلخواه نمی‌شود، اما جریان عادی اجرای کرنل را مختل کرده و به kernel panic منجر می‌گردد.

Privilege Escalation (TA0004)
این آسیب‌پذیری سطح دسترسی را افزایش نمی‌دهد، بلکه باعث از کار افتادن سیستم می‌شود.

Defense Evasion (TA0005)
بسته‌های ICMP معمولاً توسط بسیاری از فایروال‌ها و سیستم‌های تشخیص نفوذ مجاز در نظر گرفته می‌شوند. مهاجم می‌تواند با استفاده از این پروتکل متداول، از برخی مکانیزم‌های دفاعی عبور کند.

Discovery (TA0007)
مهاجم می‌تواند با ارسال بسته‌های ICMP و مشاهده پاسخ (یا عدم پاسخ)، وجود سیستم‌های آسیب‌پذیر را شناسایی کند.

Impact (TA0040)
بهره‌برداری موفق از این آسیب‌پذیری منجر به نابودی در دسترس‌پذیری (Availability) سیستم هدف می‌شود. مهاجم می‌تواند با ارسال یک بسته ICMP، باعث kernel panic و از کار افتادن کامل سیستم گردد. این امر می‌تواند منجر به قطعی سرویس‌های حیاتی، اختلال در عملیات تجاری و خسارات مالی شود. در مواردی که سیستم هدف یک سرور حیاتی یا زیرساخت شبکه باشد، تأثیر آن می‌تواند گسترده و بلندمدت باشد.

منابع

  1. https://www.cve.org/CVERecord?id=CVE-2026-23398
  2. https://www.cvedetails.com/cve/CVE-2026-23398/
  3. https://vulmon.com/vulnerabilitydetails?qid=CVE-2026-23398
  4. https://vuldb.com/vuln/353576
  5. https://git.kernel.org/stable/c/1f9f2c6d4b2a613b7756fc5679c5116ba2ca0161
  6. https://git.kernel.org/stable/c/b61529c357f1ee4d64836eb142a542d2e7ad67ce
  7. https://git.kernel.org/stable/c/9647e99d2a617c355d2b378be0ff6d0e848fd579
  8. https://git.kernel.org/stable/c/d938dd5a0ad780c891ea3bc94cae7405f11e618a
  9. https://git.kernel.org/stable/c/1e4e2f5e48cec0cccaea9815fb9486c084ba41e2
  10. https://git.kernel.org/stable/c/614aefe56af8e13331e50220c936fc0689cf5675
  11. https://app.opencve.io/cve/CVE-2026-23398
  12. https://nvd.nist.gov/vuln/detail/CVE-2026-23398

همچنین ممکن است دوست داشته باشید

پیام بگذارید