آخرین اخبار
همهٔ اخبار
امنیت وب و نرم‌افزار گزارش بحرانیت ۶/۱۰

آسیب‌پذیری بحرانی در MCP Python SDK؛ امکان سرقت حساب‌های AI Agent از طریق OAuth

آسیب‌پذیری بحرانی در MCP Python SDK؛ امکان سرقت حساب‌های AI Agent از طریق OAuth

یک نقص امنیتی با شدت بالا در SDK پایتونِ پروتکل مدل کانتکست (Model Context Protocol یا MCP) شناسایی شده است که به سرورهای مخرب اجازه می‌دهد متریال‌های احرازی OAuth را سرقت کرده و کنترل حساب‌های AI Agent را در دست بگیرند.

تحلیل فنی مکانیزم حمله

این مشکل نسخه‌های مبتنی بر HTTP از کلاینت‌های MCP را تحت تأثیر قرار می‌دهد که به سرورهای غیرقابل اعتماد متصل شده و از OAuth برای دسترسی به Identity Providerهای معتبری مانند Google، Okta یا Microsoft Entra ID استفاده می‌کنند.

پروتکل MCP به دستیاران هوش مصنوعی اجازه می‌دهد تا به ابزارها، APIها و منابع داده خارجی متصل شوند. در حالت عادی، کلاینت MCP برای احراز هویت، فرآیند OAuth Discovery را اجرا می‌کند تا سرور مجوز (Authorization Server) مربوطه را شناسایی کند. با این حال، SDK آسیب‌پذیر بیش از حد به داده‌های ارسالی از سوی سرور MCP اعتماد می‌کرد و این امر به مهاجم اجازه می‌داد تا تبادلات حساس OAuth را به زیرساخت‌های تحت کنترل خود منحرف کند.

سناریوی اکسپلویت (Exploit)

  • مرحله اول: سرور مخرب در پاسخ به درخواست Discovery، یک پاسخ 404 ارسال می‌کند تا SDK را مجبور کند از مسیر جایگزین قدیمی (Legacy Fallback Path) استفاده کند.
  • مرحله دوم: در این مسیر، SDK پیکربندی OAuth را مستقیماً از سرور MCP می‌پذیرد بدون اینکه بررسی کند آیا Issuer اعلام شده با ارائه‌دهنده واقعی تطابق دارد یا خیر.
  • مرحله سوم: مهاجم پیکربندی را به‌گونه‌ای تنظیم می‌کند که صفحه ورود (Login) واقعی (مثلاً گوگل) نمایش داده شود تا کاربر مشکوک نشود، اما Token Endpoint به سرور مهاجم اشاره کند.
  • مرحله چهارم: پس از احراز هویت موفق کاربر، SDK کد مجوز (Authorization Code)، Client Secret و PKCE Code Verifier را به سرور مهاجم ارسال می‌کند. با داشتن هر دو مورد (کد مجوز و Verifier)، مهاجم می‌تواند توکن دسترسی (Access Token) معتبر را از Identity Provider واقعی دریافت کند.

دامنه تأثیر و نسخه‌های آسیب‌پذیر

این آسیب‌پذیری نسخه‌های 1.9.1 تا 1.29.1 در شاخه 1.x و نسخه‌های 2.0.0 تا 2.1.1 در شاخه 2.x را تحت تأثیر قرار داده است. ارائه‌دهندگان OAuth شامل OAuthClientProvider، ClientCredentialsOAuthProvider و PrivateKeyJWTOAuthProvider در معرض خطر هستند.

در محیط‌های AI Agent، ریسک زمانی افزایش می‌یابد که مدل‌ها به‌طور خودکار سرورهای MCP را انتخاب کنند؛ در چنین شرایطی حملاتی مانند Prompt Injection، Typosquatting یا DNS Hijacking می‌توانند ایجنت‌ها را به سرورهای مخرب هدایت کنند.

راهکارهای مقابله و اصلاح (Remediation)

توسعه‌دهندگان باید سریعاً SDK خود را به نسخه‌های 1.30.0 (برای شاخه 1.x) یا 2.2.0 (برای شاخه 2.x) به‌روزرسانی کنند. در نسخه‌های اصلاح‌شده، Issuer سرور مجوز در تمامی مسیرهای Discovery اعتبارسنجی می‌شود.

توصیه‌های تکمیلی برای سازمان‌ها:

  • استفاده از پارامتر issuer= برای پیکربندی صریح Issuer مورد انتظار در ClientCredentialsOAuthProvider.
  • پاک‌سازی ثبت‌های قدیمی OAuth و چرخش (Rotate) Client Secretهای احتمالی افشا شده.
  • ابطال (Revoke) توکن‌هایی که احتمالاً در اتصال به سرورهای غیرقابل اعتماد به کار رفته‌اند.