
RufRoot: طلب واحد دون مصادقة إلى جسر MCP الخاص بـ Ruflo نفّذ أوامر، وسرق مفاتيح، وسمّم ذاكرة الذكاء الاصطناعي
- OrcaجديدOrcaCyber: MiniMax M3.1 Flash Abliterated / Uncensored2026-10-29101 tok/s
- OrcaجديدOrcaCyber: GLM 5.3 Flash Abliterated / Uncensored2026-10-27$0.80 / $1.60 لكل مليون رمز · 103 tok/s
- OrcaجديدOrcaCyber: Qwen3.8 Flash Next Abliterated / Uncensored2026-10-26$0.80 / $1.60 لكل مليون رمز · 283 tok/s
- OrcaجديدOrcaCyber: MiMo V2.6 Flash Abliterated / Uncensored2026-10-26$0.80 / $1.60 لكل مليون رمز · 93 tok/s
- MoonshotجديدMoonshotAI: Kimi K3.1 Pro2026-10-2446الذكاء
- OrcaجديدOrcaCyber: DeepSeek V4.1 Flash Abliterated / Uncensored2026-10-23$0.80 / $1.60 لكل مليون رمز · 107 tok/s
- minimaxجديدMiniMax: M3.1 Flash2026-10-1929الذكاء
- OrcaجديدOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 لكل مليون رمز · 70 tok/s
- deepseekجديدDeepSeek: DeepSeek V4.1 Flash 10172026-10-1733الذكاء
- DeepSeekجديدDeepSeek: DeepSeek V4.1 Flash2026-10-1740الذكاء
- OrcaOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 لكل مليون رمز · 96 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2955الذكاء
- anthropicAnthropic: Claude Sonnet 5.52026-09-2854الذكاء
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 لكل مليون رمز · 168 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2228الذكاء
- OpenAIOpenAI: GPT-6 Sol2026-09-2248الذكاء
- AnthropicAnthropic: Claude Opus 5.52026-09-2258الذكاء
- xiaomiXiaomi: MiMo-V2.6-Flash2026-09-2127الذكاء
- xiaomiXiaomi: MiMo-V2.6-Pro2026-09-2130الذكاء
- xAIGrok 4.72026-09-2134الذكاء
في 30 يونيو 2026، Noma Labsسلّمت القائم على صيانة Rufloاستغلالًا عمليًا ضد المشروع نفسه. وكان قسم الأبحاث في Noma Security قد وجد أن Ruflo — منصة مفتوحة المصدر لتنسيق الوكلاء أُطلقت سابقًا باسم Claude Flow — تأتي بنشر Docker Compose افتراضي يربط Model Context Protocolجسرها بالمنفذ 3001على كل واجهة شبكة ولم يتطلب أي مصادقة على الإطلاق. كان طلب HTTP واحد إلى /mcp نقطة النهاية كافيًا لتنفيذ أوامر صدفة داخل الحاوية بصفة node المستخدم، ومن تلك الصدفة كان بإمكان المهاجم قراءة كل مفتاح API لمزوّد LLM في البيئة، وتفريغ كل المحادثات المخزّنة، وإنشاء أسراب من الوكلاء تُحمّل فواتيرها على مفاتيح الضحية، وكتابة تعليمات في AgentDB، مخزن التعلّم الذي سيظل يوجّه إجابات الذكاء الاصطناعي لكل مستخدم لذلك المثيل. الثغرة هي CVE-2026-59726، وتُلقّب بـ RufRoot، وقد حصلت على CVSS 10.0 وأُصلحت في 3.16.3 خلال 24 ساعة. لا يذكر أي مصدر اطّلعنا عليه أنها استُغلت في البرية. يوجد سجل الأرشيف الخاص بهذه الثغرة، مع قائمة مصادره ودرجة ثقته، في أرشيف حوادث الذكاء الاصطناعي، إلى جانب إدخالات MCP والبنية التحتية الأخرى المودعة حوله.
الافتراضي الذي فتح الباب
Ruflo هو ما تسميه Noma Labs «ميتا-هارنيس» للوكلاء: طبقة ذاتية الاستضافة لأسراب من الوكلاء يصل عددها إلى 100، مبنية لـ Claude Code وOpenAI Codex، مع ذاكرة طويلة الأمد وخادم MCP مدمج لاستدعاء الأدوات. الإعداد المعتاد هو الذي تصفه Noma — استنساخ المستودع، وإضافة مفاتيح API لنماذج LLM، وتشغيل docker compose up -d. كان ملف compose الافتراضي للمشروع يربط الجسر بـ 0.0.0.0 على المنفذ 3001، ويربط قاعدة MongoDB المرافقة به بجميع الواجهات على 27017، مع إيقاف مصادقة Mongo. ويعتمد مدى ذلك على جدار الحماية ومجموعة الأمان وتقسيم الشبكة حول النشر؛ وصياغة Noma نفسها هي أن أي نسخة يمكن الوصول إليها عبر الشبكة كانت قابلة للاستغلال بالكامل دون مصادقة.
إن MCP Bridge هو خادم Express.js يحوّل طلبات JSON-RPC الواردة عبر HTTP إلى استدعاءات ضد مكتبة الأدوات الداخلية في Ruflo. في السطر المعرّض للثغرة، كانت تلك المكتبة تضم 233 أداة تغطي الوصول إلى shell، وعمليات قواعد البيانات، وإدارة الوكلاء، وتخزين الذاكرة. وتصف تدوينة Noma بصراحة ما يجعله ذلك: "MCP Bridge ليس واجهة تصحيح مساعدة عشوائية؛ بل هو الجهاز العصبي المركزي لـ Ruflo. كل استدعاء أداة، وكل إجراء وكيل، وكل عملية ذاكرة يمر عبر MCP Bridge."
كانت طبقة المصادقة غائبة، لا مجرد ضعيفة. POST /mcp وPOST /mcp/:group يطبّقان بروتوكول MCP JSON-RPC ويمرّران طلبات tools/call الواردة مباشرةً إلى الدالة الداخلية executeTool(). كان Ruflo يحتفظ بالفعل بقائمة حظر للأوامر، AUTOPILOT_BLOCKED_PATTERNS، التي كان الغرض منها منع عمليات shell الخطرة، لكن تنبيه GitHub الأمني يصرّح بأنه «لم يكن يُطبَّق إلا في مسار الطيار الآلي. وقد تجاوزته POST /mcp و POST /mcp/:group». وهكذا، استدعاءٌ واحد غير مُصادَق عليه باسم ruflo__terminal_execute شغّل أوامر اعتباطية باسم مستخدم node في الحاوية، والمُسجَّل في التنبيه بمعرّف uid 1000، دون الحاجة إلى رمز أو جلسة أو تفاعل سابق. لم تكن هناك حاجة إلى تصعيد الامتيازات لما جاء بعد ذلك: فقد كانت بيانات الاعتماد وواجهات برمجة التطبيقات الخاصة بالوكيل ومخزن الذاكرة وقاعدة البيانات كلها قابلة للوصول من ذلك الـshell.
السلسلة، في ثماني خطوات
نشرت Noma Labs إثباتًا للمفهوم من ثماني خطوات، وأكّدت كل خطوة مباشرةً مقابل نشر Ruflo افتراضي على AWS EC2، باستخدام نداءات راجعة خارج النطاق إلى Burp Collaborator للتحقق من التنفيذ والتسريب. ولا تمثل الخطوات عواقب تخمينية متراكمة على ثغرة نظرية؛ بل هي تسلسل مُثبَت، وقد كُتب قسم المعالجة في التنبيه للمشغلين الذين قد يكونون بالفعل في خضمه.

