ثغرة ChatGPT: رابط مشترك واحد كان كافيًا للاستيلاء على الحساب
ثغرة في ChatGPT سمحت بالاستيلاء على الحساب عبر رابط عام لمحادثة وقراءة محادثات الآخرين. دفعت OpenAI مبلغ 5000 دولار. إليك كيف حدث ذلك.
هذا المقال بلغات أخرى:DeutschEnglishEspañolFrançaisItaliano日本語Polski简体中文
في هذا المقال
في 28 أكتوبر نشر Mukul Goyal من شركة Parameter وصفًا لثغرة في ChatGPT كانت تتيح الاستيلاء على الحساب عبر رابط عام عادي لمحادثة (chatgpt.com/share/…). كان كود المهاجم يعمل داخل الجلسة المسجَّلة للشخص الذي يفتح الرابط. أغلقت OpenAI البلاغ في 26 أكتوبر ودفعت 5000 دولار ضمن برنامج مكافآت اكتشاف الثغرات (bug bounty).
كيف كانت ثغرة ChatGPT تعمل؟
الهجوم سلسلة من أربعة أخطاء (كما يصفها الباحثون):
- كان رسم بياني تفاعلي داخل المحادثة يحمّل مكتبة MathLive، وهي مكتبة مفتوحة المصدر لكتابة الصيغ الرياضية. كانت المكتبة تقبل الرسائل المتبادلة بين إطارات الصفحة من أي مُرسل دون التحقق من هويته.
- كانت بيانات تخطيط لوحة المفاتيح في MathLive قادرة على احتواء HTML، وكانت المكتبة تُدرجه في الصفحة الرئيسية دون أي تنقية.
- كان هذا الـHTML ينشئ إطار iframe بلا السمة
sandbox، فكان المستند الجديد يرث أصل chatgpt.com. - كانت سياسة أمان المحتوى (Content Security Policy) في ChatGPT تحظر السكربتات المضمّنة، لكنها تسمح بـYouTube. وكانت نقطة oEmbed في YouTube تدعم استدعاءً بأسلوب JSONP، ما مكّن الباحثين من تحميل كودهم من نطاق مسموح به.
عمليًا، كان المهاجم ينشر محادثة تبدو عادية تمامًا. في بدايتها رسم بياني حقيقي (لتحميل MathLive)، وبعده معاينة HTML، أي ميزة Preview التي تحوّل كتلة كود HTML إلى صفحة صغيرة تعمل. وكانت هذه المعاينة هي التي ترسل الرسائل الخبيثة إلى المكتبة.
بحسب الباحثين، كان فتح الرابط المشترك هو الإجراء الوحيد المطلوب. في النسخة الأكثر ثباتًا كانت الضحية تنقر على Preview مرة واحدة. وفي نسخة لاحقة كانت المعاينة تُفتح تلقائيًا، ويظهر دليل تنفيذ الكود بعد نحو 4.5 ثانية.
ماذا كان بإمكان المهاجم أن يفعل بالضبط؟
كان الكود يعمل باسم chatgpt.com داخل جلسة الضحية، لذا كان يستطيع استدعاء واجهة ChatGPT البرمجية الموثَّقة نيابةً عنها. في إثبات المفهوم، جلب الباحثون قائمة المحادثات الأخيرة، ثم محتوى محادثة خاصة لم يشاركها أحد معهم، وأرسلوا جزءًا صغيرًا منها إلى خادمهم.
وبحسب المنشور، كان بإمكانهم بهذه الطريقة تنفيذ أي إجراء تقريبًا على حساب الضحية (بعبارتهم: «Essentially, we could perform any action on behalf of the victim’s ChatGPT account»). كما نجح الهجوم بين حسابات ومساحات عمل (workspaces) منفصلة.
كيف تعاملت OpenAI مع الثغرة؟
التسلسل الزمني من منشور Parameter:
- 13 أكتوبر: يؤكد الباحثون وجود المسار الضعيف في MathLive داخل كود الإنتاج.
- 18 أكتوبر: يبلّغون عن الثغرة عبر برنامج مكافآت الثغرات لدى OpenAI.
- 21 أكتوبر: تعيد OpenAI إنتاج الخطأ وترفع أولويته من P2 إلى P1.
- 22 أكتوبر: يصل الإصلاح إلى إحدى الواجهتين الأماميتين على الويب، وفي 23 أكتوبر تحظر تغييرات في CSP جزءًا من السلسلة.
- 26 أكتوبر: ترفض الواجهتان الرسائل المستخدمة في الهجوم، ويُغلق البلاغ، ويحصل الباحثون على المكافأة.
لا يذكر المنشور أي استغلال للثغرة في هجمات حقيقية. ولا يصف كذلك ما الذي غيّرته OpenAI تحديدًا في الكود.
لماذا يكثر الحديث عن هذه الثغرة؟
أولًا، بسبب بساطة الهجوم. كان الرابط يبدو مثل أي محادثة ChatGPT مشتركة أخرى، فلم يكن التحقق من العنوان ليفيد بشيء.
ثانيًا، بسبب المكافأة. وصل المنشور إلى الصفحة الأولى في Hacker News، وأكثر ما يتكرر في التعليقات هو المبلغ: يرى كثيرون أن 5000 دولار مقابل الاستيلاء على حساب برابط واحد مبلغ قليل، ويخشى بعضهم أن تُثني المكافآت المنخفضة إلى هذا الحد الباحثين عن الإبلاغ عن الثغرات.
ثالثًا، بسبب مصدر المشكلة. اللافت أن السلسلة كلها بدأت من مكتبة لكتابة الصيغ الرياضية (ومن هنا عنوان المنشور «Do the Math»). كلما زادت الإضافات التفاعلية في المحادثة – رسوم بيانية، معاينات صفحات – زادت المواضع التي قد يحدث فيها خلل. والمحادثات المشتركة سبّبت مشكلات من قبل: كما نعلم، في تسريب Meta Muse انتهت عناوين المحادثات المشتركة في نظام DNS العام.
ما الذي ينبغي الانتباه إليه مستقبلًا؟
يذكر الباحثون درسين لمطوري تطبيقات الويب:
- على مستقبِل الرسائل بين الإطارات أن يتحقق من أصل المُرسِل ومن النافذة نفسها بالضبط التي منحها الصلاحيات.
- يجب أن تكون CSP خط دفاع احتياطيًا، لا الحاجز الوحيد بعد أن يصل HTML المهاجم إلى الصفحة.
بالنسبة لنا كمستخدمين، فقد سُدّت هذه الثغرة بالفعل. ومع ذلك يجدر أن نتذكر أن رابط محادثة شخص آخر مع روبوت دردشة يظل رابطًا من شخص غريب. أكتب المزيد عن حماية الحسابات ومفاتيح API في دليل أمان وكلاء الذكاء الاصطناعي.
الأسئلة الشائعة
هل أُصلحت ثغرة ChatGPT؟
نعم. بحسب الباحثين، أكدت OpenAI في 26 أكتوبر أن الواجهتين الأماميتين لـChatGPT على الويب ترفضان الرسائل المستخدمة في الهجوم.
هل عليّ فعل شيء بحسابي؟
لا يذكر منشور Parameter أي خطوات للمستخدمين، ولا يشير إلى هجمات خارج اختبارات الباحثين.
كم دفعت OpenAI مقابل البلاغ؟
5000 دولار ضمن برنامج مكافآت الثغرات. وحصل البلاغ على أولوية P1.
هل كان فتح الرابط كافيًا فعلًا؟
بحسب الباحثين، نعم. في إحدى نسخ الهجوم كان لا بد من النقر على Preview مرة واحدة، وفي نسخة لاحقة كانت المعاينة تعمل تلقائيًا.