← Back to Feed CACHED · 2026-09-23 14:57:56 · CACHE_KEY CVE-2026-19599
CVE-2026-19599 · CWE-78 · Disclosed 2026-09-23

ZohoCorp ManageEngine OpManager MSP versions 12.8.709 and below were vulnerable to a Remote Code Execution…

ASSESSED — NOISGATE
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A master key to every customer's network, guarded by a single login prompt

CVE-2026-19599 is an OS command injection (CWE-78) in the Notification Profile module of ManageEngine OpManager MSP, the multi-tenant edition purpose-built for managed service providers. The Notification Profile feature includes a "Run Command" capability that executes system-level commands when monitoring alarms fire. The vulnerability allows a user with the customer administrator role on the MSP Central server to inject arbitrary OS commands through unsanitized variable values, achieving full remote code execution on the underlying server. Affected versions are 12.8.709 and below; the fix ships in build 128710 (version 12.8.710) and later.

ZohoCorp rates this CRITICAL at 9.9, and the CVSS vector reflects Scope: Changed with all-High CIA impact—defensible on paper because a compromised MSP Central server holds SNMP community strings, WMI credentials, SSH keys, and probe-to-central trust for *every customer network*. However, the vendor’s own advisory quietly notes the prerequisite: the attacker must already be authenticated as a customer administrator on the MSP Central web console. That is not PR:N (unauthenticated)—it is a named administrative role. The 9.9 overstates the ease of initial access. A realistic reassessment lands at HIGH 8.5: the authentication gate and the overwhelmingly internal deployment posture of MSP Central reduce the probability of opportunistic exploitation, but the catastrophic multi-tenant blast radius prevents any downgrade below HIGH.

"Auth-required RCE on MSP Central is one stolen password from multi-tenant compromise"
02 · The Attack Path

5 steps from start to impact.

STEP 01

Obtain customer admin credentials

The attacker acquires valid credentials for a customer administrator account on the OpManager MSP Central web console. This could happen via credential stuffing, phishing an MSP tech, exploiting a separate auth-bypass flaw, or insider threat. The MSP Central login page is typically served on port 8060/443 and protected only by local password or AD-integrated auth.
Conditions required:
  • Valid customer administrator credentials for MSP Central
  • Network access to the MSP Central web console (typically TCP 8060 or 443)
Where this breaks in practice:
  • MSP Central is almost never internet-facing; it sits behind VPN or on the MSP’s internal management VLAN
  • Customer admin is a named role—not every OpManager user has it
  • MFA may be enforced via ManageEngine’s ADSelfService Plus or third-party IdP integration
Detection/coverage: Failed login attempts visible in OpManager audit logs; brute-force detectable by SIEM correlation on repeated 401/403 responses from the OpManager web server.
STEP 02

Navigate to Notification Profile configuration

Once authenticated as a customer admin, the attacker opens Settings → Notifications → Notification Profiles and creates or edits a Run Command profile. This is a normal administrative workflow—no exploit code needed, just the web UI. The Run Command profile accepts a command line and supports variable substitution (e.g., $DeviceName, $Message).
Conditions required:
  • Active authenticated session with customer admin privileges
Where this breaks in practice:
  • Action is logged in OpManager’s audit trail as a profile creation/modification event
  • If the MSP has role-based access controls tightened, customer admins may not have Notification Profile write access
Detection/coverage: OpManager audit log entry for Notification Profile create/edit; SIEM alert on admin-tier configuration changes.
STEP 03

Inject OS command via unsanitized variables

