یک آسیبپذیری بحرانی در LMCache شناسایی شده است که به مهاجمان بدون احراز هویت (unauthenticated) اجازه میدهد از طریق بهرهبرداری از فرآیند ناامن واجسازی (deserialization) در پایتون (Python pickle)، کدهای دلخواه را روی استقرارهای چندپردازشی (multi-process deployments) اجرا کنند.
جزئیات فنی و شناسه آسیبپذیری
این نقص امنیتی با شناسه CVE-2026-105192 ردیابی میشود و امتیاز CVSS 9.8 را دریافت کرده است. تیم تحقیقات امنیتی JFrog این آسیبپذیری را کشف کرده و در تاریخ ۷ اکتبر ۲۰۲۶، یک اکسپلویت اثبات مفهوم (PoC) عمومی را منتشر کرد. طبق گزارش این تیم، تا تاریخ انتشار، هیچ نسخه اصلاحشدهای (patch) برای رفع این مشکل ارائه نشده است.
این مشکل در نسخههای 0.3.9 تا 0.5.5 و همچنین تمامی نسخههای کاندید (RC) تا 0.5.6rc3 و شاخه توسعه (development branch) مشاهده شده است.
مکانیسم حمله
حالت چندپردازشی LMCache (که به عنوان distributed mode نیز شناخته میشود)، یک سوکت ZeroMQ ROUTER باز میکند تا فرآیندهای Worker بتوانند ثبتنام کرده و بلوکهای حافظه نهان (cache blocks) کلید-مقدار را به اشتراک بگذارند. این پروتوان انتقال (transport) فاقد هرگونه مکانیزم احراز هویت (مانند CURVE، ZAP یا رمز عبور) است و در نتیجه در برابر پیامهای غیرقابل اعتماد آسیبپذیر است.
به طور پیشفرض، این ارتباط روی localhost فعال است؛ اما اگر اپراتورها از گزینه –host برای فعالسازی ارتباط بین نودها (nodes) استفاده کنند، سیستم در شبکه قابل دسترسی شده و در معرض حمله قرار میگیرد.
تحلیل عمیقتر (Deep Dive)
پیامهای ورودی از MessagePack استفاده میکنند. در هنگام رمزگشایی، دادههای جاسازی شده به تابع DeviceIPCWrapper.Deserialize ارسال میشوند که در نهایت تابع pickle.loads را فراخوانی میکند. اینجاست که اشیاء سریالشده توسط مهاجم باعث اجرای کد (code execution) میشوند.
نکته حائز اهمیت این است که این عملیات واجسازی در هنگام پردازش آرگومانهای REGISTER_KV_CACHE و پیش از اجرای Request Handler رخ میدهد؛ بنابراین، هیچگونه بررسی یا خطای هندلری نمیتواند مانع از اجرای کدی شود که پیش از آن در مرحله رمزگشایی فعال شده است.
اثبات مفهوم (PoC) و تاثیرات
در دمو منتشر شده توسط JFrog، یک پیام دستکاری شده از طریق سوکت ZeroMQ DEALER به پورت پیشفرض 5555 ارسال میشود. این Payload شامل یک شیء malicious pickle است که دستورات سیستمعامل را اجرا میکند. در آزمایشها، دستور id با موفقیت اجرا شد و خروجی آن در مسیر /tmp/zmq_pwn ذخیره گردید. از آنجایی که ایمیجهای رسمی کانتینر، این فرآیند را با دسترسی root اجرا میکنند، مهاجم در داخل کانتینر دسترسی کامل root خواهد داشت.
توصیههای امنیتی و کاهش ریسک
با توجه به نبود وصله رسمی، توصیههای زیر برای مدیران SOC و مهندسین امنیت پیشنهاد میشود:
- جایگزینی فرمت سریالسازی: جایگزینی pickle با فرمتهای امنتر برای انتقال داده در شبکه.
- احراز هویت ZeroMQ: پیادهسازی متدهای احراز هویت مانند CURVE یا تاییدیه HMAC برای هر پیام.
- محدود کردن دسترسی شبکه: اجتناب از استفاده از تنظیمات routable در
–hostو محدود کردن دسترسی به کلاستر از طریق قوانین فایروال (Firewall rules). - استفاده از localhost: تا حد امکان از binding روی localhost استفاده کنید تا سطح حمله (attack surface) کاهش یابد.