CVE-2020-37251
Executive Summary
CVE-2020-37251 is a local privilege escalation vulnerability in RealTimes Desktop Service version 18.1.4, caused by an unquoted service path condition affecting the rpdsvc.exe binary. A local attacker with the ability to write to directories in the service's execution path can plant malicious executables that will be executed with LocalSystem privileges during service startup or system reboot. This vulnerability is confirmed as unpatched (patch confidence 0/4), with no vendor fix, workaround, or public exploit code currently available. The high CVSS score of 8.5 reflects the significant privilege escalation potential, though exploitation requires local access and write permissions to a specific directory in the search path.
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 is a classic unquoted service path privilege escalation, categorized under CWE-428. This class of vulnerability arises when a Windows service executable path is not enclosed in quotation marks. Windows Service Control Manager (SCM) and the CreateProcess API resolve unquoted paths by attempting multiple candidate paths, inserting spaces at each token boundary.
For instance, if the service is configured with a path like C:\Program Files\RealTimes\Desktop Service\rpdsvc.exe without quotes and another directory earlier in the path contains a space (e.g., C:\Program Files\RealTimes\), the system will attempt to execute the following paths in order:
C:\Program.exeC:\Program Files\Real.exeC:\Program Files\RealTimes\Desktop.exe
If the local attacker has write permissions to any of these earlier directories (or can create the needed directories), they can place a malicious executable named to match one of the intermediate path components. When the service starts (manually, during boot, or as part of a trigger), Windows will execute the attacker-controlled binary instead of the legitimate service executable.
Given the service runs as LocalSystem (the highest-privilege account on Windows), the planted binary inherits this privilege level, granting the attacker complete control over the host. The NVD description confirms the attack vector: "attackers can place malicious executables in unquoted path directories to execute arbitrary code with LocalSystem privileges during service startup or system reboot."
No technical details about the exact service name, registry key, or installation directory beyond rpdsvc.exe are available from the CNA or NVD description. Specific technical implementation details (such as the precise service configuration string or installation path) are not publicly disclosed in the provided data. The presence of spaces in the path is implied by the vulnerability class, but the exact full path of the service executable is not disclosed.
Exploitation Scenarios
The attack chain for CVE-2020-37251 follows the standard methodology for unquoted service path privilege escalation. Note: No public PoC is available; the attack chain is inferred from the vulnerability class and NVD description.
Step 1: Reconnaissance/Target Identification. The attacker must first gain a foothold on the target system with at least low-privilege local access. From there, they enumerate running services using standard Windows utilities (e.g., sc query or wmic service get name,pathname). The attacker identifies the RealTimes Desktop Service associated with rpdsvc.exe version 18.1.4. They check whether the service path is unquoted by inspecting the ImagePath registry value (HKLM\SYSTEM\CurrentControlSet\Services). The attacker also verifies which directories along the unquoted path they have write permissions to, using tools like icacls or accesschk.
Step 2: Triggering the Flaw. After confirming an unquoted path with a writable intermediate directory, the attacker crafts the malicious payload. The payload is a Windows executable file named after one of the path components that appears after a space. For example, if the full unquoted path is C:\Program Files\RealTimes\Desktop Service\rpdsvc.exe, the attacker would place a binary named Program.exe in C:\ or Real.exe in C:\Program Files\ (assuming write access). The attacker names the file to match the first folder token in the vulnerable path.
Step 3: Payload/Execution Method. The attacker places the executable in the chosen writable directory. The payload can be a reverse shell, a new admin account creator, a credential dumper, or any code that should run with elevated privileges. Exploitation is triggered by either restarting the service (if the attacker has the SERVICE_START permission) or waiting for the system to reboot. The unquoted path resolution occurs during the CreateProcess call made by SCM, which executes the first matching file in the search order.
Step 4: Post-Exploitation Impact. Upon successful execution, the attacker's code runs with LocalSystem privileges — the highest-integrity level on a Windows system. The attacker gains full control of the compromised host, including the ability to disable security products, read any user data, install persistence mechanisms, steal domain credentials (e.g., via LSASS access or hash dumping), and pivot to other systems on the network. The full impact is realized indefinitely until the malicious file is removed and the vulnerable service is corrected.
Additional Notes: To be exploitable, the attacker must possess write permissions to at least one directory in the unquoted path. On modern Windows installations, default ACLs generally restrict write access to C:\Program Files for standard users, which may limit practical exploitation on hardened systems. However, on legacy systems or where administrators have relaxed permissions, this attack is trivially executable. The attack requires no user interaction and cannot be triggered remotely; local access is mandatory.
Impact Assessment
The CVSS score of 8.5 (High severity) reflects a significant privilege escalation threat: attack vector Local, low attack complexity, low privileges required, no user interaction, and a scope change, with High impact on confidentiality, integrity, and availability. The scope change (S:C) indicates the compromised component impacts resources beyond its original security scope — the vulnerable process runs as LocalSystem, affecting the entire host.
Business Impact:
- Confidentiality: Complete loss. An attacker with LocalSystem access can read all files, decrypt stored credentials, and access any data stored on the compromised host.
- Integrity: Complete loss. The attacker can modify system files, install rootkits or backdoors, and alter application binaries.
- Availability: High impact. The attacker could deliberately crash services, encrypt data (ransomware), or enable destructive actions.
The blast radius is limited to the individual host — this is not a network-exploitable vulnerability. However, in a domain environment, a compromised workstation could be used to harvest domain credentials for lateral movement to higher-value systems. RealTimes Desktop Service is a consumer multimedia application; affected hosts are most likely personal workstations or BYOD devices in an enterprise environment. Because the product is consumer-oriented, its presence in an enterprise environment suggests either unapproved software (shadow IT) or legacy installs.
The EPSS score of 0.00173 (7.0% percentile) indicates that exploitation of this CVE is currently rare. The absence of known exploit code and the CISA KEV status of NO suggest that threat actor adoption has been minimal. Nevertheless, the vulnerability is unpatched, meaning any system running version 18.1.4 remains permanently exposed to any local user who can place files in an intermediate path directory.
Detection Guidance
Sigma Rule
title: RealTimes Desktop Service Unquoted Path Privilege Escalation
id: 5f2c6d3f-9a1e-4c2b-8e5f-3f7a9b1d4c2e
status: experimental
description: Detects the creation of suspicious executables matching the unquoted path pattern for RealTimes Desktop Service (rpdsvc.exe)
author: Valters IT Security Research
date: 2024/01/15
logsource:
category: process_creation
product: windows
detection:
selection_path:
Image|endswith:
- 'Program.exe'
- 'Real.exe'
- 'RealTimes.exe'
selection_parent:
ParentImage|endswith: '\services.exe'
selection_new:
Image|contains: '\AppData\'
condition: selection_path and (selection_parent or selection_new)
timeframe: 5m
level: high
falsepositives:
- Legitimate applications named Program.exe (rare)
- Administrative tools creating executables in unusual locations
fields:
- Image
- CommandLine
- User
YARA Rule
rule RealTimes_Unquoted_Service_PrivEsc
{
meta:
author = "Valters IT Security Research"
description = "Detects executables likely planted to exploit CVE-2020-37251 unquoted service path in RealTimes Desktop Service"
reference = "CVE-2020-37251"
date = "2024-01-15"
score = 50
strings:
$s1 = "rpdsvc.exe" ascii wide nocase
$s2 = "RealTimes" ascii wide nocase
$s3 = "LocalSystem" ascii wide nocase
$s4 = "CreateProcess" ascii wide nocase
condition:
filesize < 5MB and
(1 of ($s*)) and
(uint16(0) == 0x5A4D) // MZ header - executable
}
Suricata IDS Rule
alert http any any -> $HOME_NET any (msg:"CVE-2020-37251 RealTimes Service Path Exploitation Download Attempt"; flow:established,to_server; content:"Program.exe"; http.uri; content:"RealTimes"; http.uri; classtype:attempted-admin; sid:2080551; rev:1; reference:cve,2020-37251;)
Elastic Detection
// Detect suspicious executable creation in common unquoted-path locations
sequence by host.name with maxspan=5m
[ file where event.type == "creation" and
file.name in ("Program.exe", "Real.exe", "RealTimes.exe", "Desktop Service.exe") ]
[ process where event.type == "start" and
process.name in ("Program.exe", "Real.exe", "RealTimes.exe", "Desktop Service.exe") and
process.parent.name == "services.exe" ]
Splunk SPL Query
index=windows sourcetype=WinEventLog
| search (EventCode=4688 OR EventCode=1)
| where match(NewProcessName, "(?i)(\\\\Program\.exe$|\\\\Real\.exe$|\\\\RealTimes\.exe$|\\\\Desktop Service\.exe$)")
| eval vulnerable_path = case(
match(CommandLine, "(?i)RealTimes.*rpdsvc\.exe"), "RealTimes Service",
match(NewProcessName, "(?i)Program\.exe"), "Program.exe anomaly",
match(NewProcessName, "(?i)Real\.exe"), "Real.exe anomaly",
true, "Other")
| search vulnerable_path != "Other"
| table _time, host, user, NewProcessName, CommandLine, ParentProcessName
| sort - _time
Wazuh OSSEC Rule
<rule id="821389" level="12">
<if_sid>50000</if_sid>
<match>Program.exe|Real.exe|RealTimes.exe|Desktop Service.exe</match>
<regex>services\.exe</regex>
<description>CVE-2020-37251: RealTimes Desktop Service unquoted path privilege escalation attempt detected - malicious executable executed from intermediate path directory</description>
<group>privilege_escalation,local_attack,</group>
<mitre>
<id>T1574.009</id>
</mitre>
</rule>
Mitigation & Patch Guidance
Patch Confidence: 0/4 — UNPATCHED. No patch evidence exists from any tracked source. The vendor has not released a fix for CVE-2020-37251. Verify with the application vendor (RealNetworks) for update availability.
Immediate Mitigations:
- Identify all systems running RealTimes Desktop Service 18.1.4 via asset inventory or software deployment tools. Query running services:
sc query | findstr /i "realtimes"and verify service paths withsc qc <servicename>. - As a short-term fix, the service path can be manually corrected by quoting the executable path in the registry: navigate to
HKLM\SYSTEM\CurrentControlSet\Services\<service_name>and modify theImagePathvalue so the executable path is enclosed in double quotes. Note: This is a system-level change and requires administrative privileges. It is not an official vendor workaround, but it directly mitigates the vulnerability class. - Harden local directory ACLs: ensure standard users cannot write to
C:\Program Files\,C:\Program Files (x86)\, and other system directories. Review and restrict write permissions on intermediate directories in the service path. - Enforce application whitelisting (AppLocker or Windows Defender Application Control) to block execution of unsigned binaries from writable directories.
Patch/Upgrade Steps:
- Monitor vendor release channels for RealTimes updates or security advisories. When a patched version becomes available, update RealTimes Desktop Service to the latest version.
- If the product is not critical to business operations, consider uninstalling it entirely. Given the consumer nature of RealTimes, removal is the strongest mitigation until a patch is available.
- Validate removal via asset management and re-image or restore affected systems if the service was previously running.
Long-Term Hardening:
- Run a scripted audit of all Windows services on critical assets to detect unquoted service paths proactively. Use PowerShell to enumerate services and flag suspicious path formatting.
- Enforce the principle of least privilege for all local users; remove standard-user write access to common installation directories.
- Implement endpoint detection and response (EDR) with behavior-based detection rules modeled on the Sigma/YARA rules above.
- Add RealTimes to a software approval/deny list; prevent future self-installation by standard users.
- Regularly review CISA KEV and vendor advisories for confirmed exploitation status updates — this vulnerability is currently tracked as unpatched and unexploited, but status may change.
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2020-37251 — Official NVD record with vulnerability description and scoring reference.
- CWE-428 Reference: https://cwe.mitre.org/data/definitions/428.html — CWE catalog entry describing the unquoted search path vulnerability class.
- MITRE ATT&CK Technique T1574.009: https://attack.mitre.org/techniques/T1574/009/ — Technique mapping for unquoted service path hijacking; describes the privilege escalation mechanism and detection recommendations.
- EPSS Prediction: https://www.first.org/epss/ — EPSS community effort providing the probabilistic exploitability score of 0.00173 referenced above.
- CISA KEV Catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog — Verified that CVE-2020-37251 is not listed as of this writing, confirming no known in-the-wild exploitation.
Threat Actor Campaigns / Exploit-in-the-Wild Evidence: None reported. No known threat actor campaigns have been attributed to this CVE. The EPSS percentile of 7.0% indicates the vulnerability is considered unlikely to be exploited in the near term, and no PoC or exploit code has been publicly released. The CISA KEV status of NO confirms no known exploitation activity has been reported to CISA.