CVE-2020-15644
CVE-2020-15644 Threat Intelligence Report
Priority Level: HIGH
Report Date: October 2024
Executive Summary
CVE-2020-15644 is a high-severity (CVSS 8.8) arbitrary code execution vulnerability affecting Marvell QConvergeConsole version 5.5.0.64. The flaw exists in the GWTTestServiceImpl class within the setAppFileBytes method, where improper validation of user-supplied file paths allows authenticated remote attackers to write arbitrary files to the filesystem. Successful exploitation results in code execution with SYSTEM privileges on the underlying host. The vulnerability has not been patched, and the authentication requirement can be bypassed, increasing the risk to exposed instances.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The vulnerability resides in the GWTTestServiceImpl class, specifically within the setAppFileBytes method, which is part of the Google Web Toolkit (GWT) remote procedure call (RPC) implementation used by Marvell QConvergeConsole. QConvergeConsole is a centralized management application for Marvell (formerly QLogic) Fibre Channel and converged network adapters, providing configuration, monitoring, and firmware update capabilities through a web-based interface.
The root cause of the vulnerability is a path traversal issue (CWE-22) combined with a lack of proper path validation before the application performs file write operations. The setAppFileBytes method accepts a user-supplied file path and writes byte data to that location. Because the application does not validate that the supplied path remains within an intended directory (such as an upload or temp directory), an attacker can manipulate the path parameter to traverse outside the intended location and write files to arbitrary paths on the system.
The application uses GWT RPC, which serializes Java objects into JavaScript for browser-based clients. This means the vulnerable method is invocable via standard GWT RPC HTTP requests, typically POST requests to endpoints ending in .gwt or similar RPC service paths. The attack does not require the attacker to interact with a web form; they can craft a raw HTTP request containing the serialized RPC payload with the malicious path parameter.
The CVSS vector reflects the following characteristics:
- Attack Vector: Network — the vulnerability is exploitable remotely
- Attack Complexity: Low — no complex conditions required
- Privileges Required: Low — base authentication required, though the mechanism can be bypassed (noted in the NVD description)
- User Interaction: None — no victim interaction required
- Impact: High confidentiality, integrity, and availability — arbitrary code as SYSTEM provides full compromise
The authentication bypass aspect noted in the NVD description (ZDI advisory) suggests that the existing authentication mechanism is flawed or that certain unauthenticated endpoints exist in the application. While the base exploit requires authentication, the bypass makes otherwise protected functionality accessible, potentially lowering the effective barrier to exploitation.
The EPSS score of 0.09255 (94.9th percentile) indicates this vulnerability sits in the top ~5% of actively exploited CVEs tracked, suggesting real-world exploitation activity.
Exploitation Scenarios
Target Identification: Attackers scan for exposed Marvell QConvergeConsole instances, typically on ports 80 or 443 with the application's web interface accessible. Shodan can identify these via HTTP title "QConvergeConsole" or vendor-specific page fingerprints. The application is commonly deployed in enterprise data center environments managing Fibre Channel infrastructure.
Authentication Bypass: Attackers first leverage the known authentication bypass mechanism to gain session access without valid credentials. The specific bypass technique is not described in public detail, but given the GWT framework, it likely involves direct RPC endpoint invocation that skips the standard login flow.
Triggering the Flaw: Once authenticated (or bypassing authentication), the attacker crafts a GWT RPC request to the GWTTestServiceImpl class invoking the setAppFileBytes method. The method parameters include a file path and byte array content. The attacker supplies a path traversal payload such as ../../../../Windows/System32/evil.dll or ../../../../tmp/evil.sh (exact syntax inferred from the vulnerability class; the traversal pattern is not specified in the public description).
Payload Execution: The attacker writes a malicious file (e.g., a DLL, executable, or script) to a location that will result in execution as SYSTEM. Common targets include:
- Windows service binaries or DLL sideloading paths
- Startup directories
- Web application deployment directories (e.g., writing a JSP or ASPX webshell)
- Scheduled task binaries
Since the service runs with SYSTEM privileges, arbitrary file write automatically results in code execution with the highest Windows privileges.
Post-Exploitation Impact: With SYSTEM-level code execution, the attacker has complete control over the compromised host. This enables further lateral movement within the data center environment, credential harvesting, installation of persistence mechanisms, and potential disruption of storage infrastructure operations.
Additional exploitation chain aspects: Since the write is byte-based, the attacker can write fully-formed binary payloads. The GWT RPC protocol supports base64 binary data transfer, making the attacker's job straightforward. The lack of file size limits or content filtering in the vulnerable method further facilitates payload delivery.
Impact Assessment
Business Impact: QConvergeConsole is typically deployed in enterprise data centers managing critical storage infrastructure. A compromise results in:
- Confidentiality impact (HIGH): Full filesystem access as SYSTEM allows exfiltration of sensitive configuration files, credentials, and potentially data traversing the storage network
- Integrity impact (HIGH): Arbitrary file write enables system modification, backdoor installation, and data manipulation
- Availability impact (HIGH): An attacker with SYSTEM access can disable services, corrupt firmware, or render the host and potentially managed storage devices inoperable
- Privilege escalation: The vulnerability yields SYSTEM privileges, providing maximum host access
Affected Systems: Marvell QConvergeConsole version 5.5.0.64. No other versions are confirmed affected, but organizations running earlier versions should assume exposure until a patched version is available and verified. Deployment in converged infrastructure means the compromise also impacts Fibre Channel HBA management, potentially affecting storage network operations.
Blast Radius: The compromise of a single QConvergeConsole instance can cascade to surrounding infrastructure due to the privileged position of the management console within the network. The console typically has administrative access to multiple servers and storage devices, significantly expanding the impact beyond the single host.
Exploitation Go-Factor (estimated): Given the authentication bypass, public CVE disclosure since 2020, and no patch available, this vulnerability remains a persistent risk for any exposed instance. The 94.9th percentile EPSS score confirms active exploitation in the wild.
Detection Guidance
Sigma Rule
title: Marvell QConvergeConsole setAppFileBytes Path Traversal
id: 3a7f8c9d-5e4b-4f3a-9c2d-1b8e7f6a5c4d
status: experimental
description: Detects path traversal attempts via the setAppFileBytes method in Marvell QConvergeConsole (CVE-2020-15644)
author: Valtersit Threat Intel
date: 2024/10/01
tags:
- attack.t1190
- attack.initial_access
- cve.2020.15644
logsource:
category: webserver
product: generic
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains:
- 'GWTTestService'
- 'setAppFileBytes'
- 'gwt'
traversal_indicators:
cs-uri-query|contains:
- '../'
- '..\\'
- '%2e%2e%2f'
- '%2e%2e%5c'
- '..%252f'
- '..%255c'
condition: selection and traversal_indicators
falsepositives:
- Legitimate GWT calls referencing internal test paths (unlikely in production)
- Backup/restore operations using the test service
level: critical
YARA Rule
rule CVE_2020_15644_Marvell_QConvergeConsole_Traversal
{
meta:
author = "Valtersit Threat Intel"
date = "2024-10-01"
description = "Detects GWT RPC payloads attempting path traversal in setAppFileBytes"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2020-15644"
cve = "CVE-2020-15644"
severity = "8.8"
strings:
$gwt_class = "GWTTestServiceImpl" ascii wide
$method = "setAppFileBytes" ascii wide
$traversal1 = "../" ascii wide
$traversal2 = "..\\" ascii wide
$traversal3 = "%2e%2e" ascii wide
$traversal4 = "..%2f" ascii wide
$traversal5 = "/../../" ascii wide
$traversal6 = "\\..\\..\\" ascii wide
$windows_path = "Windows\\System32" ascii wide
$unix_path = "/etc/" ascii wide
$unix_path2 = "/tmp/" ascii wide
condition:
uint16(0) == 0x4D42 or filesize < 10MB and
($gwt_class or $method) and
($traversal1 or $traversal2 or $traversal3 or $traversal4 or $traversal5 or $traversal6 or
$windows_path or $unix_path or $unix_path2)
}
Suricata IDS Rule
alert http any any -> any any (msg:"CVE-2020-15644 Marvell QConvergeConsole setAppFileBytes Path Traversal Attempt"; flow:established,to_server; http.method; content:"POST"; http.uri; content:"GWTTestService"; nocase; http.uri; content:"setAppFileBytes"; nocase; http.request_body; pcre:"/\.\.(\/|\\\\|%2f|%5c)|(\.\.)+(\\|\/)/i"; classtype:attempted-admin; sid:90015644; rev:1; metadata:cve CVE-2020-15644; reference:url,https://nvd.nist.gov/vuln/detail/CVE-2020-15644;)
Elastic Detection
sequence by source.ip with maxspan=5m
[ network where event.category == "network" and network.direction == "ingress"
and network.protocol == "http"
and url.path like "*GWTTestService*"
and request.method == "POST" ]
[ network where event.category == "network"
and url.query like "*setAppFileBytes*"
or wildcard(url.path, "*setAppFileBytes*") ]
[ any where
(url.path like "%../%" or url.path like "%..\\%" or url.path like "%..%2f%")
or url.path like "%etc%passwd%"
or url.path like "%Windows%System32%" ]
Splunk SPL Query
index=web sourcetype=access_combined
| where method="POST"
| search uri_path="*GWTTestService*" OR uri_path="*setAppFileBytes*" OR uri_path="*gwt*"
| where uri_path LIKE "%..%" OR uri_path LIKE "%..\\%"
| rename src_ip as src, uri_path as path, status as http_status
| table _time, src, path, http_status, user, useragent
| sort -_time
Wazuh OSSEC Rule
<group name="marvell,qconverge,cev-2020-15644,">
<rule id="100644" level="14">
<if_sid>31100</if_sid>
<match>GWTTestService</match>
<regex>setAppFileBytes</regex>
<description>Marvell QConvergeConsole (CVE-2020-15644) path traversal attempt detected</description>
<group>attacks,exploitation,cve,CVE-2020-15644,</group>
<mitre>
<id>T1190</id>
</mitre>
<info type="cve">CVE-2020-15644</info>
</rule>
</group>
Mitigation & Patch Guidance
Patch Confidence: 0/4 — UNPATCHED. No patch evidence from any tracked source. No vendor fix available.
Immediate Mitigations (do these NOW):
Isolate the application: If QConvergeConsole is not externally required, block all remote access. Use firewall rules to restrict access to the management console to a limited set of administrative jump boxes only.
Implement network segmentation: Place QConvergeConsole on a protected management VLAN with strict egress rules. Prevent direct internet access. Use jump server access with MFA instead of direct RDP/SSH into the management network.
Enable authentication with strong policies: Configure multi-factor authentication on the web interface if supported by the application. Strictly enforce password complexity and account lockout policies to mitigate the authentication bypass risk.
Monitor for exploitation: Implement the detection rules provided above (Sigma, YARA, Suricata, EQL, SPL, Wazuh). Review logs daily for anomalies in GWT service endpoints.
Apply filesystem restrictions: If the underlying OS permits, use Windows/Unix AppLocker or similar to restrict file creation outside allowed directories by the service account.
Patch/Upgrade Steps:
- Contact Marvell support: Inquire about a patched version of QConvergeConsole or a hotfix that addresses ZDI-CAN-10550. As the vendor has not released a fix as of this writing, escalate the matter to your account manager and request ETA for remediation.
- Pursue vendor alternative: Consider migrating to a newer Marvell management platform or alternative vendor management tool if available and supported in your environment.
- Track CVE updates: Continue monitoring the NVD entry and ZDI advisory for updates on patch availability.
Long-Term Hardening:
- Since QConvergeConsole remains unpatched, treat any instance as potentially compromised. Conduct regular forensic reviews of hosts running the software.
- If QConvergeConsole is not essential to operations, decommission it. For legacy systems, implement strict network controls and consider replacing with modern management tools that receive timely security updates.
- Ensure Windows hosts running QConvergeConsole have up-to-date OS hardening (CIS benchmarks). Apply principle of least privilege to the service account.
- Integrate vulnerability scanning that includes CVE-2020-15644 into your continuous compliance program.
- Incorporate Shodan monitoring for your public IP ranges to identify exposed instances of the application.
- Consider compensating controls such as Web Application Firewall (WAF) rules that block URL traversal patterns in HTTP requests to the vulnerable endpoint. Implement a reverse proxy that restricts POST requests to GWT RPC servicing only for specific internal subnets.
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2020-15644
- ZDI Advisory (ZDI-CAN-10550): https://www.zerodayinitiative.com/advisories/ZDI-20-1256 (reference ID ZDI-CAN-10550)
- CVE.org Record: https://cve.org/CVERecord?id=CVE-2020-15644 (for original CVE assignment data)
- FIRST EPSS Score Reference: https://www.first.org/epss/ (EPSS score 0.09255, 94.9th percentile)
Exploit-in-the-Wild Evidence: No public exploit code has been identified from tracked sources. The EPSS score percentile (94.9%) indicates active exploitation patterns in the wild. Public exploitation details are sparse, but the vulnerability class (unvalidated path in file operations) is a well-known and frequently weaponized pattern. The authentication bypass component broadens the exploitable surface, making this a likely target for ransomware groups targeting data-center management infrastructure. Baseline detection rules should be implemented immediately even in the absence of public PoC.
No known specific threat actor campaigns have been publicly attributed to this CVE at this time. The report will be updated if new intelligence regarding exploitation campaigns becomes available.