یک آسیب‌پذیری در چت‌جی‌پی‌تی امکان ارسال اطلاعات جیمیل قربانی به یک حساب دیگر را با استفاده از پرامپت مخفی فراهم کرد

اشتراک گذاری

چت‌جی‌پی‌تی
❞ پژوهشگران شرکت چک پوینت (Check Point) از یک آسیب‌پذیری در چت‌جی‌پی‌تی (ChatGPT) خبر داده‌اند که می‌تواند به مهاجمان اجازه دهد با قرار دادن یک دستورالعمل مخفی در مکالمه، این سامانه را به اجرای پنهانی وظایفی خارج از درخواست کاربر وادار کنند. در یک نمونه اثبات مفهوم (PoC)، چت‌جی‌پی‌تی بدون اطلاع کاربر، داده‌های حساب جیمیل (Gmail) متصل به نشست را خواند و آن‌ها را از طریق یک کانال مخفی به حساب دیگری منتقل کرد. این سناریو نشان می‌دهد که مهاجمان می‌توانند از اپلیکیشن‌ها و سرویس‌های متصل به حساب کاربر برای اجرای فعالیت‌های پنهان و افشای داده‌های او سوءاستفاده کنند.

کانال ارتباطی مخفی چت‌جی‌پی‌تی

چک پوینت اعلام کرده است که کانال ارتباطی مخفی میان دو حساب چت‌جی‌پی‌تی فقط برای انتقال داده‌های جیمیل مورد استفاده قرار نمی‌گرفت و می‌توانست تاریخچه مکالمات (Chat History) و فایل‌های موجود در مکالمه را نیز به حساب مهاجم منتقل کند.

میزان داده‌هایی که مهاجم می‌توانست به آن‌ها دسترسی پیدا کند، به سطح دسترسی نشست کاربر بستگی داشت. این دسترسی می‌توانست شامل داده‌های موجود در نشست، ابزارهای متصل، اپلیکیشن‌های متصل و مجوزهای اختصاص‌یافته به آن باشد.

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

  • روش اول: کاربر یک پرامپت حاوی دستورالعمل مخرب را مستقیماً در مکالمه وارد می‌کرد.
  • روش دوم: کاربر مکالمه‌ای را باز می‌کرد که فرد دیگری پیش‌تر آن را به اشتراک گذاشته و دستورالعمل مخرب را در آن قرار داده بود.
  • روش سوم: دستورالعمل مخرب در تنظیمات یک GPT سفارشی قرار می‌گرفت و برای کاربر قابل مشاهده نبود.

پس از قرار گرفتن دستورالعمل مخرب در مکالمه، ارسال یک پیام معمولی از سوی کاربر برای اجرای حمله کافی بود. چک پوینت این سناریو را به‌گونه‌ای طراحی کرده بود که مدل هنگام پردازش همان درخواست، دو کار را به‌طور هم‌زمان انجام دهد. مدل از یک سو به درخواست واقعی کاربر پاسخ می‌داد و از سوی دیگر، بدون اطلاع او، وظیفه‌ای که مهاجم تعیین کرده بود را اجرا می‌کرد.

 

اجرای هم‌زمان فعالیت آشکار و پنهان

در این حمله، چت‌جی‌پی‌تی هم‌زمان دو وظیفه متفاوت را انجام می‌داد. در بخش قابل مشاهده، به درخواست کاربر پاسخ می‌داد. در بخش پنهان، صندوق ایمیل (Mailbox) مخفی را برای دریافت وظیفه‌ای از مهاجم بررسی می‌کرد. سپس با استفاده از ابزارهای در دسترس در نشست کاربر، وظیفه موردنظر را انجام می‌داد و نتیجه را برای مهاجم ارسال می‌کرد.

دستورالعمل مخرب نیز مدل را وادار می‌کرد فعالیت پنهان را جدا از پاسخ اصلی اجرا کند. به این ترتیب، وظیفه‌ای که مهاجم در پس‌زمینه تعیین کرده بود، در پاسخ نمایش داده نمی‌شد و کاربر از اجرای آن اطلاعی پیدا نمی‌کرد.

