۵ آبان ۱۴۰۵ blog.cloudflare.com ۳ دقیقه مطالعه

افشای کش حافظه در مدل GLM-5.3 پلتفرم Workers AI و جزئیات فنی آن

افشای کش حافظه در مدل GLM-5.3 پلتفرم Workers AI و جزئیات فنی آن — Cross-request KV cache exposure in the GLM-5.3 Workers AI model (155 responses)

خلاصه

کلودفلر گزارشی از یک آسیب‌پذیری جداسازی تننت در مدل GLM-5.3 منتشر کرد که به خاطر ناسازگاری اندازه کش حافظه و باگ در موتور استنتاج SGLang رخ داده بود. این مشکل باعث شد تعداد محدودی از درخواست‌های با متن بسیار طولانی، پاسخ‌هایی حاوی داده‌های کاربران دیگر دریافت کنند.

مقدمه و زمینه

اخیراً گزارشی از سوی یک پژوهشگر امنیت درباره یک مسئله جداسازی تننت (Tenant Isolation) در مدل هوش مصنوعی GLM-5.3 روی سرویس Workers AI کلودفلر منتشر شد. این مشکل باعث شده بود که میان اواخر مرداد و شهریور، تعداد محدودی از درخواست‌های ارسالی به این مدل، داده‌های مربوط به درخواست‌های پیشین دیگران را دریافت کنند. کلودفلر پس از دریافت گزارش، مدل را موقتاً از دسترس خارج کرد، ریشه مشکل را یافت و با همکاری تیم توسعه‌دهنده موتور استنتاج SGLang آن را برطرف نمود.

معماری سرویس و نحوه بروز مشکل

پلتفرم Workers AI مدل GLM-5.3 را با استفاده از موتور استنتاج متن‌باز SGLang و به صورت تفکیک‌شده (Disaggregated) اجرا می‌کند. در این معماری، گره‌های پیش‌پُرادرز (Prefill GPUs) پرامپت را پردازش کرده و کش کلید-مقدار (KV Cache) را تولید می‌کنند. سپس این کش از طریق RDMA به گره‌های رمزگشایی (Decode GPUs) منتقل می‌شود تا پاسخ نهایی تولید گردد.

حافظه کش KV روی GPU به صورت بلوک‌های با اندازه ثابت مدیریت می‌شود که بین درخواست‌ها به اشتراک گذاشته می‌شوند. برای بهبود کارایی، این حافظه میان درخواست‌ها صفر (Zeroed) نمی‌شود، بلکه درخواست جدید به سادگی روی صفحات حافظه قبلی نوشته می‌شود. بنابراین، موتور استنتاج مسئولیت سنگینی در ردیابی مالکیت و چرخه عمر صفحات حافظه بر عهده دارد.

جزئیات فنی ریشه مشکل

این حادثه نتیجه تداخل دو مسئله کلیدی بود:

  • مغایرت در تنظیمات (Misconfiguration): مدل GLM-5.3 با طول زمینه (Context Window) یک میلیون توکن پیکربندی شده بود، در حالی که استخر کش KV روی کارت‌های گرافیک پیش‌پُرادرز تنها برای حدود ۶۸۱ هزار توکن فضا داشت. تیم مهندسی از این اختلاف مطلع بود، اما از آنجا که تست‌های اولیه کدهای وضعیت HTTP موفق بازمی‌گرداندند، تصور بر این بود که موتور به شکل مناسبی از پس پرامپت‌های طولانی برمی‌آید بدون اینکه خروجی‌ها بررسی ژرف‌تری شوند.
  • باگ در موتور SGLang: هنگامی که پرامپتی فراتر از ظرفیت استخر کش دریافت می‌شد، برنامه‌ریز SGLang آن را رد می‌کرد اما درخواست را با یک توکن جایگزین پردازش می‌نمود. در حالت تفکیک‌شده، صف پذیرش گره رمزگشایی متوجه رد شدن درخواست نمی شد و به جای پاکسازی، به خواندن صفحات حافظه قدیمی و باقی‌مانده از کاربران قبلی ادامه می‌داد.

اصلاحات و رفع آسیب‌پذیری

کلودفلر پس از شناسایی مشکل اقدامات زیر را انجام داد:

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

دیدگاه جامعه مهندسی (Hacker News)

در بحث‌های صورت گرفته در هکرنیوز، کاربران ضمن تمجید از شفافیت کلودفلر در انتشار گزارش تحلیل ریشه (RCA) و پذیرش مسئولیت، به این نکته اشاره کردند که سرعت عمل در از دسترس خارج کردن مدل آسیب‌پذیر و ارائه سریع اصلاحات بسیار حائز اهمیت است. برخی مهندسان نیز اظهار داشتند که این‌گونه مشکلات ممکن است توضیح‌دهنده برخی پاسخ‌های نامربوطی باشد که پیش‌تر در API سایر ارائه‌دهندگان مشاهده کرده بودند.

این مطلب به‌صورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل

این خبر را با دیگران به اشتراک بگذارید

خبرهای فناوری در قالب پست و ویدیوی کوتاه، در اینستاگرام هکرنیوز بلاگ. به‌زودی
هر خبر به محض انتشار، به‌همراه پادکست روزانه در کانال تلگرام هکرنیوز بلاگ.