
CVE-2026-1961 के लिए PoC — Foreman के WebSocket proxy (lib/ws_proxy.rb) में unsanitized compute resource hostname के माध्यम से command injection, जिससे foreman user के रूप में RCE होता है। जिम्मेदारीपूर्वक disclosed और patched।
Foreman के WebSocket प्रॉक्सी (lib/ws_proxy.rb) में कमांड इंजेक्शन कमज़ोरी के लिए प्रूफ-ऑफ-कॉन्सेप्ट, जिसे ज़िम्मेदारीपूर्वक Red Hat को सूचित किया गया और पैच कर दिया गया।
Foreman का WebSocket प्रॉक्सी एक असैनिटाइज़्ड host मान को, जो किसी कंप्यूट रिसोर्स प्रोवाइडर की API प्रतिक्रिया (जैसे VMware vSphere HostSystem.name) से प्राप्त होता है, सीधे Open3.popen3 के माध्यम से निष्पादित एक शेल कमांड में इंटरपोलेट करता है। एक हमलावर जो उस कंप्यूट रिसोर्स सर्वर को नियंत्रित या स्पूफ करता है जिससे कोई Foreman इंस्टेंस कनेक्ट होता है, मनमानी शेल कमांड इंजेक्ट कर सकता है, और जब कोई एडमिनिस्ट्रेटर किसी VM का Console खोलता है तो foreman उपयोगकर्ता के रूप में रिमोट कोड एग्ज़िक्यूशन प्राप्त कर सकता है।
सफल शोषण से Foreman के डेटाबेस क्रेडेंशियल्स और एन्क्रिप्शन कुंजियों तक पहुँच मिलती है, जिससे सभी संग्रहीत इंफ्रास्ट्रक्चर क्रेडेंशियल्स (vCenter, AWS, SSH कुंजियाँ, API टोकन) उजागर होते हैं और प्रबंधित इंफ्रास्ट्रक्चर में आगे पिवोटिंग संभव हो जाती है।
| CVE | CVE-2026-1961 |
| CWE | CWE-78 (OS Command Injection) |
| CVSS 3.1 | 8.0 (High) - 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 एडमिनिस्ट्रेटर सामान्य कार्यप्रवाह के हिस्से के रूप में उससे प्रमाणीकरण करता है) |
| उपयोगकर्ता इंटरैक्शन | एडमिनिस्ट्रेटर किसी VM पर Console पर क्लिक करता है (सामान्य कार्यप्रवाह) |
| सलाह | https://access.redhat.com/security/cve/cve-2026-1961 |
lib/ws_proxy.rb:44 पर, host पैरामीटर को सीधे एक शेल कमांड स्ट्रिंग में इंटरपोलेट किया जाता है:
cmd = "websockify --daemon --idle-timeout=#{idle_timeout} --timeout=#{timeout} #{port} #{host}:#{host_port}"
host कंप्यूट रिसोर्स API प्रतिक्रिया से आता है और Open3.popen3 के माध्यम से शेल को पास किए जाने से पहले कभी सैनिटाइज़ नहीं किया जाता।
malicious_vsphere_server.py एक न्यूनतम vSphere SOAP API लागू करता है, जो प्रमाणीकरण और VM एन्यूमरेशन को संभालने के लिए पर्याप्त है, और एक ज़हरीला HostSystem.name मान लौटाता है जिसमें शेल मेटाकैरेक्टर पेलोड होता है।
python3 malicious_vsphere_server.py
python3 malicious_vsphere_server.py
VMware<attacker_ip>user / pass)EvilDatacenter लोड होता है)VNCTestVM खोजेंfind /tmp -name "vsphere_rce.txt" 2>/dev/null
cat /tmp/systemd-private-*/tmp/vsphere_rce.txt
अपेक्षित आउटपुट: foremanHoussam Sahli (Malleum)
पैच के बाद जारी, समन्वित प्रकटीकरण का पालन करते हुए। केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उद्देश्यों के लिए प्रदान किया गया। उन सिस्टमों के विरुद्ध उपयोग न करें जो आपके स्वामित्व में नहीं हैं या जिनका परीक्षण करने के लिए आपके पास स्पष्ट अनुमति नहीं है।