در سال ۱۹۸۸، مفهومی به نام Confused Deputy (نایب سردرگم) معرفی شد؛ سناریویی که در آن برنامهای با دسترسیهای مشروع، توسط بازیگری با سطح دسترسی پایینتر فریب میخورد تا از اختیارات خود به نفع مهاجم استفاده کند. امروز، با ظهور ایجنتهای هوش مصنوعی (AI Agents)، این آسیبپذیری قدیمی با ابعادی بسیار گستردهتر بازگشته است.
ماهیت مشکل Confused Deputy
این مسئله زمانی رخ میدهد که یک «نایب» (اپلیکیشن یا سرویسی که وظیفهای را اجرا میکند) دارای مجوزهایی است که فراخواننده (Caller) آن ندارد. اگر مهاجم بتواند نایب را متقاعد کند که از این مجوزها برای اهداف مخرب استفاده کند، در واقع یک حمله Privilege Escalation (ارتقای سطح دسترسی) رخ داده است.
مثالهای کلاسیک در دنیای مدرن
- CSRF: در اینجا مرورگر نقش نایب را دارد. یک صفحه مخرب، مرورگر را فریب میدهد تا درخواستی را به بانک ارسال کند. سرور بانک به دلیل وجود Session Cookie معتبر، درخواست را میپذیرد، در حالی که خودِ صفحه مخرب هیچ دسترسی به حساب کاربر ندارد.
- SSRF: سرویسهایی مانند PDF Renderer یا Image Proxy به عنوان نایب عمل میکنند. مهاجم با ارسال یک URL داخلی، سرویس را مجبور میکند تا دادههای حساس شبکه داخلی را که برای کاربر غیرقابل دسترس است، واکشی کرده و بازگرداند.
چرا ایجنتهای AI هدف ایدهآلی هستند؟
ایجنتهای هوش مصنوعی ذاتاً برای ایفای نقش نایب طراحی شدهاند؛ آنها به تقویم، مخازن GitHub یا سیستمهای پرداخت دسترسی دارند تا کارهای کاربر را انجام دهند. اما تفاوت خطرناک آنها با سیستمهای قدیمی در نحوه دریافت دستورات است.
یک ایجنت، دستورات کاربر، محتوای وبسایتها و پیامهای دیگران را همگی از طریق یک کانال واحد یعنی Natural Language (زبان طبیعی) دریافت میکند. مدلهای زبانی راهی برای تفکیک «دستورات قابل اعتماد» از «محتوای غیرقابل اعتماد» ندارند. بنابراین، یک جمله مخرب در عنوان یک Issue در GitHub میتواند برای مدل، همان وزن دستور مستقیم کاربر را داشته باشد.
تحلیل یک حمله واقعی: Clinejection
در یک مورد واقعی، یک بات مدیریت Issue در GitHub که دسترسی Shell داشت، فریب یک عنوان دستکاری شده در یک Issue شد. این حمله که Clinejection نامیده شد، منجر به زنجیرهای از اتفاقات شد: تزریق دادههای مخرب به GitHub Actions Cache و در نهایت سرقت توکن انتشار npm. این اتفاق ثابت کرد که مشکل نه در مدل زبانی، بلکه در عدم تفکیک داده از دستور و اعطای دسترسیهای بیش از حد (Over-authorization) است.
راهکارهای مقابله و استراتژیهای دفاعی
برای کاهش سطح حمله (Attack Surface) در ایجنتهای AI، باید از اصول زیر استفاده کرد:
- Task-scoped Credentials: به جای اعطای OAuth Scopeهای دائمی و گسترده، از مجوزهای کوتاهمدت و محدود به هر تسک استفاده کنید.
- Capability-scoped Permissions: به جای دسترسیهای کلی مانند
billing:write، دسترسیها را به عملیاتهای خاص (مثلاً «بازپرداخت زیر ۵۰ دلار») محدود کنید. - Separation of Concerns: توکنها و Credentials نباید در System Prompt یا Schema ابزارها باشند تا توسط Prompt Injection استخراج نشوند. مدل باید فقط تصمیم بگیرد «چه ابزاری» اجرا شود و یک لایه کد مجزا و Deterministic باید عملیات را با توکن مربوطه اجرا کند.
- Human-in-the-loop: برای عملیاتهای حساس و برگشتناپذیر، تاییدیه انسانی (Out-of-band confirmation) الزامی باشد.