مرورگر به عنوان یک درب پشتی: استخراج مخفی LLM سمت مشتری از رمزگشایی شده است | B4N1

مرورگر به عنوان یک درب پشتی: استخراج مخفی LLM سمت مشتری از رمزگشایی شده است

1 month ago · b4n1 Read time: 6 min

مرورگر به عنوان یک درپشتی: Client-Side LLM Secret Extraction Unmystified

برای مدت طولانی، ما با "هشدارهای امنیتی هوش مصنوعی" به عنوان تهدیدهای دوردست یا کنجکاوی دانشگاهی برخورد کرده ایم. ما در مورد تزریق سریع، جیلبریک و نشت داده ها با صدای خاموش شنیده ایم که اغلب با بالا انداختن شانه و یک جمله "به آن خواهیم رسید." با این حال، تظاهرات تعاملی اخیر این توهم راحت را در هم شکسته است. این دیگر یک آسیب پذیری نظری نیست. این یک سوء استفاده زنده، مبتنی بر مرورگر، سمت مشتری برای استخراج اطلاعات حساس از مدل های زبان بزرگ (LLM) است [2]. اگر از برنامه‌های مبتنی بر LLM، به‌ویژه هر چیزی که در وب باشد، استفاده می‌کنید، «مشکل آینده» شما به یک مسئولیت بسیار حاضر، بسیار عمومی و بالقوه بسیار شرم‌آور تبدیل شده است.

این یک عنوان کلی دیگر «هوش مصنوعی خطرناک است» نیست. این یک نمایش مشخص و ملموس از این است که چگونه یک بازیگر مخرب، تنها با استفاده از مرورگر خود، می تواند LLM شما را وادار به افشای اطلاعات حساس کند. یک لحظه آن را در نظر بگیرید. این در مورد حملات پیچیده سمت سرور یا درون نگری عمیق مدل نیست. این در مورد لایه تعامل - همان درب ورودی برنامه شما - است که با چند کاراکتر با دقت ساخته شده مورد سوء استفاده قرار می گیرد. این معادل دیجیتالی است که کسی عبارت درستی را برای چت ربات ظاهراً ایمن شما ایجاد می‌کند و با وظیفه‌شناسی داده‌های حیاتی را اغلب ذره ذره تحویل می‌دهد.

توهم امنیت مدل

بسیاری از شرکت‌ها سرمایه‌گذاری زیادی در LLM‌های «ایمن» کرده‌اند، یا مدل‌های اختصاصی را تنظیم می‌کنند یا با تکیه بر APIهای درجه یک سازمانی با نرده‌های محافظ فرضی. فرض ضمنی این است که اگر خود مدل قوی باشد، برنامه‌ای که در بالای آن ساخته شده است، این امنیت را به ارث می‌برد. تظاهرات اخیر این را به عنوان یک تصور غلط خطرناک آشکار می کند. این آسیب‌پذیری در هوش اصلی مدل یا داده‌های آموزشی آن نیست. این در *رابط**ی است که پیرامون آن می سازیم [1]. این مشکل کلاسیک "طاق مقاوم، درب جلوی سست" است. شما ممکن است پیشرفته‌ترین و سخت‌شده‌ترین LLM را در جهان داشته باشید، اما اگر تجزیه‌کننده ورودی برنامه‌تان ساده‌لوح باشد، یا فیلتر خروجی‌تان وجود نداشته باشد، اساساً اطلاعات حیاتی را در معرض دید هر کسی قرار می‌دهید.

این تکنیک "تزریق فوری" به ویژه نگران کننده است زیرا از ماهیت ذاتی LLM استفاده می کند: توانایی آن در پیروی از دستورالعمل ها و الگوهای کامل. با تزریق یک پیشوند با دقت ساخته شده در ورودی کاربر، مهاجم می تواند وضعیت داخلی مدل را دستکاری کند و آن را مجبور کند اطلاعاتی را که هرگز قصد نداشت نشان دهد [3]. جنبه "یک بیتی" یا تکراری در اینجا بسیار مهم است. این حاکی از یک برداشت روشمند و کنترل شده است، نه صرفاً یک زباله آشفته داده. تصور کنید مهاجمی به طور مکرر بپرسد: "آیا شخصیت اول مخفی "A" است؟ سپس "آیا "B" است؟ و غیره بله، کند است، اما اگر به طور خاص به دنبال آن نباشید، تشخیص آن نیز بسیار موثر و دشوار است.

مرورگر شما، سلاح آنها

این واقعیت که این یک اکسپلویت مبتنی بر مرورگر است، بازی را کاملاً تغییر می دهد. یعنی:

  • موانع کم برای ورود: هر کسی که مهارت های اولیه توسعه وب و یک مرورگر داشته باشد می تواند این کار را انجام دهد. هیچ ابزار تخصصی یا دانش عمیق هوش مصنوعی مورد نیاز نیست.
  • اجرای سمت سرویس گیرنده: حمله از ماشین کاربر سرچشمه می گیرد و تشخیص آن را از ورودی قانونی کاربر در لبه شبکه سخت تر می کند.
  • تهدید فوری: اگر برنامه LLM شما زنده و از طریق یک رابط وب قابل دسترسی است، از قبل در برابر این بردار آسیب پذیر است. این یک پچ آینده نیست. این یک وضعیت اضطراری فعلی است.

پیامدها را در نظر بگیرید: تکه کدهای اختصاصی، اسناد داخلی، داده های مشتری، کلیدهای API، یا حتی دستکاری ظریف رفتار LLM شما برای انتشار اطلاعات نادرست یا تولید محتوای مضر. همه اینها را می توان از طریق یک جعبه متن ساده استخراج کرد یا تحت تأثیر قرار داد.

