یک آسیب پذیری حیاتی (CVE-2021-43267) در اجرای پروتکل شبکه TIPC (Transparent Inter-Process Communication) ارائه شده در هسته لینوکس شناسایی شده است که به شما امکان می دهد کد خود را از راه دور با امتیازات هسته با ارسال یک برنامه طراحی شده خاص اجرا کنید. بسته شبکه خطر این مشکل با این واقعیت کاهش می یابد که حمله نیاز به فعال کردن صریح پشتیبانی TIPC در سیستم دارد (بارگیری و پیکربندی ماژول هسته tipc.ko)، که به طور پیش فرض در توزیع های غیر تخصصی لینوکس انجام نمی شود.
پروتکل TIPC از هسته لینوکس 3.19 پشتیبانی می شود، اما کد منتهی به آسیب پذیری در هسته 5.10 گنجانده شده است. این آسیب پذیری در هسته های 5.15.0، 5.10.77 و 5.14.16 رفع شده است. این مشکل ظاهر می شود و هنوز در Debian 11، Ubuntu 21.04/21.10، SUSE (در شاخه SLE15-SP4 هنوز منتشر نشده)، RHEL (هنوز جزئیاتی در مورد اینکه آیا رفع آسیب پذیر بکپورت شده است یا خیر) و فدورا برطرف نشده است. بهروزرسانی هسته قبلاً برای Arch Linux منتشر شده است. توزیع هایی با هسته قدیمی تر از 5.10، مانند Debian 10 و Ubuntu 20.04، تحت تأثیر این مشکل قرار نمی گیرند.
پروتکل TIPC در ابتدا توسط اریکسون توسعه داده شد و برای سازماندهی ارتباطات بین فرآیندی در یک خوشه طراحی شد و عمدتاً در گره های خوشه ای فعال می شود. TIPC می تواند از طریق اترنت یا UDP (درگاه شبکه 6118) کار کند. هنگام کار از طریق اترنت، حمله را می توان از شبکه محلی، و در هنگام استفاده از UDP، از شبکه جهانی اگر پورت توسط فایروال پوشانده نشده باشد، انجام داد. این حمله همچنین می تواند توسط یک کاربر محلی غیرمجاز میزبان انجام شود. برای فعال کردن TIPC، باید ماژول هسته tipc.ko را دانلود کنید و اتصال به رابط شبکه را با استفاده از netlink یا ابزار tipc پیکربندی کنید.
این آسیبپذیری خود را در تابع tipc_crypto_key_rc نشان میدهد و به دلیل عدم تأیید صحیح مطابقت بین دادههای مشخصشده در هدر و اندازه واقعی دادهها هنگام تجزیه بستهها با نوع MSG_CRYPTO ایجاد میشود که برای به دست آوردن کلیدهای رمزگذاری از گرههای دیگر استفاده میشود. در خوشه به منظور رمزگشایی بعدی پیام های ارسال شده از این گره ها. اندازه داده های کپی شده در حافظه به عنوان تفاوت بین مقادیر فیلدها با اندازه پیام و اندازه هدر محاسبه می شود، اما بدون در نظر گرفتن اندازه واقعی نام الگوریتم رمزگذاری و محتویات کلید ارسال شده در پیام فرض بر این است که اندازه نام الگوریتم ثابت است و یک ویژگی جداگانه با اندازه نیز برای کلید ارسال میشود و مهاجم میتواند مقداری را در این ویژگی متفاوت با مقدار واقعی تعیین کند که منجر به نوشتن دم پیام فراتر از بافر اختصاص داده شده است. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; بدون امضا int keylen; /* در بایت */ کلید char[]; };
منبع: opennet.ru