
PoC per CVE-2026-1961 — command injection nel proxy WebSocket di Foreman (lib/ws_proxy.rb) tramite hostname di compute resource non sanificato, che porta a RCE come utente foreman. Divulgato in modo responsabile e corretto.
Proof-of-concept per una vulnerabilità di command injection nel proxy WebSocket di Foreman (lib/ws_proxy.rb), divulgata in modo responsabile a Red Hat e corretta.
Il proxy WebSocket di Foreman interpola un valore host non sanificato — proveniente dalla risposta API di un provider di compute resource (ad es. VMware vSphere HostSystem.name) — direttamente in un comando shell eseguito tramite Open3.popen3. Un attaccante che controlla o spoofa un server di compute resource a cui un'istanza Foreman si connette può iniettare comandi shell arbitrari, ottenendo l'esecuzione di codice remoto come utente foreman quando un amministratore apre la Console di una VM.
Lo sfruttamento riuscito garantisce l'accesso alle credenziali del database di Foreman e alle chiavi di cifratura, esponendo tutte le credenziali di infrastruttura memorizzate (vCenter, AWS, chiavi SSH, token API) e consentendo ulteriori movimenti laterali nell'infrastruttura gestita.
In lib/ws_proxy.rb:44, il parametro host viene interpolato direttamente in una stringa di comando shell:
cmd = "websockify --daemon --idle-timeout=#{idle_timeout} --timeout=#{timeout} #{port} #{host}:#{host_port}"
host proviene dalla risposta API del compute resource e non viene mai sanificato prima di essere passato a una shell tramite Open3.popen3.
malicious_vsphere_server.py implementa una API SOAP vSphere minimale — sufficiente a gestire l'autenticazione e l'enumerazione delle VM — e restituisce un valore HostSystem.name avvelenato contenente un payload con metacaratteri 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)
Rilasciato dopo la patch, seguendo la divulgazione coordinata. Fornito esclusivamente per test di sicurezza autorizzati e scopi educativi. Non utilizzare contro sistemi di cui non si è proprietari o per cui non si dispone di esplicita autorizzazione al test.
| 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 |
| Componente interessato | lib/ws_proxy.rb |
| Versioni interessate | Foreman fino alla 3.18.0 inclusa (confermato sulla 3.17.0; percorso di codice invariato dal 2020) |
| Corretto in | Foreman 3.18.1, 3.17.2, 3.16.3 |
| Autenticazione richiesta | Nessuna (l'attaccante esegue il server malevolo; l'amministratore Foreman si autentica ad esso come parte del normale flusso di lavoro) |
| Interazione utente | L'amministratore clicca Console su una VM (flusso di lavoro normale) |
| Advisory | https://access.redhat.com/security/cve/cve-2026-1961 |