CVE-2018-25367
Executive Summary
CVE-2018-25367 is a buffer overflow vulnerability in NASA's OpenVSP (Vehicle Sketch Pad) version 3.16.1. The flaw resides in the geometry name field within the Geom browser pod addition interface. By supplying an excessively long string (5000 bytes) into the name input field, a local attacker can trigger a crash, leading to a denial of service (DoS). The vulnerability is classified as a classic buffer overflow (CWE-120) and requires local access and user interaction. No patch has been released by the vendor, and no public exploit code or Nuclei template is available. The EPSS score is 0.0%, indicating low exploitation likelihood in the wild.
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: 0.0 (Base Score: 5.5 Medium)
- Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
- Attack Vector: Local (AV:L) – attacker must have local access to the system.
- Attack Complexity: Low (AC:L) – no special conditions required.
- Privileges Required: None (PR:N) – no authentication needed.
- User Interaction: Required (UI:R) – victim must paste the malicious string.
- Scope: Unchanged (S:U) – impact confined to the vulnerable component.
- Confidentiality Impact: None (C:N)
- Integrity Impact: None (I:N)
- Availability Impact: High (A:H) – application crash leads to DoS.
Threat Level: Medium. The vulnerability is easy to exploit locally but requires user interaction and does not allow remote code execution or data exfiltration.
Deep Dive & Mechanics
The vulnerability is a stack-based buffer overflow in the geometry name field of OpenVSP's Geom browser pod addition interface. When a user pastes a string longer than the allocated buffer (5000 bytes) into the name input field, the program writes beyond the buffer boundary, corrupting adjacent memory. This typically overwrites the return address or other critical data on the stack, causing the application to crash.
Root Cause: The application uses a fixed-size buffer for the geometry name without proper bounds checking. The strcpy or similar unsafe function is likely used to copy user input into the buffer.
Attack Vector: Local attacker crafts a 5000-byte string and convinces a victim to paste it into the geometry name field. The victim must be using the OpenVSP GUI.
Impact: Denial of service – the application terminates unexpectedly. No code execution is confirmed, but a determined attacker could potentially exploit the overflow for arbitrary code execution if the stack layout is predictable.
Vulnerable vs. Patched Code
Vulnerable Code (OpenVSP 3.16.1):
// Hypothetical vulnerable snippet
void add_geom_name(char *name) {
char buffer[256];
strcpy(buffer, name); // No bounds check
// ... process buffer
}
Patched Code (None available):
No official patch exists. A hypothetical fix would involve using strncpy or snprintf with a size limit:
void add_geom_name(char *name) {
char buffer[256];
strncpy(buffer, name, sizeof(buffer) - 1);
buffer[sizeof(buffer) - 1] = '\0';
// ... process buffer
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- OpenVSP 3.16.1 installed on a Windows or Linux system.
- Local access to the GUI.
Exploit Steps:
- Generate a 5000-byte payload:
payload = "A" * 5000 with open("payload.txt", "w") as f: f.write(payload) - Open OpenVSP and navigate to the Geom browser pod addition interface.
- Paste the contents of
payload.txtinto the geometry name field. - Click "Add" or press Enter. The application will crash immediately.
Expected Outcome: Application crash (DoS). No code execution is achieved with this simple payload.
Blue Team
Detection:
- Monitor for OpenVSP crashes in event logs (Windows Event ID 1000 or Linux core dumps).
- Look for unusually long strings in OpenVSP configuration files or clipboard history.
Mitigation:
- Restrict local access to OpenVSP to trusted users only.
- Use application whitelisting to prevent untrusted modifications.
- Educate users not to paste unknown content into OpenVSP fields.
Indicators of Compromise (IOCs)
- File:
payload.txtcontaining 5000 'A' characters. - Process:
OpenVSP.exeorvspcrashing with exception code0xc0000409(stack buffer overflow). - Log Entry: Windows Event ID 1000 with faulting module
OpenVSP.exeand exception code0xc0000409. - Memory: Stack corruption in the geometry name buffer.
Detection Engineering
YARA Rule
rule CVE_2018_25367_OpenVSP_BufferOverflow {
meta:
description = "Detects OpenVSP crash logs or payloads related to CVE-2018-25367"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2018-25367"
strings:
$payload = "A" * 5000
$crash_log = "OpenVSP.exe" ascii wide nocase
$exception = "0xc0000409" ascii wide
condition:
$payload or ($crash_log and $exception)
}
Sigma Rule
title: OpenVSP Buffer Overflow Crash Detection
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects OpenVSP crashes caused by CVE-2018-25367 buffer overflow
author: Valters IT
date: 2025-04-10
logsource:
product: windows
service: application
detection:
selection:
EventID: 1000
Provider_Name: 'Application Error'
Faulting_Module: 'OpenVSP.exe'
Exception_Code: '0xc0000409'
condition: selection
falsepositives:
- Other application crashes with same exception code
level: medium
Suricata Rule
alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2018-25367 OpenVSP Buffer Overflow Payload"; content:"|41 41 41 41|"; depth:5000; classtype:attempted-dos; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- No official patch exists. Users should consider upgrading to a newer version of OpenVSP if available, or apply a workaround.
- Restrict local access to OpenVSP to trusted users only.
- User education: Warn users not to paste untrusted strings into geometry name fields.
Long-term Fix:
- The vendor (NASA) should release a patched version with proper input validation and bounds checking.
- Until then, consider using a third-party memory protection tool (e.g., EMET or Windows Defender Exploit Guard) to mitigate buffer overflow exploitation.
Workaround:
- Modify the OpenVSP source code (if available) to limit input length to 255 characters.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert