CVE-2025-48396
Executive Summary
CVE-2025-48396 is a critical arbitrary code execution vulnerability in Eaton BLSS (Building Life Safety System) caused by improper validation of file upload functionality. An unauthenticated attacker can upload a malicious file (e.g., a web shell) to the server, leading to full remote code execution with the privileges of the web server. The vulnerability has a CVSS score of 8.3 (High) and is currently unpatched in versions prior to 7.3.0.SCP004. No public proof-of-concept (PoC) or exploit code has been released, but the risk is significant due to the lack of authentication required and the potential for complete system compromise.
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 NPM, PyPI, Go, or Ruby packages. It is a proprietary software vulnerability in Eaton BLSS, a building management system.
CVSS Breakdown & Threat Level
- CVSS Score: 8.3 (High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Attack Vector: Network (AV:N) – Exploitable remotely.
- 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 is the only one affected.
- Confidentiality Impact: High (C:H) – Full data access.
- Integrity Impact: High (I:H) – Full system modification.
- Availability Impact: High (A:H) – Full system disruption.
Threat Level: Critical. The combination of remote exploitability, no authentication, and high impact makes this a top-priority vulnerability for any organization using Eaton BLSS.
Deep Dive & Mechanics
The vulnerability resides in the file upload functionality of Eaton BLSS. The application fails to properly validate the type, content, or path of uploaded files. An attacker can craft an HTTP request to upload a file (e.g., a PHP or ASPX web shell) to a directory accessible by the web server. Once uploaded, the attacker can execute arbitrary commands on the server by accessing the uploaded file via a web browser.
Root Cause: The lack of input validation on the file upload endpoint allows an attacker to bypass any intended restrictions (e.g., file extension whitelisting, MIME type checking, or path traversal checks). This is a classic CWE-434 (Unrestricted Upload of File with Dangerous Type) vulnerability.
Attack Flow:
- Attacker identifies the file upload endpoint (e.g.,
/uploador/api/upload). - Attacker sends a POST request with a malicious file (e.g.,
shell.php) containing arbitrary code. - The server stores the file in a web-accessible directory (e.g.,
/uploads/). - Attacker accesses the uploaded file via HTTP (e.g.,
http://target/uploads/shell.php). - The server executes the code, giving the attacker remote control.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
// Vulnerable: No validation
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
move_uploaded_file($_FILES["file"]["tmp_name"], $target_file);
Patched Code (Conceptual):
// Patched: Validate file extension and content
$allowed_extensions = array("jpg", "png", "gif", "pdf");
$file_extension = strtolower(pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION));
if (!in_array($file_extension, $allowed_extensions)) {
die("Invalid file type.");
}
// Also check MIME type and file content
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime_type = finfo_file($finfo, $_FILES["file"]["tmp_name"]);
if (strpos($mime_type, "image/") !== 0 && $mime_type != "application/pdf") {
die("Invalid file content.");
}
$target_dir = "uploads/";
$target_file = $target_dir . uniqid() . "." . $file_extension;
move_uploaded_file($_FILES["file"]["tmp_name"], $target_file);
The patched version adds:
- File extension whitelisting.
- MIME type validation.
- Renaming the file to a random name to prevent path traversal.
Exploitation & Lab Setup
Red Team (Offensive)
Lab Setup:
- Target: Eaton BLSS version < 7.3.0.SCP004 (e.g., 7.2.0) running on a Linux server.
- Attacker: Kali Linux with Burp Suite or curl.
Exploitation Steps:
- Identify the upload endpoint: Use a web fuzzer (e.g., ffuf) to find
/upload,/api/upload, or similar. - Craft a malicious file: Create a PHP web shell (e.g.,
shell.php):<?php system($_GET['cmd']); ?> - Upload the file:
curl -X POST -F "file=@shell.php" http://target/upload - Execute commands:
curl http://target/uploads/shell.php?cmd=id
Note: No public exploit code is available. The above is a generic example.
Blue Team (Defensive)
Detection:
- Monitor for unusual file uploads (e.g.,
.php,.asp,.jspfiles). - Look for POST requests to
/uploador similar endpoints with suspicious content. - Use WAF rules to block file uploads with executable extensions.
Hunting:
- Search for files with extensions like
.php,.phtml,.asp,.aspx,.jspin web-accessible directories. - Check for unexpected processes spawned by the web server (e.g.,
cmd.exe,/bin/sh).
Indicators of Compromise (IOCs)
- File Hashes (SHA256): (Example – replace with actual if found)
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855(malicious shell)
- Network Indicators:
- POST requests to
/uploador/api/uploadwithContent-Type: multipart/form-data. - Outbound connections from the web server to attacker IPs.
- POST requests to
- File System Indicators:
- Unexpected files in
/uploads/,/var/www/html/, or similar directories. - Files with double extensions (e.g.,
shell.php.jpg).
- Unexpected files in
- Process Indicators:
- Web server spawning shell processes (e.g.,
sh,bash,cmd.exe).
- Web server spawning shell processes (e.g.,
Detection Engineering
YARA Rule
rule CVE_2025_48396_WebShell {
meta:
description = "Detects web shells uploaded via CVE-2025-48396"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-48396"
strings:
$php_shell = "<?php system("
$asp_shell = "<% Execute("
$jsp_shell = "Runtime.getRuntime().exec("
condition:
any of them
}
Sigma Rule
title: File Upload to Web-Accessible Directory
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects file uploads to web-accessible directories that may indicate exploitation of CVE-2025-48396
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-stem:
- '/upload*'
- '/api/upload*'
sc-status: 200
condition: selection
falsepositives:
- Legitimate file uploads (e.g., images, documents)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-48396 - Suspicious File Upload"; flow:to_server; content:"POST"; http_method; content:"/upload"; http_uri; content:"filename="; http_client_body; pcre:"/\.(php|asp|aspx|jsp|phtml)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Upgrade: Apply the patch by upgrading to Eaton BLSS version 7.3.0.SCP004 or later.
- Workaround: If patching is not possible, disable the file upload functionality or restrict access to it via firewall rules (e.g., allow only trusted IPs).
- WAF Rules: Deploy web application firewall rules to block file uploads with executable extensions (
.php,.asp,.aspx,.jsp,.phtml).
Long-term Measures:
- Implement strict input validation on all file upload endpoints.
- Use a content security policy (CSP) to prevent execution of uploaded scripts.
- Regularly audit file upload directories for unauthorized files.
- Monitor logs for suspicious file upload activity.
Valters IT
Securing Your Digital Frontier
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.