استفاده از TCP پس از رایگان: CVE-2026-98432 / CVSS 9.8
آدرس مقاله: https://atlasum.net/blog/cve-2026-98432-linux-ipv4-tcp-uaf آدرس نظرات: https://news.ycombinator.com/item?id=50319143 امتیاز: 221 # نظرات: 104
هستههای پایدار لینوکس در 11 و 15 اکتبر 2026 یک اصلاح برای CVE-2026-98432 ارسال کردند، یک روش بدون استفاده در دست دادن IPv4 TCP که یک همتای راه دور و احراز هویت نشده میتواند به آن دسترسی پیدا کند. مرجع شماره گذاری CVE خود هسته (CNA) به آن امتیاز CVSS 3.1 9.8، بحرانی را می دهد. نسخه های ثابت 5.10.272، 5.15.223، 6.1.190، 6.6.159، 6.12.113، 6.18.56، 7.2.10 و 7.3 هستند و باگ به لینوکس 4.4 برمی گردد.
اصلاح upstream یک تغییر چهار خطی است، اما اکثر سرورها هسته توزیع را اجرا میکنند و از ساعت 5:15 بعد از ظهر CDT، 31 اکتبر، ردیاب اوبونتو همچنان در هر نسخه «آسیبپذیر» را برای هسته خود میخواند، و Red Hat، که اکنون باگ Critical را نیز رتبهبندی میکند، RHEL 8، 9 را با شماره 1 تحت تأثیر قرار میدهد.
چرا فوری است: این اشکال در کدی که هر سرور لینوکس اجرا میشود، زمانی که اتصال IPv4 TCP را میپذیرد، قبل از اینکه هر برنامهای اتصال را ببیند، وجود دارد. Anthropic، که محقق آن آن را گزارش کرده است، میگوید مدل کلود آن یک اکسپلویت اثبات مفهوم کار نوشته است که دستورات را بهعنوان ریشه روی «سرورهای لینوکس با شنونده TCP چند مسیره» بدون اعتبار اجرا میکند. برنامههای Go بهصورت پیشفرض، طبق تیم Go Security، این شنوندگان را باز میکنند. جدول زمانی را ببینید.
هر هسته لینوکس از نسخه 4.4 به بعد که فاقد راه حل است، چه به طور مستقیم به شبکه سرویس دهد و چه میزبان کانتینرها: یک کانتینر بر روی هسته میزبان اجرا می شود، بنابراین یک تصویر جدید چیزی را تغییر نمی دهد. اتصالات IPv6 تحت تأثیر موضوع اصلی قرار نمی گیرند. commit می گوید "IPv6 تحت تاثیر اولین مسئله قرار نمی گیرد."
هسته های توزیع اصلاحات پشتیبان گیری شده را تحت شماره نسخه خود حمل می کنند، بنابراین ردیاب را بررسی کنید، نه شماره بالادست. از ساعت 5:15 بعد از ظهر CDT، 31 اکتبر:
هنگامی که یک سرور لینوکس یک اتصال TCP را می پذیرد، هسته دست دادن نیمه باز را در یک "سوکت درخواست" سبک وزن ردیابی می کند، سپس پس از اتمام دست دادن، یک سوکت کامل ایجاد می کند. اگر هدر IPv4 همتای اتصال دارای گزینههایی باشد، هسته آنها را در پاسخهای خود نگه میدارد. اشکال: هسته آن گزینههای ذخیرهشده را از سوکت درخواست به اتصال جدید بدون کپی کردن آنها تحویل میدهد، سپس بلافاصله پس از قطع اتصال، آنها را آزاد میکند، در حالی که CPU دیگری همچنان میتواند آنها را بخواند تا یک پاسخ دست دادن بسازد. خواندن حافظه هسته آزاد شده بدون استفاده است.
همتا نیازی به ورود به سیستم ندارد، و همه اینها قبل از اجرای هر کد برنامه در داخل دست دادن هسته اتفاق میافتد. یادداشتهای امتیازدهی CNA میگویند که دادههای قدیمی میتوانند حافظه هسته هسته را به همتا بازگردانند، نوشتن هسته را خارج از محدوده هدایت کنند، یا دستگاه را خراب کنند. Anthropic میگوید که یک مسابقه از دست رفته «فقط در دست دادن بدون خراب کردن کل سیستم شکست میخورد، بنابراین یک مهاجم مصمم میتواند تا زمانی که موفق شود، بهطور نامحدود دوباره تلاش کند».
commit اریک دومازت، "ipv4: inet_opt رایگان و ireq_opt پس از یک دوره مهلت RCU"، دو فراخوان kfree() ساده را به kfree_rcu() تغییر میدهد، که منتظر میماند تا هر خواننده قبل از آزاد کردن حافظه آن را به پایان برساند. مسیرهای کد دیگری که جایگزین این گزینه ها می شوند قبلا این کار را انجام داده اند. commit همچنین همین مشکل را در انتقال درخواست به سوکت برطرف می کند (net.ipv4.tcp_migrate_req=1، یا یک برنامه BPF_SK_REUSEPORT_SELECT_OR_MIGRATE)، و می گوید که یک مورد IPv6 مرتبط "در یک پچ جداگانه آدرس داده خواهد شد."
Red Hat اکنون آن را مانند CNA رتبه بندی می کند. در 30 اکتبر با استناد به "فقدان پیش نیازهای شبکه و احتمال ناپایداری شدید سیستم"، باگ را از Important (8.1) به Critical (9.8) رساند. بولتن آن می گوید: "سیستم هایی که اتصالات TCP ورودی را می پذیرند مستقیما در معرض دید قرار می گیرند."
نتیجه را با وضعیت توزیع خود در بالا مقایسه کنید، نه با نسخه بالادستی. اگر هسته نصب شده جدیدتر از هسته در حال اجرا باشد، تا زمانی که شما راه اندازی مجدد نکنید، رفع مشکل فعال نیست. اینها را روی میزبان های کانتینر و گره های Kubernetes اجرا کنید، نه در داخل کانتینرها: یک کانتینر هسته میزبان را گزارش می دهد. ما آنها را روی یک هاست دبیان 12 و در یک ظرف راکی لینوکس 9 اجرا کردیم.
ss -M فقط سوکت های MPTCP را فهرست می کند، بنابراین نتیجه خالی به معنای عدم وجود شنونده MPTCP است. net.mptcp.enabled = 1 به تنهایی یکی را ایجاد نمی کند: یک برنامه باید یک سوکت MPTCP را باز کند. ما هر دو را با iproute2 6.1 در یک کانتینر Debian 12 آزمایش کردیم، جایی که ss -Mlnp یک شنونده MPTCP آزمایشی را فهرست کرد و یک TCP ساده را در کنار آن نادیده گرفت. در 31 اکتبر همچنین یک سرور Go HTTP را فهرست کرد که go.mod می گوید go 1.24، و از همان سرور ساخته شده با go 1.23 صرفنظر کرد.
به محض ارسال، هسته ثابت توزیع خود را نصب کنید، سپس راهاندازی مجدد کنید: بهروزرسانی هسته تا زمانی که دستگاه در آن راهاندازی نشود، اعمال نمیشود. میزبان های کانتینر و گره های Kubernetes را نیز راه اندازی مجدد کنید. لوازم خانگی و تصاویر ابری که یک هسته را بستهبندی میکنند به بهروزرسانی فروشنده خود نیاز دارند.
در دبیان، SUSE Linux Enterprise Server 16.0 و 15 نسخه LTSS، openSUSE Leap 16.0، هستههای UEK اوراکل لینوکس، و آمازون لینوکس 2 و 2023، رفع مشکل تمام شده است. AlmaLinux در مخزن آزمایشی خود است. در اوبونتو و RHEL، از ساعت 5:15 بعد از ظهر CDT، 31 اکتبر، هنوز منتشر نشده است. ردیاب های پیوند شده در بالا را تماشا کنید. در حال اجرای یک کرنل خودساخته؟ به نسخه ثابت ثابت برای خط آن بروید.
بولتن Red Hat و AlmaLinux اکنون قوانین nftables را منتشر می کنند که بسته های IPv4 TCP دریافتی حاوی گزینه های IP را حذف می کنند. رد هت می گوید قانون آن "قرار گرفتن در معرض این آسیب پذیری را کاهش می دهد اما نمی تواند به طور کامل از آن جلوگیری کند." در زیر توصیه موقت Atlas است، همان قانون AlmaLinux، بر اساس یادداشت های امتیازدهی CNA، که می گوید همتای مهاجم گزینه های IPv4 Record Route یا Timestamp را در SYN خود ارائه می دهد. ترافیک TCP تقریبا هرگز گزینههای IPv4 را به طور قانونی حمل نمیکند، بنابراین حذف بستههای TCP که دارای آنها هستند، هزینهای ندارد:
ip hdrlength gt 5 با هر هدر IPv4 طولانی تر از حداقل 20 بایت مطابقت دارد که فقط گزینه ها تولید می کنند. این قانون قبل از ردیابی اتصال اجرا می شود و IPv6 یا ترافیک غیر TCP را لمس نمی کند. ما آن را در یک کانتینر Debian 12 آزمایش کردیم: یک SYN حاوی یک گزینه Record Route حذف شد، و اتصالات TCP معمولی همچنان کار میکردند. ما آن را در برابر یک اکسپلویت آزمایش نکردهایم و هسته را تعمیر نمیکند. تا راهاندازی مجدد ادامه مییابد، که اگر راهاندازی مجدد در یک هسته ثابت باشد خوب است. با nft delete table ip cve_2026_98432 حذفش کنید.
اگر فایروال لبه شما میتواند بستههای IPv4 را با گزینهها رها کند، انجام آن در آنجا از هر میزبان پشت آن محافظت میکند.
اگر فایروال را با iptables مدیریت می کنید، این قانون همان کار را از جدول خام انجام می دهد، که قبل از ردیابی اتصال نیز اجرا می شود:
تطبیق u32 فیلد طول سرصفحه IPv4 را می خواند و مقدار 6 تا 15 به این معنی است که هدر گزینه هایی را حمل می کند. ما آن را با iptables 1.8.9، هم در nf_tables و هم در بکاندهای قدیمی، در یک کانتینر Debian 12 آزمایش کردیم: یک Record Route SYN فرستاده شده به میزبان و یکی از طریق آن مسیریابی شد، و اتصالات TCP معمولی همچنان کار میکردند. با اجرای همان دستور با -D به جای -I، آن را حذف کنید. مانند قانون nft، تا راه اندازی مجدد ادامه دارد. به ماژول xt_u32 کرنل نیاز دارد که هستههای Debian 12، Ubuntu 22.04 و 24.04 و RHEL 8 شامل آن میشوند.
هسته های RHEL 9 و 10 و بازسازی های آنها را کنار بگذارید، بنابراین از قانون nft در آنجا استفاده کنید.
ورودی قلاب های قانون کلاه قرمزی ; ما قلابها را پیشروت میکند، بنابراین بستههای مسیرهای میزبان را به کانتینرها نیز رها میکند. در 31 اکتبر ما آن را در برابر دو جفت فضای نام شبکه آزمایش کردیم. همانطور که AlmaLinux هشدار می دهد: "ترافیک بین کانتینرها در همان میزبان ممکن است از آن عبور کند." AlmaLinux همچنین میگوید که از آن در شبکههایی که به برچسبهای امنیتی CIPSO متکی هستند استفاده نکنید، که در گزینههای IPv4 حرکت میکنند.
اگر از TCP چند مسیره استفاده نمی کنید آن را خاموش کنید. این نیازهای بهره برداری Anthropic را حذف می کند، البته نه باگ. مراحل AlmaLinux:
سپس سوکت های MPTCP جدید از کار می افتند و برنامه های Go با شروع به کار به TCP ساده برمی گردند. این تنظیم برای هر فضای نام شبکه است، و هر مورد جدید با MPTCP روشن شروع میشود، بنابراین یک کانتینر آن را نگه میدارد مگر اینکه آن را در آنجا نیز تنظیم کنید (Docker: --sysctl net.mptcp.enabled=0). ما مراحل و پرچم Docker را در 31 اکتبر آزمایش کردیم. برای یک برنامه Go، GODEBUG=multipathtcp=0 در محیط آن پیشفرض را خاموش میکند، اما تیم Go Security غیرفعال کردن برنامه MPTCP توسط برنامه را "یک کاهش شکننده" مینامد.
تا زمانی که بتوانید پچ کنید، شنوندگان MPTCP را از اینترنت دور نگه دارید و میزبان هایی را که یکی از آنها را دارند در بالای لیست پچ قرار دهید.
وضعیت بهره برداری Anthropic میگوید که کلود این اکسپلویت را «پس از درخواست اولیه» نوشته است، که «فرمانهای دلخواه را بهعنوان ریشه، بدون هیچ گونه اعتبار یا تعامل کاربر» روی سرورهایی با شنونده TCP چند مسیره اجرا میکند، و در اثبات مفهومش «48 دقیقه طول میکشد تا یک اشارهگر هسته و پنج دقیقه دیگر برای رسیدن به اجرای فرمان پوسته لازم باشد». آنتروپیک این اکسپلویت را منتشر نکرده است. خط مشی افشای آن به توسعه دهندگان 90 روز فرصت می دهد تا وصله کنند و 45 روز دیگر قبل از اینکه Anthropic درباره جزئیات فراتر از یک مشاوره عمومی بحث کند.
بولتن Red Hat اکنون می گوید که این باگ می تواند "برای اجرای کد از راه دور" مورد سوء استفاده قرار گیرد. تا ساعت 5:15 بعد از ظهر CDT در 31 اکتبر، 36 مخزن GitHub به CVE ارجاع دادند. اکثر آنها خود را به عنوان ابزار ممیزی یا کاهش میدهند، از جمله نقشهای Ansible و یک پچ زنده برای AlmaLinux و Rocky Linux. حداقل شش نفر می گویند که شامل یک ماشه مسابقه یا اثبات مفهومی برای استفاده رایگان است. اولین مورد در ساعت 7:22 بعد از ظهر روز 29 اکتبر و آخرین آن در ساعت 11:04 صبح در 31 اکتبر ایجاد شد.
ما هیچ اثبات عمومی مفهوم را آزمایش نکردهایم و آنها را به هم مرتبط نمیکنیم.
ما این پست را اصلاح میکنیم و با تغییر هر یک از این پستها، آن را بهروزرسانی میکنیم: هستههای ثابت از اوبونتو یا ردهت، یا انتشار تولید AlmaLinux. تجزیه و تحلیل NVD؛ فهرست KEV یا هر گزارش بهره برداری؛ رفع جداگانه IPv6
اگر قسمت سخت این است که بدانید کدام هاست ها، نودها و ابزارها کدام هسته را اجرا می کنند و کدام یک از آنها می توانند این هفته راه اندازی مجدد شوند، مشاوران ما می توانند به برنامه ریزی آن کمک کنند.
این اشکال از طریق هر درگاه TCP شنود قابل دسترسی است، بنابراین به شما کمک می کند که بدانید اینترنت کدام یک را می تواند ببیند. ممیزی خارجی رایگان ما دامنهها و IPهای عمومی را که تأیید میکنید برای سرویسهای در معرض دید، نسخههای نرمافزار قابل مشاهده عمومی با CVEهای شناخته شده، TLS، امنیت ایمیل، DNS و سرصفحههای HTTP بررسی میکند.
این دومین تعمیر هسته لینوکس در این ماه است که تنها پس از راه اندازی مجدد اعمال می شود. دیگری، Fragnesia، با PHP2Shell زنجیر شده است تا ریشه داشته باشد.
خط مرزی امنیتی Atlas: نوشتن آسیبپذیریها در نرمافزارهای گسترده - چه چیزی تغییر کرده است، چه کسی در معرض دید قرار میگیرد و چه چیزی باید بررسی شود - در برابر منابع اولیه تأیید شده است.
متن اصلی (انگلیسی)
TCP Use-After-Free: CVE-2026-98432 / CVSS 9.8
Article URL: https://atlasum.net/blog/cve-2026-98432-linux-ipv4-tcp-uaf Comments URL: https://news.ycombinator.com/item?id=50319143 Points: 221 # Comments: 104