تنها نشانه‌ای که می‌توانست استفاده از اپلیکیشن متصل را نشان دهد، عبارت «دسترسی به جیمیل» (Talked to Gmail) در بالای پاسخ بود. این عبارت نشان می‌داد که اطلاعاتی از حساب جیمیل خوانده شده است، اما کاربر هیچ گزینه‌ای برای تأیید یا رد این دسترسی در اختیار نداشت.

چت‌جی‌پی‌تی

مدیریت دسترسی در چت‌جی‌پی‌تی

نحوه مدیریت اپلیکیشن‌های متصل باعث شد دسترسی به اطلاعات جیمیل بدون نمایش درخواست تأیید به کاربر انجام شود. طبق مستندات OpenAI، گزینه اقدامات مهم (Important Actions) به‌صورت پیش‌فرض فعال است و به چت‌جی‌پی‌تی اجازه می‌دهد اطلاعات اپلیکیشن متصل را بدون دریافت تأیید از کاربر بخواند.

سامانه تنها زمانی از کاربر درخواست مجوز می‌کند که یک اقدام خارج از محیط سرویس اثر مستقیمی داشته باشد، به اطلاعات حساس دسترسی پیدا کند یا بازگرداندن نتیجه آن دشوار باشد.

کاربرانی که می‌خواهند پیش از هر بار دسترسی، مجوز آن را به‌صورت جداگانه صادر کنند، می‌توانند گزینه «درخواست مجوز برای هر دسترسی» (Always Ask) را فعال کنند.

در نسخه‌های بیزینس (Business)، سازمانی (Enterprise) و آموزشی (Edu)، مدیران سازمان می‌توانند تعیین کنند هر اپلیکیشن چه دسترسی‌ها و اقداماتی داشته باشد و کدام کاربران بتوانند از آن استفاده کنند. در طرح بیزینس، اپلیکیشن‌های متصل به‌صورت پیش‌فرض فعال هستند و کاربران می‌توانند از آن‌ها استفاده کنند. در طرح‌های سازمانی و آموزشی، این اپلیکیشن‌ها به‌صورت پیش‌فرض غیرفعال هستند و مدیر سازمان باید دسترسی به آن‌ها را فعال کند.

چک پوینت یافته‌های خود را با OpenAI در میان گذاشت و OpenAI نیز تأیید کرد که سرویس داخلی مورد استفاده برای ایجاد این کانال ارتباطی از دسترس خارج شده است. در نتیجه، برای رفع این ضعف امنیتی، کاربران نیازی به نصب نرم‌افزار یا به‌روزرسانی جدید ندارند.

این کانال ارتباطی میان کانتینرهایی ایجاد شده بود که سامانه برای اجرای کد از آن‌ها استفاده می‌کرد. هر زمان اجرای یک وظیفه به محیطی جداگانه نیاز داشت، سامانه برای آن مکالمه یک کانتینر ایجاد می‌کرد.

سرویس داخلی مشترک، مسیر ارتباطی میان کانتینرها

طبق مستندات OpenAI، محیط پایتون (Python) مورد استفاده برای تحلیل داده در چت‌جی‌پی‌تی امکان ارسال درخواست به وب یا APIهای خارجی را ندارد. چک پوینت نیز اعلام کرده است که کانتینرهای مربوط به مکالمات مختلف، حتی در حساب‌های کاربری جداگانه، ارتباط مستقیمی با یکدیگر نداشتند.

با این حال، همه این کانتینرها به یک سرویس داخلی مشترک دسترسی داشتند. این سامانه برای اجرای برخی وظایف، گاهی به پکیج‌های دیگری از پایتون یا npm نیاز داشت. به همین دلیل، کانتینرها به‌جای اتصال مستقیم به مخازن عمومی پکیج‌ها، از طریق یک نمونه داخلی جی‌فراگ آرتیفکتوری (JFrog Artifactory) به پکیج‌های موردنیاز خود دسترسی پیدا می‌کردند.