يأتي الاستطلاع أولاً لأن قائمة الأدوات متاحة لأي مستدعٍ: tools/list يعيد جميع الإدخالات الـ233 دون بيانات اعتماد. وينتج تنفيذ الأوامر عن نقطة النهاية نفسها، وقد أكّد نموذج الإثبات الخاص بـNoma ذلك عبر استدعاء خارج النطاق بدلاً من استنتاجه من جسم استجابة. وخطوة البيئة هي التي تحوّل اختراق المضيف إلى مشكلة فوترة وفقدان بيانات: فقد مرّر ملف compose مفاتيح المزوّد إلى الحاوية، وورثت عمليات الواجهة الخلفية البيئة كاملة عبر { ...process.env }، لذا أدّى تنفيذ واحد لـprintenv إلى كشفها. ثم سمحت هذه المفاتيح لـruflo__swarm_init وruflo__agent_spawn ببدء أسراب يتحكم بها المهاجم استهلكت حصة الضحية وقدرتها الحاسوبية.
الخطوة الخامسة هي التي تبقى بعد الاختراق. وباستخدام ruflo__agentdb_pattern-store، زرعت Noma سياسة امتثال SOC2 مُلفَّقة توجّه الذكاء الاصطناعي إلى تضمين رابط يتحكم فيه المهاجم في كل نص برمجي للنشر يولّده لاحقًا. ولأن AgentDB وُجدت أساسًا لحفظ هذا النوع من الأنماط بشكل دائم كي يتحسّن سلوك الوكلاء عبر الجلسات، فقد تصرّف الإدخال المحقون كما صُمم النظام ليتصرف. تقول كتابة Noma: "تنتج المحادثات المستقبلية مخرجات متأثرة بالمهاجم، ولا يملك المستخدم أي وسيلة لمعرفة ذلك." وقد طرحت Dark Reading، التي أوردت الخلل في 29 يوليو، هذا التمييز على خبير خارجي: وصف جون غالاغر، نائب الرئيس في Viakoo، الأمر بأنه فئة مختلفة من المشكلات: "هذا ليس استغلالًا لعيوب البرمجيات، بل تسميم للذاكرة."
الخطوات المتبقية هي استغلال لاحق تقليدي، نُفّذت بسهولة غير معتادة. لم يكن لدى MongoDB على شبكة Docker الداخلية أي مصادقة، لذا ثبّت المهاجمون عميلاً في /tmp، واستخرجوا المحادثات وأرسلوها إلى الخارج. جاء الاستمرار من كتابة /app/beacon.js، وإضافة سطر require('./beacon.js') إلى index.js وقتل PID 1، وبعد ذلك أعادت سياسة إعادة التشغيل في Docker الحاوية إلى العمل مع تنشيط الـ beacon. كانت الخطوة الأخيرة مسح سجل الصدفة. كل ذلك نجم عن طلب واحد غير مُصادَق؛ ولم يوقف أي شيء في النشر الافتراضي هذه السلسلة عند أي نقطة.
الإصلاح، والجزء الذي لا تستطيع أي رقعة أن تصله
أصدر المشرف Ruflo 3.16.3 خلال 24 ساعة من الكشف في 30 يونيو، ونشر GitHub التنبيه GHSA-c4hm-4h84-2cf3 في 1 يوليو 2026. يغيّر الإصلاح، المُتتبَّع في المستودع باسم ADR-166 والمدمج في طلب السحب 2521، الإعدادات الافتراضية بدلاً من مجرد إضافة فحص:
• يربط جسر MCP بـ127.0.0.1 افتراضيًا؛ ويتطلب الربط العام MCP_AUTH_TOKEN، وتخرج العملية برسالة خطأ فادح عند الإقلاع إذا كان الرمز غائبًا.
• تقع برمجيات وسيطة لـ Bearer-token مع مقارنة ثابتة الزمن أمام الجسر.
• terminal_execute محجوب من جهة الخادم خلف MCP_ENABLE_TERMINAL=true، ومعطّل افتراضيًا، ويُفرض هذا القيد بالطريقة نفسها على /mcp، و/mcp/:group وتدفق الطيار الآلي — الحلقة المفقودة التي كانت تسمح للسلسلة المُفصح عنها بالوصول إلى غلاف أوامر.
• يتطلب MongoDB المصادقة، مع ضرورة وجود كلمة مرور الجذر لكي تتمكن الحاوية من الإقلاع.
• تعمل حاوية الجسر بنظام ملفات جذر للقراءة فقط مع tmpfs، وتحل قائمة السماح الخاصة بـ CORS محل wildcard، وتغطي ضوابط الانحدار في CI التكوين الثابت والسلوك وقت التشغيل.
لا شيء من ذلك يزيل إدخالًا سبق كتابته في AgentDB. تنصح النشرة الإرشادية مشغّلي أي نسخة مكشوفة بأن يضعوا المنفذين 3001 و27017 خلف جدار حماية فورًا، ويبدّلوا مفاتيح المزوّد، ويدققوا مخزن الأنماط بحثًا عن أي مدخلات محقونة في agentdb_pattern-store ثم يطهّروها، ويدققوا MongoDB بحثًا عن أي تلاعب، ويعيدوا بناء الحاويات من صور نظيفة. تحذيرها مباشر على نحو غير معتاد: "إعادة نشر مصحّحة وحدها لا تُلغي التسميم." ويخلص تقرير Noma إلى الاستنتاج نفسه — تدقيق مخزن الأنماط جزء من المعالجة، أما التصحيح فليس كذلك.
السبب بنيوي وليس ناتجًا عن الإهمال. فمخزن الأنماط الذي يشكّل مخرجات النموذج المستقبلية لا يملك وسيلة للتمييز بين تعليمات مشروعة تعلّمها وبين تعليمات زرعها مهاجم؛ فكلاهما يصل في صورة أنماط، والنظام مُصمم ليثق بها. وهذا يحوّل ثغرة شبكية إلى مشكلة سلامة بيانات ذات تراكم مجهول، ويعني أن السؤال المطروح على المشغّل ليس فقط ما إذا كان المنفذ قابلاً للوصول، بل ماذا تحتفظ الذاكرة الآن.

