پنجشنبه, مهر ۱۶, ۱۴۰۵

اسیب‌پذیری بحرانی وصله‌نشده در LMCache به مهاجمان بدون احراز هویت امکان اجرای کد از راه دور می‌دهد

0
6
اسيب‌پذيري بحرانی وصله‌نشده در LMCache به مهاجمان بدون احراز هویت امکان اجرای کد از راه دور می‌دهد

یک اسیب‌پذیری بحرانی در LMCache، نرم‌افزار متن‌بازی که برای افزایش سرعت سرورهای مدل‌های زبانی بزرگ (LLM) مانند vLLM استفاده می‌شود، به مهاجم اجازه می‌دهد بدون ورود به سیستم، روی سرور کش کد اجرا کند. در حال حاضر نیز هیچ نسخه اصلاح‌ شده‌ای برای این مشکل منتشر نشده است.

این نقص در حالت چندپردازه یا Multiprocess Mode در LMCache وجود دارد؛ حالتی که در آن کش به‌صورت یک سرور مستقل اجرا می‌شود و Workerهای مدل زبانی از طریق کتابخانه پیام‌رسانی ZeroMQ به آن متصل می‌شوند. ارسال تنها یک پیام شبکه‌ای به این سرور می‌تواند باعث اجرای دستورها با سطح دسترسی کاربری شود که فرایند LMCache تحت حساب او اجرا شده است.

این سرور تنها زمانی از یک دستگاه دیگر قابل دسترسی است که مدیر سیستم آن را طوری تنظیم کرده باشد که به‌جای localhost پیش‌فرض، روی یک آدرس قابل مسیریابی در شبکه گوش دهد.

JFrog این نقص را در ۷ اکتبر افشا کرد و برای آن امتیاز شدت ۹.۸ از ۱۰ در محدوده بحرانی در نظر گرفت. این امتیاز مربوط به حالتی است که سرور روی یک آدرس قابل مسیریابی در شبکه Bind شده باشد.

این اسیب‌پذیری که با شناسه CVE-2026-105192 ردیابی می‌شود، نسخه‌های LMCache از ۰.۳.۹ که در اکتبر ۲۰۲۵ منتشر شد تا نسخه ۰.۵.۵، یعنی جدیدترین نسخه پایدار، را تحت تاثیر قرار می‌دهد. این نقص در نسخه‌های کاندید انتشار ۰.۵.۶ و همچنین شاخه توسعه نیز وجود دارد. در حال حاضر هیچ نسخه اصلاح‌ شده‌ای منتشر نشده است.

این‌که سرور در معرض دسترسی شبکه قرار بگیرد یا نه، به یک تنظیم بستگی دارد. به‌صورت پیش‌فرض، سرور Multiprocess فقط روی دستگاه محلی گوش می‌دهد و در نتیجه میزبان دیگری نمی‌تواند به آن دسترسی پیدا کند. زمانی این سرور از شبکه قابل دسترسی می‌شود که مدیر سیستم آن را با یک ادرس قابل مسیریابی اجرا کند؛ مشابه پیکربندی‌های چندگرهی که در آن‌ها یک کش بین چند دستگاه به اشتراک گذاشته می‌شود.

نمونه استقرار Kubernetes خود LMCache نیز سرور را به همین شکل اجرا می‌کند و آن را روی تمام رابط‌های شبکه در حالت Listen قرار می‌دهد. در مقابل، نسخه‌ای از LMCache که داخل یک فرایند واحد vLLM اجرا می‌شود، اصلا این پورت را باز نمی‌کند.

سوکت ZeroMQ که سرور Multiprocess برای ثبت Workerها و اشتراک‌گذاری داده‌های کش‌شده باز می‌کند، هیچ سازوکار احراز هویتی ندارد. یکی از انواع پیام‌ها با استفاده از pickle بازگشایی می‌شود. Pickle یک فرمت پایتون است که می‌تواند کد را در خود حمل کند و هنگام Decode شدن داده، آن کد را اجرا کند. سرور این داده را در همان مرحله خواندن آرگومان‌های پیام بازگشایی می‌کند، یعنی پیش از آن‌که نوع پیام بررسی شود. در نتیجه، یک پیام دستکاری‌شده می‌تواند باعث اجرای کد ارسال‌کننده شود.