این نمونه از آرتیفکتوری امکان افزودن مقادیر نام‌گذاری‌شده‌ای را به فایل‌های ذخیره‌شده فراهم می‌کرد که با عنوان ویژگی (Properties) ثبت می‌شدند و بعداً امکان خواندن آن‌ها وجود داشت. نکته مهم این بود که همان اعتبارنامه‌های مورد استفاده برای خواندن این اطلاعات، ایجاد یا تغییر آن‌ها نیز کافی بودند. این اعتبارنامه‌ها در متغیرهای محیطی (Environment Variables) ذخیره شده بودند و کدی که در این محیط اجرا می‌شد، می‌توانست به آن‌ها دسترسی داشته باشد.

در نتیجه، کدی که در یکی از کانتینرها اجرا می‌شد، می‌توانست از این سرویس داخلی برای انتقال اطلاعات استفاده کند. مهاجم برای اجرای این حمله نیازی به سرقت کلید یا اطلاعات حساس نداشت و مجبور نبود با افزایش سطح دسترسی (Privilege Escalation)، دسترسی بیشتری به سیستم به دست آورد.

چت‌جی‌پی‌تی

اطلاعات ثبت‌شده در بخش ویژگی‌های فایل‌ها در آرتیفکتوری، برای حساب‌های کاربری مختلف جدا نبود؛ به همین دلیل، یک حساب می‌توانست به اطلاعاتی که حساب دیگری روی همان فایل ثبت کرده بود، دسترسی پیدا کند. چک پوینت در یک آزمایش، از کانتینر مربوط به یک حساب کاربری، ویژگی‌ای با نام chatgpt_test_ts و مقدار زمان فعلی را روی یک فایل ذخیره‌شده ثبت کرد. سپس از طریق مکالمه‌ای در حساب کاربری دیگری، همان فایل را درخواست کرد و توانست همان ویژگی را با نام و مقدار یکسان دریافت کند.

این ویژگی‌ها می‌توانستند برای ذخیره متن ساده (Plain Text) یا داده‌های رمزگذاری‌شده با Base64 به کار بروند. اطلاعات با حجم بالا نیز می‌توانستند در چند ویژگی قرار بگیرند و در سمت دیگر دوباره کنار هم قرار داده شوند. در نتیجه، متادیتای سرویس مدیریت پکیج‌ها عملاً مانند یک کلیپ‌بورد مشترک میان کانتینرهای کاملاً ایزوله عمل می‌کرد.

کانال ارتباطی مبتنی بر درخواست‌های DNS

چک پوینت پیش‌تر نیز یک کانال ارتباطی را در همین بخش از زیرساخت چت‌جی‌پی‌تی شناسایی کرده بود. این شرکت در مارس 2026 از کانالی خبر داده بود که مهاجمان با استفاده از درخواست‌های جست‌وجوی DNS (DNS Lookup) می‌توانستند داده‌های مکالمات را به یک سرور خارجی ارسال کنند. به گفته چک پوینت، OpenAI این مسیر ارتباطی را در 20 فوریه مسدود کرده است.

این مورد با رخداد مرتبط با هاگینگ‌فیس (Hugging Face) تفاوت دارد. در آن رخداد، مدل‌های OpenAI در جریان آزمایش‌های امنیتی این شرکت، از یک نمونه داخلی آرتیفکتوری  برای تبادل پیام و اطلاعات میان خود استفاده کرده بودند.

چک پوینت تأکید کرده است که سازوکار این کانال با رخداد هاگینگ فیس متفاوت بود. با این حال، هر دو مورد نشان می‌دهند که یک سرویس داخلی مشترک می‌تواند به مسیری برای انتقال اطلاعات میان محیط‌هایی تبدیل شود که قرار است از یکدیگر ایزوله باشند.

چک پوینت اعلام کرده است که این بررسی را در ژوئن 2026 انجام داده است. با این حال، مشخص نیست این کانال چه زمانی از دسترس خارج شده است و در نتیجه، مدت‌زمان فعال بودن آن مشخص نیست.

منابع

دیدگاهتان را بنویسید

مطالب مرتبط