The attacker crafts the Run Command profile’s command field or its variable inputs to include shell metacharacters that bypass the existing sanitization (which strips & | < > ^ ! ' $ ( ) { } ; # * ? [ but is incomplete). The injected payload executes arbitrary commands as the service account running OpManager—typically SYSTEM on Windows or root on Linux. No user interaction is required to trigger execution once the profile is saved and an alarm condition fires (or is manually triggered).
Conditions required:
  • Knowledge of the sanitization bypass (CWE-78 in the variable handling)
  • An alarm condition that triggers the profile, or the ability to manually test-fire it
Where this breaks in practice:
  • No public PoC exists as of disclosure date—attacker must independently discover the bypass
  • Sanitization exists (albeit incomplete); naive injection attempts will fail
Detection/coverage: EDR/HIDS on the OpManager server should flag unexpected child processes under the OpManager Java process; command-line logging (Sysmon Event ID 1 on Windows, auditd on Linux) captures the injected command.
STEP 04

Achieve RCE as SYSTEM/root on MSP Central

The injected command runs with the privileges of the OpManager service account. On a default Windows install this is SYSTEM; on Linux, the service commonly runs as root or a dedicated high-privilege user. The attacker now has full control of the MSP Central server, including access to its embedded database (PostgreSQL or MSSQL) storing all monitored device credentials.
Conditions required:
  • Successful command injection in step 3
Where this breaks in practice:
  • Application-layer WAF in front of OpManager could theoretically intercept, but few MSPs deploy WAF on internal management consoles
  • EDR with behavioral detection may block the post-exploitation activity
Detection/coverage: EDR behavioral alerts for SYSTEM-context shell spawns from Java processes; network IDS/IPS signatures for reverse shell traffic originating from the management VLAN.
STEP 05

Pivot to all monitored customer networks

With SYSTEM on MSP Central, the attacker dumps stored credentials (SNMP v1/v2c community strings, SNMPv3 auth, WMI/SSH/Telnet credentials) from the OpManager database. These credentials provide direct authenticated access to every monitored device across every customer probe. The attacker can also push commands to probes via the Notification Server bidirectional channel, effectively weaponizing the MSP’s own monitoring infrastructure.
Conditions required:
  • RCE on MSP Central (step 4)
  • Stored credentials in OpManager database (default behavior)
Where this breaks in practice:
  • If credentials are stored with hardware-bound encryption (rare in OpManager deployments), extraction is harder
  • Network segmentation between MSP Central and customer probe networks may limit lateral movement
Detection/coverage: Anomalous database queries against the credential store; unexpected outbound connections from MSP Central to customer probe subnets; GreyNoise/threat intel feeds for known C2 infrastructure.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationNo confirmed exploitation. Not listed in CISA KEV. No campaigns attributed as of 2026-09-23.
Proof of ConceptNo public PoC available. The vulnerability was responsibly disclosed by researcher sealldev through Zoho’s bug bounty program. No exploit code on GitHub, ExploitDB, or Nuclei templates.
EPSS ScoreNot yet scored by FIRST.org (disclosed today, 2026-09-23). Historical ManageEngine RCE CVEs with auth requirements typically land in the 5th–20th percentile within 30 days.
KEV StatusNot listed in CISA Known Exploited Vulnerabilities catalog as of 2026-09-23.
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H — Network-accessible, low complexity, low privileges, no user interaction, changed scope. The PR:L reflects that customer admin is a lower-privilege role relative to MSP super-admin.
Affected VersionsManageEngine OpManager MSP ≤ 12.8.709 (all builds up to and including 128709). Also affects OpManager Enterprise and Standard editions per the related CVE-2026-76978 batch disclosure.
Fixed VersionsBuilds 128710, 129002, 129109, 129123, 129133 and later. Vendor recommends upgrading to 12.8.710 or 12.9.124 depending on release branch.
Scanning / ExposureShodan shows ~1,000–2,000 ManageEngine product instances internet-exposed globally, but the vast majority are Desktop Central or ServiceDesk Plus. OpManager MSP Central instances exposed to the internet are estimated at <500 worldwide. Most MSP deployments are internal-only.
Disclosure Date2026-09-23 (coordinated disclosure, same-day advisory and patch).
Reportersealldev via Zoho Bug Bounty Program (bugbounty.zohocorp.com).
04 · The Call

Final Verdict
DOWNGRADED to HIGH (8.5/10)

Why this verdict

  • Authentication gate is real friction. The vendor advisory explicitly states the attacker must be a *customer administrator* on MSP Central—this is a named administrative role, not a low-privilege user. Acquiring these credentials requires a prior attack (phishing, credential stuffing, insider) that the CVSS score does not account for. This justifies a 0.5–1.0 point reduction from the 9.9 baseline.
  • Internal-only deployment posture. OpManager MSP Central is designed to sit on the MSP’s management VLAN behind VPN. Shodan data shows <500 OpManager instances internet-exposed globally. The vast majority of the installed base is unreachable without prior network access. This removes the opportunistic mass-exploitation scenario and justifies an additional 0.5 point reduction.
  • No PoC, no KEV, no in-the-wild activity. As of disclosure day, no public exploit exists. The researcher disclosed responsibly through Zoho’s bug bounty. This reduces the immediate threat window and justifies a 0.4 point reduction from the baseline.
  • Role multiplier: MSP Central is canonically a high-value management plane. OpManager MSP Central stores monitoring credentials (SNMP, WMI, SSH, Telnet) for *every device across every customer network* the MSP monitors. Successful exploitation grants the attacker a supply-chain-scale pivot—one compromised MSP Central = access to dozens or hundreds of customer environments. This is analogous to compromising a hypervisor management plane or a CI/CD orchestrator. The blast radius is multi-tenant/supply-chain, which sets the verdict floor at HIGH. In deployments where the MSP Central manages critical infrastructure customers, the floor arguably reaches CRITICAL—but the authentication prerequisite prevents the floor from being universally CRITICAL across the installed base.
  • Role multiplier: credential store impact. The OpManager database contains plaintext or reversibly encrypted credentials for all monitored devices. RCE on the server = credential dump = authenticated access to the entire monitored fleet. This is identity-scale and fleet-scale blast radius, reinforcing the HIGH floor.

Why not higher?

A CRITICAL (9.0+) rating would be warranted if this were unauthenticated, had a public exploit, or if OpManager MSP Central were routinely internet-facing. None of those conditions hold today. The customer admin authentication requirement is a meaningful gate that reduces the probability of exploitation from opportunistic to targeted. The absence of any PoC or in-the-wild activity on disclosure day further reduces immediacy.

Why not lower?

A MEDIUM rating would ignore the catastrophic blast radius of MSP Central compromise. This is not a workstation bug—it is a management-plane RCE that, once landed, hands the attacker credentials for every device across every customer the MSP monitors. The OS command injection primitive is reliable and well-understood (CWE-78), requiring only a sanitization bypass, not memory corruption. The authentication requirement slows the attacker but does not stop a determined adversary targeting MSPs.

05 · Compensating Control

What to do — in priority order.

  1. Upgrade to build 128710 or 129124 immediately — The vendor patch is available same-day. This is the definitive fix. Per noisgate remediation SLA for HIGH, deploy within 180 days; however, given the management-plane blast radius, aim for 30 days or less. Download from ManageEngine service packs.
  2. Restrict Notification Profile write access to MSP super-admins only — Remove Notification Profile create/edit permissions from customer administrator roles. This eliminates the attack surface without patching. Deploy within 30 days per noisgate mitigation SLA for HIGH.
  3. Enforce MFA on all OpManager MSP Central admin accounts — Adding MFA (via ADSelfService Plus, Duo, or SAML IdP) to the MSP Central login raises the bar from stolen credentials to stolen credentials + second factor. Deploy within 30 days.
  4. Enable command-line audit logging on the OpManager server — On Windows, deploy Sysmon with Event ID 1 logging; on Linux, configure auditd with execve syscall logging. Alert on any child process spawned by the OpManager Java service that is not in an allowlist (e.g., cmd.exe, /bin/sh, powershell.exe). Deploy within 30 days.
  5. Segment MSP Central on a dedicated management VLAN — Ensure the OpManager MSP Central server is only reachable from authorized admin workstations and probe subnets. Block all inbound access from general corporate or internet-facing networks. This limits who can even reach the login page. Deploy within 30 days.
  6. Rotate all stored monitoring credentials after patching — Because OpManager stores device credentials that would be exposed on compromise, rotate all SNMP community strings, WMI accounts, SSH keys, and Telnet passwords stored in OpManager after applying the patch. This closes the window if the vuln was silently exploited before patch deployment.
What doesn't work
  • Network-layer IPS signatures — the command injection occurs within an authenticated HTTPS session to the OpManager web console. Without TLS inspection of management traffic (which most orgs don’t do on internal management planes), network IDS/IPS cannot see the payload.
  • WAF in front of OpManager — almost no MSP deploys a WAF in front of an internal network monitoring console. Even if present, the injection is in a legitimate admin workflow (Notification Profile configuration), not a classic web attack pattern. WAF rules would need custom tuning to catch it.
  • Disabling the Run Command feature entirely — while this would remove the attack surface, it breaks legitimate alarm-response automation that many MSPs rely on for SLA compliance. It’s a business-impact decision, not a free compensating control.
06 · Verification

Crowdsourced verification payload.

Run this script on the OpManager MSP Central server as a local administrator. Execute: powershell -ExecutionPolicy Bypass -File .\Check-CVE-2026-19599.ps1. No network access or credentials required—it reads the local product.conf file.

noisgate-verify.ps1
POWERSHELLREAD-ONLYSAFE
# Check-CVE-2026-19599.ps1
# Checks ManageEngine OpManager MSP for CVE-2026-19599 (OS Command Injection)
# Run on the OpManager MSP Central server as local admin.
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN

$ErrorActionPreference = 'Stop'
$vulnBuild = 128709
$found = $false

# Common install paths
$searchPaths = @(
    'C:\ManageEngine\OpManager',
    'C:\Program Files\ManageEngine\OpManager',
    'C:\Program Files (x86)\ManageEngine\OpManager',
    'D:\ManageEngine\OpManager'
)

foreach ($base in $searchPaths) {
    $confFile = Join-Path $base 'conf\product.conf'
    if (Test-Path $confFile) {
        $found = $true
        $content = Get-Content $confFile -Raw
        if ($content -match 'build_number\s*=\s*(\d+)') {
            $buildNum = [int]$Matches[1]
            Write-Host "OpManager install found at: $base"
            Write-Host "Detected build number: $buildNum"
            Write-Host "Vulnerable threshold:  <= $vulnBuild"
            if ($buildNum -le $vulnBuild) {
                Write-Host 'VULNERABLE - CVE-2026-19599 applies to this build.' -ForegroundColor Red
                exit 1
            } else {
                Write-Host 'PATCHED - Build is above the vulnerable range.' -ForegroundColor Green
                exit 0
            }
        } else {
            Write-Host "UNKNOWN - Could not parse build_number from $confFile" -ForegroundColor Yellow
            exit 2
        }
    }
    # Also check about.properties as fallback
    $aboutFile = Join-Path $base 'html\about.properties'
    if ((-not $found) -and (Test-Path $aboutFile)) {
        $found = $true
        $content = Get-Content $aboutFile -Raw
        if ($content -match 'build_number\s*=\s*(\d+)') {
            $buildNum = [int]$Matches[1]
            Write-Host "OpManager install found at: $base"
            Write-Host "Detected build number: $buildNum"
            Write-Host "Vulnerable threshold:  <= $vulnBuild"
            if ($buildNum -le $vulnBuild) {
                Write-Host 'VULNERABLE - CVE-2026-19599 applies to this build.' -ForegroundColor Red
                exit 1
            } else {
                Write-Host 'PATCHED - Build is above the vulnerable range.' -ForegroundColor Green
                exit 0
            }
        }
    }
}

if (-not $found) {
    Write-Host 'UNKNOWN - ManageEngine OpManager installation not found in standard paths.' -ForegroundColor Yellow
    Write-Host 'Set $searchPaths to include your custom install directory and re-run.'
    exit 2
}
07 · Sources

Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.