
PoC لـ CVE-2026-1961 — حقن أوامر في وكيل WebSocket الخاص بـ Foreman (lib/ws_proxy.rb) عبر اسم مضيف مورد حسابي غير معقّم، مما يؤدي إلى تنفيذ تعليمات برمجية عن بُعد (RCE) بصلاحيات مستخدم foreman. تم الإفصاح عنه بمسؤولية وترقيعه.
إثبات مفهوم لثغرة حقن أوامر في وكيل WebSocket الخاص بـ Foreman (lib/ws_proxy.rb)، تم الإفصاح عنها بمسؤولية إلى Red Hat وتم تصحيحها.
يقوم وكيل WebSocket الخاص بـ Foreman بإدراج قيمة host غير المعقّمة — المستمدة من استجابة API لمزوّد مورد حوسبة (مثل VMware vSphere HostSystem.name) — مباشرةً في أمر 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)
صدر بعد التصحيح، وفقاً للإفصاح المنسّق. يُقدَّم لأغراض اختبار الأمان المصرّح به والأغراض التعليمية فقط. لا تستخدمه ضد أنظمة لا تملكها أو لا تملك إذناً صريحاً باختبارها.