مثلث مرگبار: وقتی کوپایلت سازمانی ابزار سرقت داده میشه
خلاصهٔ کاملتر
نویسندهی این پست میگه حادثههای تخریبی ایجنتها تیتر میشن چون دیتابیس پاکشده سروصدا داره، ولی دستهی خطرناک بیصداست: کوپایلتی که داره اسناد داخلی رو برای مهاجم میفرسته، از داخل شبیه یه کوپایلت سالمه. چارچوبی که همهشون رو کنار هم میذاره «مثلث مرگبار» سایمون ویلیسونه: هر سیستم LLM که همزمان دادهی خصوصی میبینه، محتوای غیرقابلاعتماد میخونه و راهی به بیرون داره، بالاخره نشت میکنه. علتش اینه که مدل دستور و داده رو از یه کانال میخونه؛ یه تیکت پشتیبانی هم براش یه دستور بالقوهست.
نمونهی اول EchoLeak هست (CVE-2025-32711 با امتیاز CVSS برابر ۹.۳) که Aim Labs تو ژوئن ۲۰۲۵ افشا کرد و اصلاً به هیچ کلیکی از طرف کاربر نیاز نداشت. مهاجم فقط یه ایمیل دستکاریشده میفرسته. بعداً کاربر یه سؤال کاملاً بیربط از Microsoft 365 Copilot میپرسه، پایپلاین retrieval (یعنی همون بخشی که اسناد مرتبط رو میکشه تو کانتکست مدل) اون ایمیل رو میاره و دستور پنهانش اجرا میشه. بعدش Copilot سراغ محتوای OneDrive و SharePoint و Teams میره و میفرستتشون بیرون.
چیزی که EchoLeak رو آموزنده میکنه تعداد دفاعهای منطقیایه که ازشون رد شد: از دستهبند تزریق خود مایکروسافت گذشت، حذف لینک رو با مارکداون مرجعدار دور زد، درخواست خروجی رو از راه تصویری که کلاینت خودکار میگیره فعال کرد و داده رو از مسیر یه پروکسی Teams فرستاد که CSP از قبل بهش اعتماد داشت. Aim اسم این الگو رو «نقض دامنهی LLM» گذاشت. جمعبندی مقالهی علمیش اینه که جواب معماریه نه فیلتر بهتر: کمترین دسترسی، محدودکردن داده قبل از رسیدن به مدل، و تست خصمانهی بیوقفه.
ForcedLeak از Noma Security (امتیاز ۹.۴) همین درس رو با قیمت پنج دلار میده. مهاجم تو فرم عمومی Web-to-Lead سرویس Salesforce Agentforce یه دستور پنهان تو فیلد Description میذاره که تا ۴۲ هزار کاراکتر جا داره. بعد یه کاربر داخلی از ایجنت میخواد لیدها رو پردازش کنه و دادهی CRM بیرون میره. مقصد خروج دامنهای بود که هنوز تو لیست مقصدهای مورد اعتماد Salesforce مونده ولی منقضی شده بود و محققها با پنج دلار خریدنش. به گفتهی نویسنده، allowlist فقط میبینه درخواست کجا میره، نه اینکه باید بره یا نه.
تو ابزار توسعه هم دو مورد از راه MCP (پروتکلی که ابزارها رو به مدل وصل میکنه) همین شکله. تو Supabase، کانکتوری که با کلید service_role وصل شده row-level security یعنی قانون دسترسی در سطح هر ردیف رو دور میزنه؛ ایجنتی که تیکتها رو میخونه، تیکت مسموم مهاجم رو هم مثل دستور اجرا میکنه. تو GitHub MCP هم یه ایشوی مسموم تو مخزن عمومی باعث میشه ایجنت محتوای مخزن خصوصی رو تو یه pull request عمومی بریزه. Supabase حالت فقطخواندنی اضافه کرد، ولی به گفتهی ویلیسون این فقط یه پای مثلث رو میبره.
نکات کلیدی:
- مثلث مرگبار یعنی هر سه با هم: دادهی خصوصی، محتوای غیرقابلاعتماد و راه خروج
- EchoLeak (CVE-2025-32711، امتیاز ۹.۳) بدون هیچ کلیکی روی Microsoft 365 Copilot کار کرد
- ForcedLeak (امتیاز ۹.۴) از راه یه دامنهی منقضی پنجدلاری تو allowlist دادهی CRM رو برد
- فیلد Description فرم Web-to-Lead تا ۴۲ هزار کاراکتر جا برای دستور پنهان داره
- قانون Rule of Two متا: بدون آدم تو حلقه، ایجنت حداکثر دو تا از سه پا رو داشته باشه
- حالت فقطخواندنی Supabase نشت از راه پاسخ خود مدل رو نمیبنده




