ثغرة في ChatGPT سمحت بالاستيلاء على الحساب عبر رابط مشاركة، وسببها مكتبة MathLive
نشرت Parameter Labs في 28 أكتوبر 2026 تقريرًا كتبه الباحث Mukul Goyal، يشرح ثغرة في ChatGPT كانت تسمح بالاستيلاء على حساب المستخدم عبر رابط مشاركة عادي. أبلغ الباحثون OpenAI في 18 أكتوبر، ورفعت الشركة تصنيفها إلى P1 في 21 أكتوبر، وتأكد الإصلاح في 26 أكتوبر، وبلغت المكافأة 5,000 دولار.
اللافت أن الثغرة مبنية على ثلاثة أجزاء، كل منها سليم وحده. الجزء الأول ميزة الـ Preview: حين يعرض ChatGPT كود HTML، يشغّله داخل frame معزول على نطاق آخر، وهذا العزل كان يعمل فعلًا، فالكود في داخله لا يستطيع قراءة الصفحة الأصلية.
الجزء الثاني رسم بياني في المحادثة نفسها، يحمّل مكتبة رياضيات اسمها MathLive. وهذه المكتبة تسجّل listener في الصفحة الأصلية يستقبل رسائل postMessage، لكنه كان يقبل الرسالة من أي origin دون أن يتحقق من مرسلها.
والرسالة كانت قادرة على تغيير تخطيط لوحة المفاتيح الافتراضية، والتخطيط مسموح أن يحتوي HTML، فيُدرَج في الصفحة الأصلية عبر innerHTML. وهكذا أرسل الـ Preview المعزول رسالة، ونفّذت الصفحة الأصلية الـ HTML. ثم أنشأ هذا الـ HTML عنصر iframe بخاصية srcdoc دون sandbox، فورث هوية chatgpt.com. وكانت سياسة الـ CSP تسمح بسكربتات من YouTube، فاستُخدمت نقطة oEmbed لتشغيل الكود.
بعدها صار الكود يتحدث مع الـ API باسم صاحب الحساب: يقرأ قائمة المحادثات، ويجلب محادثة خاصة لم تُشارَك، ويرسل البيانات إلى خادم خارجي.
والدرس الذي كتبه التقرير نفسه يتجاوز ChatGPT. فأي منتج يعرض preview أو embed داخل صفحته يعتمد على الافتراض نفسه: أن العزل يكفي. والتقرير يقول إن كل مستقبِل رسائل يحتاج إلى التحقق من عنوان المرسل والنافذة المسموح لها، وإن الإعدادات التي تنتقل بين النوافذ لا ينبغي أن تحمل HTML خامًا، وإن سياسة الـ CSP خط دفاع ثانٍ لا الحاجز الوحيد. والمكتبات الخارجية التي تُحمَّل لأجل ميزة صغيرة، كرسم معادلة، تدخل إلى الصفحة بكل ما تسمعه.