کد با همان سطح دسترسی فرایند LMCache اجرا می‌شود. طبق گزارش JFrog، در Imageهای رسمی کانتینری این پروژه، این فرایند با دسترسی root اجرا می‌شود. این نقص توسط Yuval Moravchick از تیم پژوهش امنیتی JFrog کشف شده است.

هنوز هیچ نسخه وصله‌شده‌ای منتشر نشده است. تا زمان انتشار نسخه اصلاح‌شده، JFrog به مدیران سیستم توصیه می‌کند سرور Multiprocess را روی یک ادرس قابل مسیریابی قرار ندهند و پورت آن را فقط روی دستگاه محلی یا در یک شبکه کلاستر قابل اعتماد در دسترس نگه دارند. استفاده از فایروال برای محدود کردن میزبان‌هایی که می‌توانند به این پورت دسترسی داشته باشند، خطر را کاهش می‌دهد، اما آن را به‌طور کامل از بین نمی‌برد؛ زیرا هر میزبانی که همچنان بتواند اتصال برقرار کند، قادر به اجرای کد خواهد بود.

LMCache تاکنون هیچ هشدار امنیتی رسمی درباره این نقص منتشر نکرده است. هشدار JFrog نیز روشی در اختیار مدیران سیستم قرار نمی‌دهد که بتوانند مشخص کنند ایا سرور پیش از این مورد حمله قرار گرفته است یا نه.

گزارش‌های دیگر و یک اصلاح مرتبط در vLLM

به‌صورت جداگانه، یک کاربر GitHub در ۶ اکتبر، یعنی یک روز پیش از عمومی شدن CVE-۲۰۲۶-۱۰۵۱۹۲، شش گزارش امنیتی دیگر درباره LMCache ثبت کرد. در این گزارش‌ها ادعا شده است که امکان دسترسی بدون احراز هویت به داده‌های کش‌ شده متعلق به Tenantهای مختلف وجود دارد و همچنین چند سرویس شبکه‌ای بدون نیاز به ورود به سیستم قادر به اجرای دستور هستند.

تمام این گزارش‌ها از سوی یک حساب کاربری منتشر شده‌اند، بر ادعاهای مربوط به Proof of Concept تکیه دارند و هیچ CVE، تاییدی از سوی نگه‌دارندگان پروژه یا اصلاحیه‌ای برای آن‌ها وجود ندارد. یکی از این گزارش‌ها به تنظیم پیش‌فرضی در LMCache اشاره می‌کند که از آن زمان تغییر کرده است: یک سرور HTTP مدیریتی که در نسخه ۰.۵.۵ روی تمام رابط‌های شبکه گوش می‌داد، در نسخه‌های کاندید انتشار ۰.۵.۶ فقط روی میزبان محلی Listen می‌کند.

یک نقص مرتبط در vLLM پیش از این اصلاح شده است. قبل از نسخه ۰.۳۰.۰ که در ۲۲ سپتامبر منتشر شد، تنها یک درخواست حاوی مقدار معیوب cache_salt می‌توانست در استقرارهایی که از کانکتور Multiprocess مربوط به LMCache استفاده می‌کنند، باعث Crash شدن Engine شود. این نقص از نوع منع سرویس یا DoS است و با شناسه CVE-2026-105756 ردیابی می‌شود. امتیاز شدت آن ۶.۵ است و امکان اجرای کد را فراهم نمی‌کند.

اشتباه اصلی، یعنی تحویل داده دریافت‌ شده از یک سوکت شبکه بدون احراز هویت به pickle، همان مشکلی است که پژوهشگران در نوامبر ۲۰۲۵ در چند Framework دیگر برای Inference هوش مصنوعی پیدا کردند؛ مجموعه‌ای از اسیب‌پذیری‌ها که آن‌ها را ShadowMQ نامیدند. هنوز مشخص نشده است که ایا کد LMCache منبع مشترکی با آن پروژه‌ها دارد یا نه.

منبع: https://thehackernews.com/۲۰۲۶/۱۰/unpatched-critical-lmcache-flaw-lets.html

مقاله قبلیباج‌افزار n۰n : آنچه باید بدانیم

نظر بدهید

لطفا نظر خود را بنویسید
لطفا نام خود را اینجا وارد کنید

این سایت از اکیسمت برای کاهش جفنگ استفاده می‌کند. درباره چگونگی پردازش داده‌های دیدگاه خود بیشتر بدانید.