شرکت Anthropic یک آسیبپذیری بحرانی (CVE-2026-98432) را در پشته TCP هسته افشا کرده است. Linuxکه امکان اجرای کد از راه دور را با ارسال بستههای دستکاریشدهی خاص فراهم میکند. یک بهرهبرداری فعال گزارش شده است که امکان اجرای کد در سطح هسته و کسب امتیازات ریشه از راه دور در سیستم را فراهم میکند. این بهرهبرداری برای حمله به سیستمهایی با فرآیندهای سرور که اتصالات را از طریق سوکتهای شبکهای که از پروتکل Multipath TCP (MPTCP) پشتیبانی میکنند، میپذیرند، مناسب است. پشتیبانی MPTCP را میتوان بر اساس سوکت هر شبکه فعال کرد، که پیشفرض در کتابخانه استاندارد Go است و از Go 1.24 (فوریه 2025) شروع میشود.
اکسپلویت آمادهشده میتواند با هر برنامهی سروری که با زبان Go نوشته شده است، از جمله سرور Caddy HTTP، مورد استفاده قرار گیرد، تا زمانی که بتواند بستههای شبکه را به سوکتی که در حال گوش دادن به آن است ارسال کند. از آنجایی که این آسیبپذیری مستقیماً در پشتهی IPv4 وجود دارد و مختص MPTCP نیست، میتوان اکسپلویتهایی ایجاد کرد که بدون تکیه بر MPTCP کار کنند، اما چنین اکسپلویتهایی هنوز اثبات نشدهاند. به عنوان مثال، میتوان هنگام پردازش درخواستهای مهاجرت سوکت، که در پیکربندیهایی با پارامتر net.ipv4.tcp_migrate_req=1 یا هنگام استفاده از برنامههای eBPF با گزینهی BPF_SK_REUSEPORT_SELECT_OR_MIGRATE در دسترس است، از این آسیبپذیری سوءاستفاده کرد.
این آسیبپذیری ناشی از شرایط رقابتی است که در طول پردازش همزمان درخواستهای SYN ارسالشده در طول برقراری اتصال TCP رخ میدهد. از آنجایی که تابع tcp_v4_syn_recv_sock() پارامترها را از ساختار ireq->ireq_opt به سوکت فرزند از طریق یک ارجاع به جای کپی کردن آنها منتقل میکند، تحت شرایط خاص وضعیتی پیش میآید که حافظه برای ساختارهای inet_opt و ireq_opt حاوی پارامترهای سوکت از قبل آزاد شده است، اما گزینههای سوکت مرتبط همچنان مورد استفاده قرار میگیرند (use-after-free).
سوءاستفاده از راه دور با ارسال مجموعهای از درخواستهای شبکهای هماهنگشده با زمان انجام میشود. این سوءاستفاده با موفقیت روی هستههایی که از تصادفیسازی آدرس (KASLR) استفاده میکنند، اعمال میشود، اما رسیدن به پنجره شرایط رقابتی زمان قابل توجهی طول میکشد و به تعداد زیادی تلاش مجدد نیاز دارد. سوءاستفاده با این واقعیت ساده میشود که از دست دادن پنجره شرایط رقابتی فقط منجر به یک handshake میشود، نه از کار افتادن هسته، که امکان تلاشهای نامحدود را فراهم میکند. در نمونه اولیه سوءاستفاده، حمله تقریباً یک ساعت طول کشید - ۴۸ دقیقه برای تعیین طرحبندی حافظه و ۵ دقیقه دیگر برای سازماندهی اجرای کد.
هنوز هیچ راهحلی برای رفع این آسیبپذیری وجود ندارد - نصب بهروزرسانی هسته تنها گزینه قابل اعتماد است. مشکل از هسته شروع میشود. Linux ۴.۴ و در نسخههای ۵.۱۰.۲۷۲، ۵.۱۵.۲۲۳، ۶.۱.۱۹۰، ۶.۶.۱۵۹، ۶.۱۲.۱۱۳، ۶.۱۸.۵۶، ۷.۲.۱۰ و ۷.۳ رفع شده است. وضعیت رفع آسیبپذیریها در توزیعها را میتوان در این صفحات ارزیابی کرد: Debian, Ubuntu، سوزه/اوپن سوزه، RHEL، جنتو، آرچ،
فدورا
توصیههایی برای مقابله با روشهای خاص سوءاستفاده که بهطورکلی آسیبپذیری را مسدود نمیکنند، شامل غیرفعال کردن پشتیبانی MPTCP و تنظیم پارامتر sysctl هسته net.ipv4.tcp_migrate_req روی ۰ است:
sysctl -w net.mptcp.enabled=0
sysctl -w net.ipv4.tcp_migrate_req=0
برای تعیین اینکه آیا فرآیندهایی در سیستم وجود دارند که از سوکتهایی با ... استفاده میکنند یا خیر
MPTCP، میتوانید از دستورات زیر استفاده کنید:
نمایش نقطه پایانی mptcp در ip
نمایش محدودیتهای mptcp برای آیپی
برای غیرفعال کردن پشتیبانی MPTCP در برنامههای Go، از پرچم "multipathtcp=0" استفاده کنید که میتوان آن را با تنظیم متغیر محیطی "GODEBUG=multipathtcp=0" تنظیم کرد. برای غیرفعال کردن پشتیبانی MPTCP در زمان ساخت، "godebug multipathtcp=0" را به فایل go.mod اضافه کنید. در کد برنامه خود، میتوانید MPTCP را با استفاده از توابع net.Dialer.SetMultipathTCP و net.ListenConfig.SetMultipathTCP غیرفعال کنید.
علاوه بر موضوع مورد بحث، شرکت آنتروپیک همچنین از مجموعهای از آسیبپذیریهای قابل بهرهبرداری محلی در هسته خبر داد. Linux، OpenBSD و FreeBSD که امکان دسترسی ریشه به سیستم و فرار از کانتینرهای ایزوله را فراهم میکنند؛ آسیبپذیریهایی در کروم و سافاری که منجر به اجرای کد روی سیستم هنگام باز کردن صفحات وب طراحیشدهی خاص میشوند؛ یک آسیبپذیری در هسته Windowsمنجر به از کار افتادن سیستم؛ آسیبپذیری پلتفرم Androidکه به شما امکان میدهد قفل صفحه را دور بزنید و بدون باز کردن قفل دستگاه به اطلاعات شخصی و عکسهای خود دسترسی پیدا کنید (این حمله روی گوشی هوشمند گوگل پیکسل ۹ نشان داده شد).
موارد اضافی:
- در nginx، قابلیت فعال کردن گزینه IPPROTO_MPTCP برای سوکت شبکه در حال شنود از نسخه ۱.۲۹.۷ وجود داشته است، اما به طور پیشفرض استفاده نمیشود.
- در Lighttpd، گزینه فعالسازی MPTCP از نسخه ۱.۴.۷۶ در دسترس است.
- در آپاچی httpd، وصلههایی برای پشتیبانی از MPTCP در سال ۲۰۲۴ به شاخه آپاچی httpd 2.5-HEAD اضافه شد.
- در systemd، پشتیبانی از فعالسازی MPTCP هنگام فعالسازی از طریق سوکت در نسخه ۲۵۷ اضافه شد.
- در سرور ترافیک آپاچی، گزینه فعالسازی MPTCP از نسخه ۹.۲.۴ پشتیبانی میشود.
- در HAProxy، از نسخه ۳.۱.۰ به بعد، گزینه "mptcp{,4,6}@" در دسترس است. «. (یا: "باورم نمیشود که آدمها اشتباه میکنند.")
- در Traefik، تنظیم پرچم IPPROTO_MPTCP از نسخههای 2.11.26، 3.4.2 و v3.5.0-rc1 به طور پیشفرض فعال است.
- در پایگاه داده Valkey، از نسخه ۹.۰.۰ به بعد، گزینه "--mptcp" و تنظیمات "mptcp yes" و "repl-mptcp yes" در دسترس هستند.
منبع: opennet.ru