ما هو ثابت، وما هو غير ثابت
السجل التقني هنا أساسي ومتّسق. تُسمّي النشرة الاستشارية الحزمة المتأثرة (npm ruflo الأقدم من 3.16.3)، والنسخة المُرقّعة، ونقاط النهاية الدقيقة، ومستخدم الحاوية والمنفذين؛ وتصف ملاحظات إصدار المشرف السلسلة نفسها؛ ويقدّم تقرير Noma تفاصيل إثبات المفهوم؛ وتُبلِغ منصات إخبارية مستقلة — The Hacker News وDark Reading في 29 يوليو 2026، وSecurityWeek في 30 يوليو — عن الآلية نفسها دون إضافة تفاصيل متناقضة. وتعيد مذكرة بحثية صادرة عن Cloud Security Alliance بتاريخ 5 أغسطس 2026 سرد التسلسل وتضعه إلى جانب ثغرات سابقة في MCP وتنسيق الوكلاء لا تتطلب مصادقة كانت قد تتبّعتها. ويمنح الأرشيف السجل درجة ثقة A، غير متنازع عليها، ويصنّفه سجلاً بارزًا؛ وتصنيف شدّته للسجل مرتفع، منفصل عن درجة CVSS نفسها.
هناك تفصيل واحد يتعلق بالتحقيم يجدر ذكره بدقة، لأن وثيقتين أساسيتين تختلفان فيه. تحمل GHSA-c4hm-4h84-2cf3 CVSS 10.0 على المتجه AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H — وتغيّر النطاق هو ما يدفعها إلى الحد الأقصى. وتصف نسخة الإشعار نفسها على صفحة إصدار 3.16.3 الدرجة بأنها "CVSS 9.8 critical". وسجل قاعدة بيانات الثغرات الوطنية، الذي جرى التحقق منه في 30 أكتوبر 2026، ونُشر في 9 يوليو 2026 ومُعلَّم بـ Deferred، يحمل تقييم GitHub البالغ 10.0 كمعيار ثانوي، ولا يحمل أي تقييم من إعداد NVD خاص به. لم نعثر على تفسير لسطر 9.8، وهذه المقالة لا تحسم الأمر.
{{1}}أرقام التبني أقل. وصفت Noma Labs المشروع حينها بأن لديه أكثر من 67,000 نجمة على GitHub، ونحو 10 ملايين تنزيل، وحوالي مليون مستخدم نشط؛ ونقلت The Hacker News، كما لخّصتها Cloud Security Alliance، أكثر من 66,500 نجمة. وأرقام التنزيلات والمستخدمين هي أرقام Noma الخاصة وغير موثّقة بشكل مستقل. وكان عدد نجوم المستودع في 30 أكتوبر 2026 هو 80,198 — وهو فحص لمدى انتشار المشروع، وليس مقياسًا لمدى التعرّض، ولم ينشر أي مصدر عدد عمليات النشر التي كانت قابلة للوصول فعليًا من شبكة.{{/1}}

