یک آسیبپذیری از نوع Buffer Overflow (CWE-119) در نرمافزار llama.cpp، بهویژه در بخش ابزارهای چندوجهی (multimodal tooling)، شناسایی شده است. این نقص که تحت شناسه CVE-2026-116096 ثبت شده، به مهاجم اجازه میدهد تا از طریق بارگذاری یک فایل mmproj (multimodal projector) دستکاریشده، عملیات نوشتن خارج از محدوده در حافظه (Heap OOB Write) را انجام دهد.
جزئیات فنی و نحوه عملکرد
این آسیبپذیری در مسیر تولید صوت Pocket-TTS و از طریق تابع list_pockettts_state_slots رخ میدهد. مشکل زمانی بروز میکند که فرآیند قربانی، یک فایل mmproj غیرقابل اعتماد را هنگام استفاده از ویژگی Pocket-TTS بارگذاری میکند. از آنجایی که چیدمان حافظه (slot layout) بر اساس پارامترهای هایپرپارامتری موجود در فایل mmproj تعیین میشود، یک فایل مخرب میتواند چیدمانی را تعریف کند که با بافر اختصاصیافته مطابقت ندارد و منجر به سرریز شدن دادهها شود.
سطح خطر و شرایط حمله
بر اساس امتیاز CVSS 4.0، این آسیبپذیری دارای امتیاز بسیار پایین 1.9 است. شرایط اصلی برای بهرهبرداری عبارتند از:
- دسترسی محلی (Local Access): مهاجم باید دسترسی محلی با سطح دسترسی پایین (Low Privilege) به سیستم داشته باشد.
- تعامل کاربر: کاربر باید بهطور فعال یک فایل مدل (mmproj) غیرقابل اعتماد را در محیط llama.cpp بارگذاری کند.
- عدم وجود بردار شبکه: این یک حمله از راه دور (Remote) نیست.
لازم به ذکر است که در نسخههای جدیدتر (مانند b11871 و نسخه master)، این نقص دیگر منجر به یک نوشتن بیصدا در حافظه نمیشود، بلکه باعث فعال شدن یک GGML_ASSERT و متوقف شدن (Abort) برنامه میگردد. این تغییر، اثر حمله را از فساد حافظه به سمت یک حمله از نوع Denial of Service (DoS) سوق میدهد.
اقدامات اصلاحی و پیشنهادات
برای مقابله با این تهدید، اقدامات زیر توصیه میشود:
- بهروزرسانی نرمافزار: نسخه llama.cpp را به build b11796 یا نسخههای بالاتر ارتقا دهید.
- کنترل منابع: تنها از فایلهای mmproj که از منابع معتبر و دارای بررسی سلامت (Integrity Check) تهیه شدهاند، استفاده کنید.
- محدودسازی دسترسی: دسترسیهای محلی (Local Shell Access) به میزبانهایی که از llama.cpp استفاده میکنند را محدود کنید.