
PoC لـ CVE-2026-1961 — حقن أوامر في وكيل WebSocket الخاص بـ Foreman (lib/ws_proxy.rb) عبر اسم مضيف مورد حسابي غير معقّم، مما يؤدي إلى تنفيذ تعليمات برمجية عن بُعد (RCE) بصلاحيات مستخدم foreman. تم الإفصاح عنه بمسؤولية وترقيعه.
إثبات مفهوم لثغرة حقن أوامر في وكيل WebSocket الخاص بـ Foreman (lib/ws_proxy.rb)، تم الإفصاح عنها بمسؤولية إلى Red Hat وتم تصحيحها.
يقوم وكيل WebSocket الخاص بـ Foreman بإدراج قيمة host غير المعقّمة، المأخوذة من استجابة API لمزوّد مورد حوسبة (مثل HostSystem.name في VMware vSphere)، مباشرةً داخل أمر shell يُنفَّذ عبر Open3.popen3. يمكن للمهاجم الذي يتحكم في خادم مورد حوسبة تتصل به نسخة Foreman أو ينتحل صفته أن يحقن أوامر shell عشوائية، محققًا تنفيذ تعليمات برمجية عن بُعد بصلاحيات المستخدم foreman عندما يفتح المسؤول وحدة تحكم (Console) لجهاز ظاهري.
يمنح الاستغلال الناجح الوصول إلى بيانات اعتماد قاعدة بيانات Foreman ومفاتيح التشفير، مما يكشف جميع بيانات اعتماد البنية التحتية المخزّنة (vCenter، AWS، مفاتيح SSH، رموز API) ويمكّن من التحرك لاحقًا داخل البنية التحتية المُدارة.
| CVE | CVE-2026-1961 |
| CWE | CWE-78 (حقن أوامر نظام التشغيل) |
| CVSS 3.1 | 8.0 (عالية) - AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H |
| المكوّن المتأثر | lib/ws_proxy.rb |
| الإصدارات المتأثرة | Foreman حتى الإصدار 3.18.0 ضمناً (مؤكد على 3.17.0؛ مسار الكود لم يتغير منذ 2020) |
| تم التصحيح في | Foreman 3.18.1، 3.17.2، 3.16.3 |
| المصادقة المطلوبة | لا شيء (يشغّل المهاجم الخادم الخبيث؛ ويصادق مسؤول Foreman عليه كجزء من سير العمل الطبيعي) |
| تفاعل المستخدم | ينقر المسؤول على Console لجهاز ظاهري (سير العمل الطبيعي) |
| الإشعار الأمني | https://access.redhat.com/security/cve/cve-2026-1961 |
في lib/ws_proxy.rb:44، تُدرَج معلمة host مباشرةً داخل سلسلة أمر shell:
cmd = "websockify --daemon --idle-timeout=#{idle_timeout} --timeout=#{timeout} #{port} #{host}:#{host_port}"
تأتي قيمة host من استجابة API لمورد الحوسبة ولا تُعقَّم أبدًا قبل تمريرها إلى shell عبر Open3.popen3.
ينفّذ malicious_vsphere_server.py واجهة vSphere SOAP API مصغّرة، كافية للتعامل مع المصادقة وتعداد الأجهزة الظاهرية، ويعيد قيمة HostSystem.name مسمومة تحتوي على حمولة من محارف shell الوصفية.
python3 malicious_vsphere_server.py
python3 malicious_vsphere_server.py
VMware<attacker_ip>user / pass)EvilDatacenter)VNCTestVMfind /tmp -name "vsphere_rce.txt" 2>/dev/null
cat /tmp/systemd-private-*/tmp/vsphere_rce.txt
المخرجات المتوقعة: foremanHoussam Sahli (Malleum)
صدر بعد التصحيح، وفقًا للإفصاح المنسّق. يُقدَّم لأغراض اختبار الأمان المصرّح به والأغراض التعليمية فقط. لا تستخدمه ضد أنظمة لا تملكها أو لا تملك إذنًا صريحًا لاختبارها.