یک آسیبپذیری از نوع Out-of-bounds Read (CWE-125) در لایه MatMul کتابخانه ncnn تنسنت (Tencent ncnn) شناسایی شده است. این نقص امنیتی در تابع matmul_transb واقع در فایل src/layer/matmul.cpp وجود دارد و میتواند منجر به نشت اطلاعات از حافظه (Memory Disclosure) یا از کار افتادن سرویس (Denial of Service) شود.
جزئیات فنی و نحوه بهرهبرداری
این آسیبپذیری زمانی رخ میدهد که یک مدل هوش مصنوعی دستکاری شده (Crafted Model) حاوی پارامترهای ابعاد (Dimension Parameters) غیرمجاز، در لایه MatMul بارگذاری شود. این پارامترهای نامعتبر باعث میشوند عملیات ضرب ماتریس از محدوده بافر تخصیصیافته فراتر رود. نکته مهم این است که این یک حمله مستقیم شبکه (Network-based attack) نیست؛ بلکه بهرهبرداری از آن مستلزم تعامل کاربر (User Interaction) است، به این معنا که اپلیکیشن هدف باید یک مدل یا ورودی مخرب را که توسط مهاجم ارائه شده، بارگذاری و اجرا کند.
در حال حاضر، یک کد اثبات مفهوم (Proof-of-Concept یا PoC) به صورت عمومی در دسترس است، اما شواهدی مبنی بر بهرهبرداری گسترده یا هدفمند در محیطهای واقعی (In-the-wild) وجود ندارد. برخلاف برخی گزارشها، این نقص منجر به اجرای کد از راه دور (RCE) نمیشود و اثرات آن عمدتاً محدود به خواندن دادههای حساس از حافظه یا کرش کردن فرآیند (Process Crash) است.
اقدامات پیشنهادی و مقابله
از آنجایی که در زمان انتشار این گزارش، وصله (Patch) رسمی از سوی سازنده ارائه نشده است، توصیه میشود اقدامات زیر انجام شود:
- اجتناب از بارگذاری مدلهای ناشناس: هرگز مدلهای هوش مصنوعی که از منابع نامعتبر یا شخص ثالث (Third-party) دریافت شدهاند را در محیطهای حساس اجرا نکنید.
- استفاده از Sandbox: فرآیند استنتاج (Inference) و تبدیل مدلها را در محیطهای ایزوله مانند کانتینرها (Containers) با دسترسیهای محدود (Least Privilege) اجرا کنید.
- کنترل ورودیها: از مکانیزمهای Allowlisting برای تأیید اصالت و سلامت مدلهای مورد استفاده بهره ببرید.
- مانیتورینگ: فعالیتهای غیرعادی در دسترسی به حافظه یا کرشهای ناگهانی در اپلیکیشنهای مبتنی بر ncnn را پایش کنید.