CVE-2025-14605
Executive Summary
CVE-2025-14605 is an Uncontrolled Search Path Element vulnerability (CWE-427) affecting Altera Quartus Prime Pro on Windows, specifically within the System Console modules. This flaw allows an attacker to perform Search Order Hijacking, potentially leading to arbitrary code execution in the context of the user running the software. The vulnerability impacts all versions from 17.0 through 25.1.1. No official patch has been released, and no public proof-of-concept (PoC) or exploit code is currently available. The EPSS score is 0.0%, indicating a low probability of exploitation in the wild at this time, but the risk remains significant for organizations using the affected software in development or production environments.
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
The CVSS score is listed as 0.0, which is likely a placeholder or unassigned value. Based on the vulnerability type (CWE-427) and the potential impact (arbitrary code execution via DLL hijacking), a reasonable CVSS v3.1 vector would be:
- Attack Vector (AV): Local (L) – The attacker must have local access to the system.
- Attack Complexity (AC): Low (L) – Exploitation does not require special conditions.
- Privileges Required (PR): Low (L) – The attacker needs user-level privileges.
- User Interaction (UI): Required (R) – The user must launch the application.
- Scope (S): Unchanged (U) – The vulnerability does not cross trust boundaries.
- Confidentiality (C): High (H) – Arbitrary code execution can lead to data theft.
- Integrity (I): High (H) – Code execution can modify system state.
- Availability (A): High (H) – Code execution can disrupt operations.
Estimated CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
Estimated Base Score: 7.3 (High)
Threat Level: High. Although no public exploit exists, the vulnerability is trivial to exploit once the technique is understood, and the attack surface is large due to the widespread use of Quartus Prime in FPGA development.
Deep Dive & Mechanics
The vulnerability lies in the System Console modules of Altera Quartus Prime Pro. These modules are responsible for debugging and interacting with FPGA hardware. The issue is an Uncontrolled Search Path Element, meaning the application searches for dynamic-link libraries (DLLs) or other executable components in an insecure order.
How Search Order Hijacking Works:
- Windows applications typically search for DLLs in a specific order: the directory from which the application is loaded, the system directory, the Windows directory, and then the directories listed in the
PATHenvironment variable. - If an attacker can place a malicious DLL in a directory that is searched before the legitimate one (e.g., the current working directory or a user-writable path), the application will load the attacker's DLL instead.
- This allows the attacker to execute arbitrary code with the privileges of the user running Quartus Prime.
Attack Scenario:
- An attacker with local access to a system running Quartus Prime Pro (versions 17.0 through 25.1.1) can place a malicious DLL (e.g.,
msvcr100.dllor a custom DLL name used by System Console) in a directory that the application searches. - When a user launches the System Console (e.g., via
quartus_system_console.exe), the malicious DLL is loaded, granting the attacker code execution.
Root Cause: The application does not use safe DLL search modes (e.g., SetDllDirectory("") or absolute paths) and relies on the default Windows search order.
Vulnerable vs. Patched Code
No official patch is available. The vulnerable code is in the System Console modules, which likely use relative paths or rely on the system's PATH environment variable to locate dependencies.
Vulnerable Code Pattern (Conceptual):
// Vulnerable: LoadLibrary uses relative path or relies on search order
HMODULE hModule = LoadLibrary("helper.dll");
if (hModule == NULL) {
// Error handling
}
Patched Code Pattern (Hypothetical):
// Patched: Use absolute path or safe DLL search mode
SetDllDirectory(L"");
HMODULE hModule = LoadLibrary(L"C:\\Program Files\\Altera\\Quartus\\bin\\helper.dll");
if (hModule == NULL) {
// Error handling
}
Since no patch exists, users must rely on mitigations (see Remediation & Mitigation).
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Local access to a Windows system with Quartus Prime Pro (17.0–25.1.1) installed.
- Ability to write to a directory that is in the search path (e.g., the user's
%TEMP%folder or the application's working directory).
Exploitation Steps:
- Identify a DLL that the System Console loads (e.g., via Process Monitor or dependency walker).
- Create a malicious DLL that exports the same functions as the legitimate DLL but executes payload code (e.g., reverse shell, keylogger).
- Place the malicious DLL in a directory that is searched before the legitimate one (e.g.,
%TEMP%or the current working directory). - Trick the user into launching the System Console (e.g., via social engineering or by waiting for normal usage).
- The malicious DLL is loaded, and the payload executes.
Example Malicious DLL Code (C++):
#include <windows.h>
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
// Execute payload (e.g., reverse shell)
system("powershell -NoP -NonI -W Hidden -Exec Bypass -Command \"...\"");
}
return TRUE;
}
Compilation:
x86_64-w64-mingw32-gcc -shared -o malicious.dll malicious.c
Blue Team (Detection & Defense)
Detection Steps:
- Monitor for unexpected DLL loads by
quartus_system_console.exeor other Quartus processes using Sysmon Event ID 7 (Image Loaded). - Look for DLLs loaded from non-standard paths (e.g.,
%TEMP%,%APPDATA%, or user-writable directories). - Use Process Monitor to baseline normal DLL loads and alert on anomalies.
Defense Measures:
- Apply the principle of least privilege to user accounts.
- Use AppLocker or Windows Defender Application Control (WDAC) to block unauthorized DLLs.
- Enable Safe DLL Search Mode via Group Policy:
Computer Configuration > Administrative Templates > System > Mitigation Options > Enable Safe DLL Search Mode. - Set the
CWDIllegalInDllSearchregistry key to0xFFFFFFFFto prevent loading DLLs from the current working directory.
Indicators of Compromise (IOCs)
File-Based IOCs:
- Suspicious DLL files in user-writable directories (e.g.,
%TEMP%\helper.dll,%APPDATA%\quartus_dll.dll). - Modified or unexpected DLLs in the Quartus installation directory (e.g.,
C:\Program Files\Altera\Quartus\bin\).
Process-Based IOCs:
quartus_system_console.exeloading DLLs from non-standard paths.- Child processes spawned by
quartus_system_console.exe(e.g.,cmd.exe,powershell.exe).
Network-Based IOCs:
- Outbound connections from
quartus_system_console.exeto unknown IPs (if payload is a reverse shell).
Registry IOCs:
- Changes to
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SafeDllSearchMode.
Detection Engineering
YARA Rule
rule CVE_2025_14605_Quartus_DLL_Hijack {
meta:
description = "Detects potential DLL hijacking attempts targeting Altera Quartus Prime Pro System Console"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-14605"
hash = "unknown"
strings:
$s1 = "quartus_system_console.exe" nocase
$s2 = "System Console" nocase
$s3 = "Altera" nocase
$s4 = "Quartus" nocase
condition:
(uint16(0) == 0x5A4D) and // MZ header
(1 of ($s1, $s2, $s3, $s4)) and
(pe.imphash() == "unknown" or pe.imports("kernel32.dll", "LoadLibraryA") or pe.imports("kernel32.dll", "LoadLibraryW"))
}
Sigma Rule
title: CVE-2025-14605 - Altera Quartus Prime Pro DLL Hijacking
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects suspicious DLL loads by quartus_system_console.exe from non-standard paths
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-14605
logsource:
category: image_load
product: windows
detection:
selection:
Image|endswith: '\quartus_system_console.exe'
ImageLoaded|contains:
- '\Temp\'
- '\AppData\'
- '\Users\'
condition: selection
falsepositives:
- Legitimate DLLs loaded from user directories (rare)
level: high
Suricata Rule
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (
msg:"CVE-2025-14605 - Potential Altera Quartus Prime Pro DLL Hijack Outbound Connection";
flow:to_server,established;
content:"|48 54 54 50 2f|"; # HTTP/
pcre:"/User-Agent\x3a[^\r\n]*quartus/i";
sid:1000001;
rev:1;
reference:cve,2025-14605;
)
Remediation & Mitigation
Immediate Actions:
- Upgrade: If a patch becomes available, upgrade to the latest version of Quartus Prime Pro immediately.
- Safe DLL Search Mode: Enable Safe DLL Search Mode via Group Policy or registry:
- Registry:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SafeDllSearchMode=1
- Registry:
- Application Control: Use AppLocker or WDAC to restrict DLL loading to trusted paths only.
- User Education: Train users not to run Quartus from untrusted directories or open untrusted files.
Long-Term Fixes:
- Altera/Intel should release a patch that uses absolute paths or calls
SetDllDirectory("")to disable the current working directory search. - Implement code signing for all DLLs and verify signatures before loading.
Workarounds:
- Run Quartus Prime Pro in a sandboxed environment (e.g., Windows Sandbox, VMware) to limit the impact of exploitation.
- Monitor for the IOCs listed above.
Valters IT