CVE-2025-0412
Executive Summary
CVE-2025-0412 is a critical memory corruption vulnerability in Luxion KeyShot Viewer, specifically within the parsing of KSP files. The flaw arises from improper validation of user-supplied data, leading to a memory corruption condition that can be leveraged for remote code execution (RCE) in the context of the current process. Exploitation requires user interaction—the victim must open a malicious KSP file or visit a malicious page. With a CVSS score of 7.8, this vulnerability poses a significant threat to users of KeyShot Viewer, especially in environments where untrusted KSP files are processed. No public exploit code or patch is currently available, but the risk is elevated due to the lack of vendor response.
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
CVSS Breakdown & Threat Level
- CVSS Score: 7.8 (High)
- Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
- Attack Vector: Local (requires user to open a file)
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: Required (victim must open malicious file)
- Scope: Unchanged
- Confidentiality Impact: High
- Integrity Impact: High
- Availability Impact: High
Threat Level: High. The vulnerability allows full compromise of the affected system with minimal user interaction. The lack of a patch and the potential for weaponization in targeted attacks increases the urgency.
Deep Dive & Mechanics
The vulnerability resides in the KSP file parser of Luxion KeyShot Viewer. KSP files are used for sharing 3D scenes and presentations. The parser fails to properly validate the size or structure of user-supplied data within the file, leading to a memory corruption condition—likely a buffer overflow or use-after-free. An attacker can craft a malicious KSP file containing oversized or malformed data that overwrites critical memory structures, hijacking the execution flow. Since the viewer runs in the context of the current user, successful exploitation grants the attacker the same privileges, enabling arbitrary code execution, data exfiltration, or further system compromise.
The vulnerability was reported via ZDI (ZDI-CAN-22139), indicating it was responsibly disclosed but remains unpatched. The lack of a patch suggests either the vendor is unresponsive or a fix is in development.
Vulnerable vs. Patched Code
No patched version is available. The vulnerable code likely resides in the KSP file parsing routine, where data is read into a fixed-size buffer without bounds checking. A hypothetical vulnerable snippet might look like:
void parse_ksp_data(char *buffer, size_t size) {
char local_buf[256];
memcpy(local_buf, buffer, size); // No size check
}
A patched version would include validation:
void parse_ksp_data(char *buffer, size_t size) {
char local_buf[256];
if (size > sizeof(local_buf)) {
// Handle error
return;
}
memcpy(local_buf, buffer, size);
}
Exploitation & Lab Setup
Red Team
Objective: Achieve remote code execution on a target system running Luxion KeyShot Viewer.
Prerequisites:
- Luxion KeyShot Viewer installed (any version).
- Victim must open a malicious KSP file.
Steps:
- Craft Malicious KSP File: Use a fuzzer (e.g., AFL++) to identify a crash in the KSP parser. Alternatively, manually corrupt a valid KSP file by overwriting a data block with a large payload.
- Generate Shellcode: Create shellcode for the target platform (e.g., Windows x64) that executes a reverse shell or drops a payload.
- Exploit Memory Corruption: Overwrite a function pointer or return address with the address of the shellcode. Use ROP chains if ASLR/DEP are enabled.
- Deliver Payload: Host the malicious KSP file on a website or send via email. Convince the victim to open it.
Example (Conceptual):
# Python script to generate a malicious KSP file
import struct
payload = b"A" * 256 # Overflow buffer
payload += struct.pack("<Q", 0x41414141) # Overwrite return address
# Append shellcode
payload += b"\x90" * 16 + shellcode
with open("malicious.ksp", "wb") as f:
f.write(payload)
Blue Team
Detection:
- Monitor for unusual KSP file downloads or email attachments.
- Use endpoint detection rules to flag KeyShot Viewer crashes or memory corruption events.
- Deploy application whitelisting to block untrusted KSP files.
Prevention:
- Disable automatic opening of KSP files.
- Use sandboxing or virtualization for processing untrusted files.
- Apply strict file validation at the perimeter (e.g., block oversized KSP files).
Response:
- Isolate affected systems immediately.
- Collect crash dumps and memory images for forensic analysis.
- Block known malicious IPs or domains associated with the attack.
Indicators of Compromise (IOCs)
- File Hashes (SHA256): (None available publicly; generate upon discovery)
- Network Indicators: Outbound connections from KeyShot Viewer to unknown IPs (e.g., for reverse shell).
- Process Anomalies: KeyShot Viewer crashing repeatedly or spawning child processes (e.g., cmd.exe, powershell.exe).
- Registry Changes: Unauthorized modifications to startup keys or service entries.
- File System: Unexpected files written to %TEMP% or %APPDATA% after opening a KSP file.
Detection Engineering
YARA Rule
rule CVE_2025_0412_KeyShot_Memory_Corruption {
meta:
description = "Detects malicious KSP files exploiting CVE-2025-0412"
author = "Valters IT"
date = "2025-01-01"
reference = "CVE-2025-0412"
strings:
$ksp_header = "KSP" ascii wide nocase
$overflow_pattern = { 41 41 41 41 41 41 41 41 } // Pattern of 'A's
condition:
$ksp_header at 0 and #overflow_pattern > 10
}
Sigma Rule
title: Suspicious KeyShot Viewer Crash or Memory Corruption
id: 8f4a3b2c-1d5e-4f6a-9b7c-8d9e0f1a2b3c
status: experimental
description: Detects crashes or memory corruption events in Luxion KeyShot Viewer
author: Valters IT
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\keyshot_viewer.exe'
CommandLine|contains: 'ksp'
condition: selection
falsepositives:
- Legitimate KSP file processing
level: high
Suricata Rule
alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-0412 KeyShot Viewer Potential Exploit"; flow:to_server,established; content:"KSP"; offset:0; depth:3; content:"|41 41 41 41|"; distance:0; within:100; classtype:attempted-user; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Disable or uninstall Luxion KeyShot Viewer until a patch is available.
- Workaround: Use a file reputation service to block unknown KSP files. Educate users not to open KSP files from untrusted sources.
- Long-term: Monitor vendor channels for a security update. Consider using alternative 3D viewing software with active security support.
- Compensating Controls: Deploy application control (e.g., AppLocker) to prevent execution of KeyShot Viewer if not required. Use endpoint detection and response (EDR) to monitor for exploitation attempts.
Valters IT
DevSecOps & Cyber Threat Intelligence
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.