CVE-2025-13669
Executive Summary
CVE-2025-13669 is an Uncontrolled Search Path Element vulnerability (CWE-427) affecting Altera High Level Synthesis Compiler on Windows, versions 19.1 through 24.3. This flaw allows an attacker to perform Search Order Hijacking, potentially leading to arbitrary code execution in the context of the user running the compiler. The vulnerability has a CVSS score of 0.0 (likely unassigned or placeholder), but the underlying weakness is well-understood and exploitable in Windows environments. No public proof-of-concept, patch, or exploit code is currently available. The EPSS score is 0.0%, indicating low exploitation likelihood at this time, but the risk increases if the compiler is used in CI/CD or development pipelines.
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 Windows-native binary vulnerability in Altera's High Level Synthesis Compiler, which is part of the Intel/Altera FPGA development toolchain. The risk is primarily to development and build environments where the compiler is installed.
CVSS Breakdown & Threat Level
- CVSS Score: 0.0 (Unassigned)
- Attack Vector: Local (Windows)
- Attack Complexity: Low
- Privileges Required: Low (user-level)
- User Interaction: Required (user must launch the compiler)
- Scope: Unchanged
- Confidentiality Impact: High
- Integrity Impact: High
- Availability Impact: High
Threat Level: Medium (due to local attack vector and lack of public exploit, but high impact if exploited in development environments).
Deep Dive & Mechanics
The vulnerability lies in how the Altera High Level Synthesis Compiler (HLS Compiler) resolves dynamic link libraries (DLLs) or other executable paths on Windows. The compiler uses an uncontrolled search path, meaning it searches for required components in directories that may be writable by a low-privileged user (e.g., the current working directory, %PATH%, or user-specific folders). An attacker can place a malicious DLL or executable in a location that the compiler searches before the legitimate system or application directory. When the compiler loads, it inadvertently executes the attacker's payload, leading to arbitrary code execution.
Attack Scenario:
- An attacker gains low-privileged access to a Windows machine (e.g., via phishing or another vulnerability).
- The attacker identifies that the Altera HLS Compiler is installed and used by a developer or build system.
- The attacker places a malicious DLL (e.g.,
version.dll,dbghelp.dll, or a custom DLL) in a directory that the compiler searches first (e.g., the current working directory of the build script). - When the developer runs the HLS Compiler, the malicious DLL is loaded, executing the attacker's code with the user's privileges.
- The attacker can then escalate privileges, steal data, or pivot within the network.
Vulnerable vs. Patched Code
Since no patch is available, we cannot provide a direct code comparison. However, the vulnerable behavior is typical of applications that use LoadLibrary or CreateProcess without specifying a full path or using safe DLL search order mitigation (e.g., SetDllDirectory or LOAD_LIBRARY_SEARCH_SYSTEM32).
Vulnerable (Conceptual):
// Unsafe: relies on default search order
HMODULE hMod = LoadLibrary("helper.dll");
Patched (Conceptual):
// Safe: specify full path or use secure search
SetDllDirectory(L"C:\\Program Files\\Altera\\HLS\\bin");
HMODULE hMod = LoadLibrary(L"C:\\Program Files\\Altera\\HLS\\bin\\helper.dll");
Exploitation & Lab Setup
Red Team
Objective: Demonstrate DLL hijacking to gain code execution.
Prerequisites:
- Windows VM with Altera HLS Compiler 19.1-24.3 installed.
- Low-privileged user account.
- Ability to write to a directory searched by the compiler (e.g.,
C:\Users\<user>\AppData\Local\Tempor project directory).
Steps:
- Create a malicious DLL (e.g.,
evil.dll) that executes a payload (e.g., reverse shell or calc.exe). - Identify a DLL that the HLS Compiler loads unsafely (e.g.,
version.dllordbghelp.dll). Use Process Monitor to find missing or hijackable DLLs. - Place the malicious DLL in a directory that is searched before the legitimate one (e.g., the current working directory of the build script).
- Run the HLS Compiler (e.g.,
hls_compiler.exe). - Observe that the malicious DLL is loaded and the payload executes.
Example DLL (C++):
#include <windows.h>
#pragma comment(linker, "/EXPORT:SomeExportFunction=legitdll.SomeExportFunction")
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("calc.exe");
}
return TRUE;
}
Blue Team
Detection:
- Monitor for unexpected DLL loads by
hls_compiler.exeusing Sysmon Event ID 7 (Image Loaded). - Look for DLLs loaded from non-standard paths (e.g.,
C:\Users\*\AppData\Local\Temp\,C:\Windows\Temp\, or project directories). - Use AppLocker or Windows Defender Application Control (WDAC) to block untrusted DLLs.
Hunting Query (KQL):
DeviceEvents
| where ActionType == "DllLoaded"
| where FileName endswith ".dll"
| where InitiatingProcessFileName == "hls_compiler.exe"
| where FolderPath startswith "C:\\Users" or FolderPath startswith "C:\\Windows\\Temp"
| project Timestamp, DeviceName, InitiatingProcessFileName, FolderPath, SHA256
Indicators of Compromise (IOCs)
- File Hashes: (No known malicious samples yet)
- Process Names:
hls_compiler.exe(legitimate, but abused) - DLL Names: Any DLL loaded from non-standard paths (e.g.,
version.dll,dbghelp.dll,msvcp140.dll) - Network Connections: Outbound connections from
hls_compiler.exeto unknown IPs (if payload is a reverse shell) - Registry Changes:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run(if persistence is achieved)
Detection Engineering
YARA Rule
rule CVE_2025_13669_DLL_Hijack {
meta:
description = "Detects potential DLL hijacking targeting Altera HLS Compiler"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-13669"
strings:
$s1 = "hls_compiler.exe" nocase
$s2 = "Altera" nocase
$s3 = "High Level Synthesis" nocase
condition:
$s1 or ($s2 and $s3)
}
Sigma Rule
title: DLL Hijacking via Altera HLS Compiler
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects DLL load events from non-standard paths by hls_compiler.exe
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-13669
logsource:
product: windows
service: sysmon
detection:
selection:
EventID: 7
Image: '*\hls_compiler.exe'
filter:
- ImageLoaded: 'C:\Program Files\Altera\*'
- ImageLoaded: 'C:\Windows\System32\*'
- ImageLoaded: 'C:\Windows\SysWOW64\*'
condition: selection and not filter
falsepositives:
- Legitimate DLLs loaded from custom Altera installation paths
level: high
Suricata Rule
alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (
msg:"CVE-2025-13669 - Potential DLL Hijack Payload Download";
flow:to_server,established;
content:"hls_compiler"; nocase;
content:".dll"; nocase;
distance:0;
classtype:attempted-user;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Isolate the compiler: Run Altera HLS Compiler in a sandboxed or containerized environment (e.g., Windows Sandbox, Docker with Windows containers).
- Restrict write permissions: Ensure that directories searched by the compiler (e.g.,
%PATH%, current working directory) are not writable by low-privileged users. - Use Safe DLL Search Mode: Enable the Windows feature by setting
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SafeDllSearchModeto1(default is1for Windows 10+). - Monitor and audit: Deploy Sysmon and the Sigma rule above to detect anomalous DLL loads.
Long-Term Fix:
- Apply an official patch from Altera/Intel when available.
- Recompile the HLS Compiler with secure DLL loading practices (e.g., using
SetDllDirectoryorLOAD_LIBRARY_SEARCH_SYSTEM32).
Workaround:
- Use a custom wrapper script that sets the working directory to a secure location before launching the compiler.
Valters IT
DevSecOps & Cyber Threat Intelligence