مسئولیت با شماست

این مشکلی برای ارائه دهندگان مدل مانند OpenAI یا Google نیست که در به روز رسانی مدل بعدی خود برطرف کنند. این یک مشکل امنیت برنامه است و مسئولیت کاهش مستقیماً بر دوش توسعه دهندگان، تیم های امنیتی و CTOهایی است که این سیستم ها را مستقر می کنند. LLM شما یک موتور قدرتمند، اما در نهایت ساده لوحانه است. حتی اگر این دستورالعمل‌ها در ورودی ظاهراً بی‌ضرر کاربر پنهان شده باشند، آنچه را که گفته می‌شود، انجام می‌دهد.

خب، الان چه میکنی؟

اقدامات متقابل فوری:

  1. ** ضد عفونی کردن ورودی تهاجمی: ** این فراتر از جلوگیری از تزریق SQL یا XSS است. شما باید هر کاراکتری را که وارد LLM خود می شود بررسی کنید. به دنبال الگوهایی باشید که نشان‌دهنده تزریق سریع، توالی شخصیت‌های غیرمعمول، یا تلاش برای خروج از جریان‌های محاوره‌ای مورد انتظار است [4]. این در مورد مسدود کردن "کلمات بد" نیست. این در مورد شناسایی درخواست های متخاصم است. فراتر از تحلیل اصلی و اکتشافی، تجزیه و تحلیل معنایی را برای شناسایی اهداف مخرب پیاده سازی کنید. برای شناسایی الگوهای ورودی غیرعادی از توکنیزاسیون و تجزیه و تحلیل جاسازی استفاده کنید. استفاده از یک LLM ثانویه کوچکتر یا یک سیستم مبتنی بر قانون که به طور خاص برای تشخیص تلاش های تزریق سریع آموزش دیده است را در نظر بگیرید. به دنبال الگوهایی مانند دستورالعمل های ایفای نقش، درخواست های صریح استخراج داده یا تلاش برای دور زدن دستورالعمل های قبلی باشید.
  2. فیلترسازی و اعتبارسنجی خروجی قوی: هرگز به طور ضمنی به خروجی LLM اعتماد نکنید. قبل از اینکه هر متن تولید شده توسط LLM به کاربر نمایش داده شود یا توسط سیستم دیگری استفاده شود، باید از یک لایه اعتبارسنجی دقیق عبور کند. آیا حاوی کلمات کلیدی حساس است؟ آیا با فرمت های مورد انتظار مطابقت دارد؟ آیا سعی می کند کد را اجرا کند یا پیام های داخلی سیستم را آشکار کند؟ اگر LLM شما قرار است یک سند را خلاصه کند، اما شروع به لیست کردن مسیرهای فایل می کند، مشکل دارید.
  3. مهندسی سریع لایه ای: اگرچه راه حل کاملی نیست، اعلان های سیستمی به خوبی طراحی شده و نمونه های چند شات می تواند به تقویت رفتار مورد نظر کمک کند و ربودن مدل را برای مهاجم دشوارتر کند. با این حال، درک کنید که مهندسی سریع به تنهایی کافی نیست. این یک دفاع در عمق است، نه یک سپر اولیه.
  4. حداقل امتیاز برای تعاملات LLM: آیا LLM شما واقعاً نیاز به دسترسی به تمام داده هایی دارد که ممکن است به طور بالقوه از آنها خواسته شود فاش شوند؟ اجرای کنترل های دسترسی دقیق اگر قرار است LLM فقط به سؤالات مربوط به اسناد عمومی پاسخ دهد، اطمینان حاصل کنید که دسترسی برنامه‌ای به پایگاه‌های داده داخلی یا APIهای حساس ندارد.
  5. ** نظارت و تشخیص ناهنجاری: ** شما باید فعالانه به دنبال رفتار غیرعادی LLM باشید. افزایش در انواع خاصی از پرس و جوها، خروجی هایی که از الگوهای عادی منحرف می شوند، یا تلاش های مکرر برای استخراج اطلاعات باید هشدارهای فوری را ایجاد کنند.

این دیگر در مورد "امنیت هوش مصنوعی" گسترده نیست. این در مورد ایمن سازی لایه تعامل برنامه های LLM شما در برابر یک بردار حمله خاص، نشان داده شده و بلافاصله قابل بهره برداری است. ما در حال ساختن این سیستم‌های باورنکردنی و قدرتمند بوده‌ایم که اغلب با تدابیر امنیتی ناکافی در رابط کار می‌کنند. تظاهرات اخیر دقیقاً به ما نشان داده است که بهره برداری از این شکاف ها چقدر آسان است. زمان بحث های نظری گذشته است. برای ایمن سازی برنامه های LLM، اقدام فوری لازم است.

منابع

[1] 10 برنامه برتر OWASP برای کاربردهای مدل زبان بزرگ — https://owasp.org/www-project-top-10-for-large-language-model-applications/ [2] Lakera Gandalf: An Interactive Prompt Injection Challenge — https://gandalf.lakera.ai/ [3] حملات تزریق سریع | آکادمی امنیت وب — https://portswigger.net/web-security/llm-attacks/prompt-injection [4] تزریق سریع چیست و چگونه از آن جلوگیری کنیم؟ — https://www.tenable.com/blog/what-is-prompt-injection-and-how-to-prevent-it


Have Questions?

Let's Talk

Contact me on LinkedIn