يمكن لرابط ChatGPT مشارَك علنًا أن ينفّذ كود المهاجم داخل جلستك المسجّل عليها. هذا ما انكسر فعليًا، ولماذا يهم أي شركة تعمل بالذكاء الاصطناعي، وما يجب إصلاحه هذا الأسبوع.
يرسل إليك أحدهم رابطًا. يبدو مثل أي محادثة ChatGPT مشاركة فتحتها من قبل: النطاق نفسه، التصميم نفسه، دردشة حول رسم بياني وقليل من HTML. تضغط عليه. وربما تضغط زر المعاينة الصغير بدافع الفضول.
كانت هذه هي الهجمة بأكملها. بحسب شركة الأبحاث Parameter، سمح هذا الضغط الواحد لكودهم بأن يعمل داخل جلستك الموثّقة على ChatGPT، بالصلاحيات نفسها التي يملكها الموقع الأصلي. ومن هناك سرد المحادثات الأخيرة، وفتح محادثة خاصة لم تُشارَك مع أحد قط، وأرسل جزءًا منها إلى خادم يسيطر عليه الباحثون. وخلاصتهم نفسها صريحة: كانوا قادرين على تنفيذ أي إجراء بالنيابة عن حساب الضحية.
أبلغت Parameter عن الثغرة عبر برنامج مكافآت الأخطاء لدى OpenAI في الثامن عشر من أكتوبر 2026، وأصلحتها OpenAI في السادس والعشرين من أكتوبر وصنّفتها P1، وهي أخطر فئة لديها. لا يوجد دليل على استخدام فعلي، وقد جرى الإثبات بين حسابات الباحثين أنفسهم. الترقيع صدر بالفعل، أما النمط فلم يذهب إلى أي مكان.
بدأت الحكاية برسم بياني ولوحة مفاتيح
هذا هو الجزء الذي يستحق القراءة مرتين، لأنه يشرح لماذا لا تكون عبارة "أصلحنا الثغرة" نهاية القصة أبدًا.
يستطيع ChatGPT تحويل كتلة من HTML داخل المحادثة إلى صفحة ويب صغيرة تعمل فعليًا عبر ميزة المعاينة. ولأن تلك الصفحة قد تحمل كودًا عشوائيًا، تشغّلها OpenAI داخل إطار مقيّد على عنوان ويب مختلف. وهذا العزل وحده كان متماسكًا: الكود داخل المعاينة لم يستطع قراءة الصفحة الرئيسية لـ ChatGPT.
وكانت المحادثة تحتوي أيضًا على رسم بياني تفاعلي عادي. وفي الخلفية كان الرسم يحمّل MathLive، وهي مكتبة لصفّ المعادلات. ولم يكن تحميلها مجرد رسم منحنى، بل ثبّت في صفحة ChatGPT الرئيسية مستمعًا للرسائل المتعلقة بلوحة مفاتيح MathLive على الشاشة.
يسمّي المتصفح هذه الواجهة postMessage. تخيّلها كفتحة بريد بين إطارين مُحكمين في ما عدا ذلك. وهذا آمن فقط إذا تحقّق المستقبِل من هوية المرسِل.
استخدم مستمع MathLive سياسة أصل none، وهي طريقة مؤدبة للقول إنه يقبل رسائل من أي عنوان ويب. وكانت الحمولة المقبولة تحدّث تخطيط لوحة المفاتيح الافتراضية، وكان مسموحًا لهذا التخطيط أن يحتوي على HTML. وعند فتح لوحة المفاتيح، دمجت المكتبة التخطيط المُرسل في سلسلة HTML وأسندته إلى innerHTML في صفحة ChatGPT الحقيقية. وبدت دالة مساعدة تُدعى createHTML وكأنها تنظّف القيمة، لكنها لم تفعل ذلك: بل وسمت السلسلة كموثوقة ومرّرتها كما هي.
ميزتان لا علاقة لإحداهما بالأخرى. مستقبِل موثوق ثبّته رسم بياني. ومرسِل غير موثوق وفّرته معاينة. وجسر فوق الرمل الحاجز.
من رسالة عابرة إلى سيطرة كاملة على الحساب
لا تعمل وسوم السكربت المُدرَجة عبر innerHTML من تلقاء نفسها، لذا احتاج الباحثون إلى إشعال الفتيل. استخدموا إطارًا iframe بخاصية srcdoc، مُدرَجًا دون خاصية sandbox. وخلق ذلك مستندًا جديدًا يمكن لسكربت خارجي أن يعمل داخله، ولأن الصفحة الرئيسية لـ ChatGPT هي التي أنشأت الإطار، منحه المتصفح هوية https://chatgpt.com. وهكذا صار الكود داخل ذلك الإطار قادرًا على الوصول إلى الصفحة الأب.
كانت سياسة أمان المحتوى في ChatGPT تحجب جافاسكربت المضمّن، وهذا بالضبط ما توجد CSP جيدة من أجله. لكنها كانت تسمح بسكربتات من YouTube. وقد دعمت واجهة oEmbed لدى YouTube معامل استدعاء من نوع JSONP، ووضعته بلطف في استجابة الخطأ قبل التحقق منه. ولأن YouTube كان على قائمة المسموح أصلًا، حمّل المتصفح تلك الاستجابة كسكربت ونفّذ استدعاء المهاجم داخل الإطار الجديد.
النتيجة: جافاسكربت عشوائي يعمل بهوية chatgpt.com، داخل جلسة مسجّل عليها، ويُفتح برابط واحد.
ثم جعلت Parameter التسليم مملًا، وهذا أفضل ما يمكن لمهاجم أن يطمح إليه. وضعوا الرسم البياني والمعاينة في محادثة عامة عادية، وصدّروها كرابط /share/<id> معتاد، وأرسلوه بالطريقة التي يرسل بها أي شخص دردشة مشاركة: بالبريد، في رسالة، في تذكرة دعم، كمنشور على وسائل التواصل. وفي النسخة الأكثر استقرارًا ضغطت الضحية على المعاينة مرة واحدة، وفي نسخة لاحقة فتحت المعاينة نفسها، وانطلق التنبيه بعد نحو 4.5 ثانية. كان فتح الرابط هو الضغطة الوحيدة.
لا تثبيت تطبيق. لا انضمام إلى مساحة عمل. لا شاشة موافقة. لا صفحة تصيّد تبدو حقيقية تقريبًا.
لماذا يجب أن تهتم شركتك رغم صدور الترقيع
من السهل تصنيف الأمر على أنه "ثغرة عند OpenAI، وقد أُصلحت، فلنمض". هذه القراءة تُغفل ثلاثة أمور هي التي تضع مؤسستك في خطر حقيقي.
أولًا، كان سطح الهجوم ميزة يُشجَّعونك على استخدامها. فمشاركة محادثة ميزة تعاونية، والميزات التعاونية يُفترض فيها الثقة افتراضيًا. وهنا كانت رابطًا يحمل كودًا قابلًا للتنفيذ إلى جلسة موثّقة.
ثانيًا، كانت حدود الثقة هي جلسة الذكاء الاصطناعي نفسها. فبعد تشغيل الكود، لم يكن بحاجة إلى التقاط بكسلات الشاشة، بل نادى واجهات ChatGPT الموثّقة نفسها بصفته المستخدم المسجّل. وأي ضابط يراقب ما ينقر عليه الإنسان على الصفحة لا يرى شيئًا.
ثالثًا، نادرًا ما يكون الهروب من رمل حاجز في منتج واحد فشلًا معزولًا. هذه السلسلة جولة في اختصارات تطوير عادية جدًا: مستمع رسائل دون التحقق من المرسِل، وأداة تنظيف وسمت المدخلات كموثوقة بدل تنظيفها، وإطار أُنشئ دون رمل حاجز، وقائمة مسموح في CSP واسعة بما يكفي لتخدم مهاجمًا. هذه الأنماط موجودة في كل مشروع ركّب تكاملًا على عجل. وفي مشاريعنا أيضًا.
الجزء المزعج: جلسة الذكاء الاصطناعي هي كل سياقك
اسأل نفسك ما الذي تحتويه دردشات الذكاء الاصطناعي في فريقك. معمارية عميل. بند عقد يُعاد كتابته. خطة ترحيل. بيانات دخول لُصقت مرة ثم نُسيت. نموذج تسعير ما زالوا يقررونه.
هذا ليس سجل دردشة، بل أكثف تجمّع لسياق العمل الذي تملكه، وهو محميّ بكوكي جلسة واحد لا تنتهي صلاحيته عادة أبدًا.
الدرس ليس أن "الذكاء الاصطناعي خطر"، بل أن جلسات الذكاء الاصطناعي تستحق التعامل نفسه الذي تستحقه لوحة إدارة، لا الذي تستحقه خانة بحث.
ما الذي سنفعله هذا الأسبوع
- تعامل مع جلسات دردشة الذكاء الاصطناعي كهُويات مميّزة الصلاحيات. افرض إعادة التوثيق، وقصّر عمر الجلسات، واطلب الدخول الموحّد مع التحقق من الجهاز حيث يدعمه المزوّد. فإذا كان كوكي الجلسة قادرًا على قراءة الحساب كله، فيجب أن تنتهي صلاحيته كجلسة إدارة، لا كموقع مفضّل.
- أوقف المعاينات التلقائية والروابط غير المراجَعة. عطّل المعاينة التلقائية للمحتوى المشارَك حيث يتوفر الخيار، وأخبر الفريق بأن الرابط غير المتوقع حمولة خبيثة لا لفتة مجاملة.
- سجّل طبقة الواجهات البرمجية، لا الشاشة. إذا كانت مراقبتك ترى نشاط المتصفح فقط، فهي عمياء عن هذه الفئة من الهجمات. تابع النداءات الموثّقة إلى واجهات منتج الذكاء الاصطناعي نفسه، مع تنبيهات على الحجم والنطاق.
- قلّل ما يمكن للجلسة الوصول إليه. افصل الحسابات الشخصية عن حسابات العمل. أبقِ مواد العملاء السرية خارج الدردشات العامة. استخدم المشاريع أو مساحات العمل الأضيق نطاقًا حيث تتوفر، واحذف ما لم تعد بحاجة إليه.
- دقّق تكاملاتك بحثًا عن الأخطاء الأربعة نفسها. مستمعات
postMessageدون تحقق، ومصارفinnerHTML، وإطارات بدون رمل حاجز، وقوائم مسموح في CSP أوسع مما تحتاجه الميزة. هذه مراجعة من ساعتين تدفع ثمنها من المرة الأولى. - افحص ميزات المشاركة عند أي مزوّد قبل تفعيلها. اسأل ما الذي يستطيع أثر مشارَك فعله داخل جلسة من يفتحه، لا فقط ما يعرضه.
الخلاصة
شاهد القطاع للتو رابطًا مشاركًا علنًا يتحوّل إلى وسيلة تسليم كود داخل جلسة ذكاء اصطناعي موثّقة، وأصلح المزوّد ذلك في ثمانية أيام، وهو عمل سريع حقًا.
وما يبقى هو سؤال التصميم الذي على كل فريق يبني على الذكاء الاصطناعي أن يجيب عنه اليوم: كم سياقًا تحمل هذه الجلسة، وكم تعيش، وما الذي يمكن أن يعمل داخلها؟
في aratech نبني البنية التحتية للذكاء الاصطناعي التي يعمل عليها عملاؤنا، وهذا بالضبط هو المفصل الذي نعود إليه دائمًا. الوكلاء والمساعدون ليسوا إضافات مثبّتة على منظومتك، بل مكوّنات تحمل هوية وتملك وصولًا إلى أثمن سياق لديك. تعامل مع الجلسة كأصل حقيقي، وسيتحوّل رابط يصل في تذكرة دعم إلى إزعاج بدل أن يكون حادثًا.
وإن أردت رأيًا ثانيًا حول مدى وصول جلسات الذكاء الاصطناعي لديك، فتلك هي المحادثة التي نحب أن نخوضها.