Forman: foreman: remote code execution via command injection in websocket proxy
A flaw was found in Foreman. A remote attacker could exploit a command injection vulnerability in Foreman's WebSocket proxy implementation. This vulnerability arises from the system's use of unsanitized hostname values from compute resource providers when constructing shell commands. By operating a malicious compute resource server, an attacker could achieve remote code execution on the Foreman server when a user accesses VM VNC console functionality. This could lead to the compromise of sensitive credentials and the entire managed infrastructure.
- Published
- Mar 26, 2026
- Updated
- Jul 15, 2026
- EPSS
- 1.4% · 72th percentile
- CWE
- CWE-78
Sign in to follow · You’ll be notified if a followed record enters KEV, gets an exploit or is updated.
Report tools
Action score
32
Monitor
Low priority for now.
- CVSS
- 32 / 40 · 8.0 / 10
- CISA KEV
- 0 / 30 · Not listed
- EPSS
- 0 / 30 · 1.4%
CISA SSVC decision
- Exploitation
- proof of concept
- Automatable
- no
- Technical impact
- total
Vulnrichment: CISA's decision-tree inputs.
CNA vs NVD score
- NVD
- —
- CNA · redhat
- 8.0
- NVD has not scored this yet; the score shown is the CNA’s.
The score given by the assigning authority versus NVD’s independent score. A gap means the severity is contested.
Noroxi analysis
No Noroxi analysis for this record yet
We don't hand-write analysis for the hundreds of thousands of vulnerabilities in the database; that wouldn't be honest. For notable, high-impact vulnerabilities our team writes the mechanism, detection and remediation steps.
We use this product, ask for helpAffected systems
| Vendor | Product | CPE |
|---|---|---|
| satellite utils | 6.16 | cpe:2.3:redhat:satellite_utils:6.16 |
| satellite maintenance | 6.17 | cpe:2.3:redhat:satellite_maintenance:6.17 |
| satellite utils | 6.17 | cpe:2.3:redhat:satellite_utils:6.17 |
| satellite utils | 6.18 | cpe:2.3:redhat:satellite_utils:6.18 |
| satellite | 6 | cpe:2.3:redhat:satellite:6 |
Versions reported by the vendor
Affected version ranges reported by the assigning authority (redhat). Independent of NVD's CPE analysis and usually ahead of it.
Red Hat Red Hat Satellite 6
- all versionsaffected
Red Hat Red Hat Satellite 6.16 for RHEL 8
- 0:3.12.0.14-1.el8sat and laternot affected · rpm
Red Hat Red Hat Satellite 6.16 for RHEL 9
- 0:3.12.0.14-1.el9sat and laternot affected · rpm
Red Hat Red Hat Satellite 6.17 for RHEL 9
- 0:3.14.0.14-1.el9sat and laternot affected · rpm
- 0:0.1.23-0.3.el9pc and laternot affected · rpm
- 0:1.2.0-0.1.el9pc and laternot affected · rpm
- 0:4.2.28-0.1.el9pc and laternot affected · rpm
- 0:2.22.3-1.el9pc and laternot affected · rpm
- 0:3.27.10-2.el9pc and laternot affected · rpm
- 0:1.5.1-1.el9sat and laternot affected · rpm
- 0:0.4.3-1.el9sat and laternot affected · rpm
- 0:4.16.0.14-1.el9sat and laternot affected · rpm
- 0:0.13.0-1.el9sat and laternot affected · rpm
Red Hat Red Hat Satellite 6.18 for RHEL 9
- 0:3.16.0.12-1.el9sat and laternot affected · rpm
Package-level exposure
OSV and GitHub Advisory data: ecosystem, package and range. SBOM matching uses this table.
| Ecosystem | Package | Affected range | Fix |
|---|---|---|---|
| Red Hat:satellite_capsule:6.16::el8 | foreman | before 0:3.12.0.14-1.el8sat | 0:3.12.0.14-1.el8sat |
| Red Hat:satellite_capsule:6.16::el8 | foreman-debug | before 0:3.12.0.14-1.el8sat | 0:3.12.0.14-1.el8sat |
| Red Hat:satellite_capsule:6.16::el8 | foreman-pcp | before 0:3.12.0.14-1.el8sat | 0:3.12.0.14-1.el8sat |
| Red Hat:satellite_capsule:6.16::el8 | python-brotli | before 0:1.2.0-0.1.el8pc | 0:1.2.0-0.1.el8pc |
| Red Hat:satellite_capsule:6.16::el8 | python-brotli-debugsource | before 0:1.2.0-0.1.el8pc | 0:1.2.0-0.1.el8pc |
| Red Hat:satellite_capsule:6.16::el8 | python-django | before 0:4.2.28-0.1.el8pc | 0:4.2.28-0.1.el8pc |
| Red Hat:satellite_capsule:6.16::el8 | python3.11-brotli | before 0:1.2.0-0.1.el8pc | 0:1.2.0-0.1.el8pc |
| Red Hat:satellite_capsule:6.16::el8 | python3.11-brotli-debuginfo | before 0:1.2.0-0.1.el8pc | 0:1.2.0-0.1.el8pc |
| Red Hat:satellite_capsule:6.16::el8 | python3.11-django | before 0:4.2.28-0.1.el8pc | 0:4.2.28-0.1.el8pc |
| Red Hat:satellite_capsule:6.16::el8 | rubygem-rubyipmi | before 0:0.13.0-0.1.el8sat | 0:0.13.0-0.1.el8sat |
| Red Hat:satellite_capsule:6.16::el9 | foreman | before 0:3.12.0.14-1.el9sat | 0:3.12.0.14-1.el9sat |
| Red Hat:satellite_capsule:6.16::el9 | foreman-debug | before 0:3.12.0.14-1.el9sat | 0:3.12.0.14-1.el9sat |
| Red Hat:satellite_capsule:6.16::el9 | foreman-pcp | before 0:3.12.0.14-1.el9sat | 0:3.12.0.14-1.el9sat |
| Red Hat:satellite_capsule:6.16::el9 | rubygem-rubyipmi | before 0:0.13.0-0.1.el9sat | 0:0.13.0-0.1.el9sat |
| Red Hat:satellite_capsule:6.17::el9 | foreman | before 0:3.14.0.14-1.el9sat | 0:3.14.0.14-1.el9sat |
| Red Hat:satellite_capsule:6.17::el9 | foreman-debug | before 0:3.14.0.14-1.el9sat | 0:3.14.0.14-1.el9sat |
| Red Hat:satellite_capsule:6.17::el9 | foreman-pcp | before 0:3.14.0.14-1.el9sat | 0:3.14.0.14-1.el9sat |
| Red Hat:satellite_capsule:6.17::el9 | libcomps | before 0:0.1.23-0.3.el9pc | 0:0.1.23-0.3.el9pc |
| Red Hat:satellite_capsule:6.17::el9 | libcomps-debuginfo | before 0:0.1.23-0.3.el9pc | 0:0.1.23-0.3.el9pc |
| Red Hat:satellite_capsule:6.17::el9 | libcomps-debugsource | before 0:0.1.23-0.3.el9pc | 0:0.1.23-0.3.el9pc |
| Red Hat:satellite_capsule:6.17::el9 | python-brotli | before 0:1.2.0-0.1.el9pc | 0:1.2.0-0.1.el9pc |
| Red Hat:satellite_capsule:6.17::el9 | python-brotli-debugsource | before 0:1.2.0-0.1.el9pc | 0:1.2.0-0.1.el9pc |
| Red Hat:satellite_capsule:6.17::el9 | python-django | before 0:4.2.28-0.1.el9pc | 0:4.2.28-0.1.el9pc |
| Red Hat:satellite_capsule:6.17::el9 | python-pulp-container | before 0:2.22.3-1.el9pc | 0:2.22.3-1.el9pc |
+75
Same product
red hat: all recordsOther highest-scoring records for the same primary product.
- CVE-2026-1531Foreman-kubevirt: foreman_kubevirt: man-in-the-middle due to insecure default ssl verification32Monitor
- CVE-2026-1530Fog-kubevirt: fog-kubevirt: man-in-the-middle vulnerability due to disabled certificate validation32Monitor
- CVE-2025-10990Rexml: rexml: denial of service via inefficient regex parsing30Monitor
- CVE-2026-12515Katello: missing repository authorization in content_uploads exposes cross-product content existence17Monitor
Remediation
Which version to upgrade to
Fix versions compiled from the vendor, package registries and Microsoft. Verify the vendor's note before upgrading.
| Product / package | Fixed version | Source |
|---|---|---|
| red hat:foreman | 0:3.16.0.12-1.el9sat · Red Hat:satellite_capsule:6.18::el9 | Package registry (OSV) |
| red hat:foreman-cli | 0:3.16.0.12-1.el9sat · Red Hat:satellite_utils:6.18::el9 | Package registry (OSV) |
| red hat:foreman-debug | 0:3.16.0.12-1.el9sat · Red Hat:satellite_capsule:6.18::el9 | Package registry (OSV) |
| red hat:foreman-dynflow-sidekiq | 0:3.16.0.12-1.el9sat · Red Hat:satellite:6.18::el9 | Package registry (OSV) |
| red hat:foreman-ec2 | 0:3.16.0.12-1.el9sat · Red Hat:satellite:6.18::el9 | Package registry (OSV) |
| red hat:foreman-journald | 0:3.16.0.12-1.el9sat · Red Hat:satellite:6.18::el9 | Package registry (OSV) |
| red hat:foreman-libvirt | 0:3.16.0.12-1.el9sat · Red Hat:satellite:6.18::el9 | Package registry (OSV) |
| red hat:foreman-openstack | 0:3.16.0.12-1.el9sat · Red Hat:satellite:6.18::el9 | Package registry (OSV) |
| red hat:foreman-pcp | 0:3.16.0.12-1.el9sat · Red Hat:satellite_capsule:6.18::el9 | Package registry (OSV) |
| red hat:rubygem-foreman_kubevirt | 0:0.4.3-1.el9sat · Red Hat:satellite:6.18::el9 | Package registry (OSV) |
| red hat:rubygem-rubyipmi | 0:0.13.0-1.el9sat · Red Hat:satellite_capsule:6.18::el9 | Package registry (OSV) |
| red hat:yggdrasil-worker-forwarder | 0:0.0.3-4.el9sat · Red Hat:satellite:6.18::el9 | Package registry (OSV) |
Exploit status
Proof of concept available
A public proof of concept or detection signature exists. Exploit knowledge is out there; don't delay patching.
Evidence
- Proof-of-concept repository on GitHub ×1
Noroxi does not host or link to exploit code. Metasploit module names and Nuclei template ids are shown (names, not code); Exploit-DB entries and PoC repositories are given as counts only.
| Source | Kind | Date |
|---|---|---|
| Proof-of-concept repository on GitHub | stars:0 | 2026-09-17 |
Research context
For pentesters and researchers: attack profile, score disagreement, timeline, patch commits, credits, variant and chain candidates, bug bounty scope. All derived from existing data; no exploit code.
Timeline
From publication to today: proof of concept, Metasploit module, CISA KEV and fix record. Dates are as reported by the sources.
- Published
- First PoC+175 d
- TodayOct 2, 2026+190 d
FIRST EPSS daily score; only changes of 0.01 or more are recorded (step chart).
Patch and commit links
Commit, PR and diff links among the references. A starting point for patch-diffing and variant hunting; fixes, not exploits.
No commit or PR link among the references.
Credits
All researchersFinders, reporters and analysts named in the CNA record. Click a name for that researcher’s other records.
Variant candidates
Same product, same weakness class, within 18 months. If the patch missed the root cause, the sibling bug is here.
No nightly-computed relations.
Chain candidates
An authentication bypass and a privilege-requiring bug in the same product, published close together: combined they may become an unauthenticated path.
—
Bug bounty scope
No known public program.
Source: bounty-targets-data (public HackerOne, Bugcrowd, Intigriti, YesWeHack listings).
Technical details
Attack conditions
- Anyone who can reach it over the internet can trigger it.
- A low-privileged account is enough.
- A user must open a link or visit a page.
- No special conditions are required; it is repeatable.
If successful
- Confidentiality
- high · data can be read
- Integrity
- high · data or configuration can be modified
- Availability
- high · the service can be disrupted
- Attack vector
- Network
- Attack complexity
- Low
- Privileges required
- Low
- User interaction
- Required
- Scope
- Unchanged
- Confidentiality impact
- High
- Integrity impact
- High
- Availability impact
- High
Weakness class (CWE)
CWE-78 · Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
nvd-secondary
Root cause
User input is inserted as text into a shell command. The shell may interpret special characters in the input as part of the command.
The bug in code
The whole CWE-78 classA representative example of this vulnerability class. Not the vendor's source code; it shows the faulty pattern and its fix.
Vulnerable
const host = req.body.host;exec("ping -c 1 " + host, onResult);Fixed
const host = req.body.host;if (!/^[a-z0-9.-]{1,253}$/i.test(host)) return res.sendStatus(400);execFile("ping", ["-c", "1", host], onResult);Attack context
MITRE CAPEC attack patterns and ATT&CK techniques for this weakness class (CWE). A starting point for detection rules and threat hunting.
Attack patterns (CAPEC)
- Command Line Execution through SQL InjectionCAPEC-108likelihood: Low · Very High
- Command DelimitersCAPEC-15likelihood: High · High
- Exploiting Multiple Input Interpretation LayersCAPEC-43likelihood: Medium · High
- Argument InjectionCAPEC-6likelihood: High · High
- OS Command InjectionCAPEC-88likelihood: High · High
ATT&CK techniques
—
Change log
- Fix✗ → ✓
For records you follow, these changes also arrive as notifications. →
References
- access.redhat.com/errata/RHSA-2026:5968
- access.redhat.com/errata/RHSA-2026:5970
- access.redhat.com/errata/RHSA-2026:5971
- access.redhat.com/security/cve/CVE-2026-1961
- bugzilla.redhat.com/show_bug.cgi?id=2437036
- www.openwall.com/lists/oss-security/2026/03/27/3
- security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-1961.json
Vendor advisories and official records. Exploit/PoC links are deliberately left out.