یک آسیب پذیری بحرانی با شناسه CVE-2024-50050 در فریمورک Llama متا شناسایی شده است، که یک ابزار منبع باز پرکاربرد برای ساخت و استقرار برنامههای هوش مصنوعی مولد (GenAI) میباشد.
این آسیب پذیری که به دلیل deserialization یا عدم دنباله سازی ناامن آبجکتهای پایتون از طریق ماژول pickle به وجود آمده است، به مهاجمان از راه دور این امکان را میدهد تا کد دلخواه را بر روی سرورهای آسیب پذیر llama-stack اجرا کنند.
سرور llama-stack به مجموعهای از فناوریها و ابزارهایی اشاره دارد که برای استقرار، پردازش و اجرای مدلهای زبان بزرگ مانند Llama ساخته شدهاند. این سرور معمولاً شامل اجزای مختلفی است که به طور هماهنگ عمل میکنند تا مدلهای پیچیده را برای پردازش زبان طبیعی اجرا کنند. سرور llama-stack به طور خاص، به عنوان محیطی برای پردازش درخواستها، اعمال مدلهای یادگیری عمیق و تولید پیشبینیها و پاسخها در کاربردهای هوش مصنوعی استفاده میشود.
آسیب پذیریهایی ممکن است در چنین سرورهایی وجود داشته باشند که به مهاجمان امکان میدهند تا کد مورد نظر خود را از راه دور اجرا کنند. این آسیب پذیری بر چالشهای مداوم در تأمین امنیت فریمورکهای هوش مصنوعی در کنار پذیرش سریع آنها تأکید میکند.
آسیب پذیری CVE-2024-50050 دارای امتیاز CVSS:6.3 است. از سوی دیگر، شرکت امنیت زنجیره تأمینSnyk ، رتبه بحرانی ۹.۳ را به آن اختصاص داده است چرا که بر محرمانگی، یکپارچگی و دسترس پذیری تاثیر میگذارد!
آسیب پذیری CVE-2024-50050 مربوط به فریمورک Llama متا میباشد که در آن از فرمت سریالسازی pickle برای ارتباطات سوکت استفاده میشود. این روش میتواند سیستمها را در معرض خطر اجرای کد از راه دور قرار دهد. این آسیب پذیری در نسخههای پیش از 0.0.41، میتواند به مهاجمان اجازه دهد تا با ارسال دادههای مخرب، کد دلخواهی را بر روی سرور Llama اجرا کنند. متا این مشکل را با تغییر فرمت سریالسازی به JSON در نسخه 0.0.41 برطرف کرده است.
به گفته آوی لوملسکی، محقق شرکت امنیتی Oligo Security، نسخههای آسیب پذیر meta-llama در برابر deserialize کردن یا عدم دنباله سازی دادههای غیرقابل اطمینان آسیب پذیر میباشند، به این معنا که یک مهاجم میتواند با ارسال دادههای مخرب که deserialize میشوند، کد دلخواهی را اجرا کند.
این آسیب پذیری در کامپوننتی به نام Llama Stack وجود دارد که مجموعهای از اینترفیسهای API را برای توسعه برنامههای کاربردی هوش مصنوعی (AI) تعریف میکند، از جمله استفاده از مدلهای Llama خود متا.
این مشکل به یک آسیب پذیری اجرای کد از راه دور در پیادهسازی مرجع Python Inference API مربوط میشود که به طور خودکار آبجکتهای پایتون را با استفاده از فرمت pickle، غیردنباله سازی یا deserialize میکند.
فرمت pickle، یک فرمت دنباله سازی (serialization) در زبان برنامهنویسی پایتون است که برای تبدیل آبجکتهای پایتون به یک فرمت قابل ذخیرهسازی یا انتقال استفاده میشود. با استفاده از pickle، میتوان دادهها یا آبجکتهای پایتون را به صورت باینری ذخیره کرد و سپس آنها را در زمانی دیگر بارگذاری یا بازیابی نمود. این فرایند به طور ذاتی ناامن است. مهاجمان میتوانند از این آسیب پذیری با ارسال آبجکتهای دنباله سازی شده مخرب از طریق سوکتهای ZeroMQ سوءاستفاده کنند و باعث اجرای کد دلخواه بر روی ماشین میزبان شوند.
این آسیب پذیری پس از افشای مسئولانه در تاریخ ۲۴ سپتامبر ۲۰۲۴، توسط متا در تاریخ ۱۰ اکتبر در نسخه 0.0.41 برطرف شد. همچنین این مشکل در کتابخانه پایتونی pyzmq که دسترسی به کتابخانه پیامرسان ZeroMQ را فراهم میکند، برطرف شده است.
شرکت متا طی هشداری اعلام کرد که خطر اجرای کد از راه دور مرتبط با استفاده از pickle به عنوان فرمت دنباله سازی برای ارتباطات سوکت را با تغییر به فرمت JSON برطرف کرده است.
این اولین بار نیست که آسیب پذیریهای مرتبط با deserialize در فریمورکهای هوش مصنوعی کشف میشوند. Oligo در آگوست ۲۰۲۴، آسیب پذیری “shadow” در فریمورک Keras متعلق به TensorFlow را تشریح کرد، که یک دور زدن برای CVE-2024-3660 (امتیاز CVSS: ۹.۸) بود که میتوانست به دلیل استفاده از ماژول marshal ناامن به اجرای کد دلخواه منجر شود.
بطور کلی، Llama Stack متعلق به متا یک فریمورک قدرتمند است که به دلیل تطبیقپذیری و ادغام با مدلهای پیشرفته هوش مصنوعی مانند Llama 3.1 و Llama 3.2 در میان توسعهدهندگان مورد توجه قرار گرفته است.
سازمانهایی که از Llama Stack استفاده میکنند باید اولویت خود را بر اعمال فوری پچ قرار دهند و محیطهای استقرار خود را برای یافتن سایر آسیب پذیریهای بالقوه بررسی کنند. درک خانوادههای مدلهای مورد استفاده در سازمان شما آگاهی کلی شما از زیرساخت هوش مصنوعی را افزایش میدهد و این امکان را فراهم میآورد تا مدیریت بهتری از وضعیت امنیتی خود داشته باشید.
برای کاهش این خطرات، باید به طور مداوم فریمورکها و سیستمها، بهروزرسانی و پچ شوند و امنیت کدهای منبع به دقت مورد بررسی قرار گیرند. علاوه بر این، پیادهسازی روشهای امنیتی مانند ایزولهسازی منابع و نظارت مداوم نیز بهعنوان تدابیر پیشگیرانه میتواند مفید باشد.