ما لم يثبت هو الجزء الأكثر عرضة للتهويل. فلا Noma ولا المشرف ولا أي جهة إعلامية قرأناها تزعم أن الثغرة استُغلت في الواقع، ولا يسجّل الأرشيف أي ضرر حقيقي لهذا البند. وقد جُرّب نموذج الإثبات لدى Noma على نشر تحكّم فيه الباحثون على EC2، وهو يبيّن ما تسمح به التثبيتات الافتراضية، لا ما عاناه أي نسخة إنتاجية بعينها. ولم يُنشر أي إحصاء لعمليات نشر Ruflo المكشوفة على الإنترنت، ولم ينشر أي مشغّل نتائج تدقيق AgentDB، لذا فعدد المتأثرين وحجم الذاكرة المسمومة القائم كلاهما مجهول. أما نصيحة تحالف أمن السحابة بمعاملة عمليات النشر المكشوفة كاختراقات كاملة فهي موقف مخاطرة يبرّره الاستغلال بلا تفاعل؛ وليست دليلاً على وقوع اختراق.
لماذا يصنفه الأرشيف معلمًا بارزًا
تستند العلامة البارزة الخاصة بالأرشيف إلى شيء أكثر تحديدًا من مجرد الحصول على الدرجة القصوى. فثغرة تنفيذ شيفرة عن بُعد بتقييم CVSS 10.0 في خدمة شائعة ذاتية الاستضافة هي نوع مألوف، وقد وصل الإصلاح هنا خلال 24 ساعة. وما يميّز RufRoot هو أن الاستغلال انتهى داخل خط التعلم الخاص بالذكاء الاصطناعي نفسه، حيث يترك العلاج التقليدي — الترقية، وإعادة النشر، وإغلاق المنفذ — التعليمة المحقونة في موضعها وهي لا تزال تشكّل الإجابات. وتقرأ ملاحظة Cloud Security Alliance هذا الأمر كدراسة حالة لنمط كانت قد وثّقته بالفعل عبر أدوات الوكلاء، بما في ذلك سلسلة نقاط تفتيش LangGraph وسطح AutoGen Studio غير المصادق عليه، وتُجادل بأن الذاكرة الدائمة المستخدمة لتشكيل سلوك الوكيل ينبغي التعامل معها كمخزن بيانات حساس تحت مراقبة النزاهة بدلاً من التعامل معها كذاكرة مؤقتة.
إعادة التأطير هذه هي الخلاصة العملية. الأثر المرئي لهذا الحادث هو تبعية مصحّحة وتنبيه منشور؛ أما الأثر غير المرئي فهو أي نمط قد لا يزال موجودًا في AgentDB الخاصة بالمشغّل، ولا توجد أداة أو بصمة منشورة تميّز سياسة تعلّم مشروعة من سياسة مزروعة. وبالنسبة للمؤسسات التي شغّلت ملف compose الافتراضي خلف شبكة قابلة للوصول، فإن الاستجابة المفيدة هي ذاتها التي يقدّمها كل من Noma والتنبيه: افترض أن المفاتيح قُرئت، وبدّلها، وافحص الذاكرة قبل الوثوق بالإجابات التي تنتجها.
