Back to Intelligence

CVE-2026-67212: Trend Micro VPN OpenSSL DLL Search Path Hijacking — Local Privilege Escalation Detection and Remediation Guide

SA
Security Arsenal Team
August 14, 2026
10 min read

The Zero Day Initiative has published ZDI-26-577, disclosing a local privilege escalation vulnerability in Trend Micro VPN tracked as CVE-2026-67212 with a CVSS v3.1 score of 7.0 (High). The flaw is an uncontrolled search path element (CWE-427) in the product's OpenSSL configuration handling: the VPN client loads OpenSSL configuration or dependent modules from a search path that a low-privileged local user can influence, allowing an attacker to plant a malicious file that gets loaded by a higher-privileged process.

Two things matter to defenders here. First, this is a post-compromise enabler, not an initial access vector — the attacker must already execute low-privileged code on the host. But in real intrusions, that bar is trivially met: phishing payloads, commodity loaders, and RMM abuse all land as a standard user, and a reliable local EoP is the bridge to SYSTEM, credential theft, and EDR tampering. Second, a VPN client is a high-value target. It runs with elevated service privileges, holds network trust, and — as a Trend Micro-branded product — may sit inside environments that also run Trend Micro endpoint security, making self-protection bypass a plausible follow-on objective.

Any organization running Trend Micro VPN on Windows endpoints should treat this as a priority patch and, in parallel, hunt for evidence of planted OpenSSL configuration files or DLL sideloading artifacts.

Technical Analysis

Affected Component

  • Product: Trend Micro VPN (Windows client installations)
  • Advisory: ZDI-26-577 — http://www.zerodayinitiative.com/advisories/ZDI-26-577/
  • CVE: CVE-2026-67212
  • CVSS v3.1: 7.0 (High) — consistent with the typical local EoP vector AV:L/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:H profile ZDI assigns to this class
  • Vulnerability class: CWE-427 — Uncontrolled Search Path Element, manifesting through the product's OpenSSL configuration loading
  • Exploitation requirement: Local code execution as a low-privileged user

How the Vulnerability Works

OpenSSL-based applications commonly read a configuration file (conventionally openssl.cnf) located via the OPENSSL_CONF environment variable, a compiled-in default path, or a search order relative to the loading process. When that resolution is not pinned to an absolute, ACL-protected path, a local attacker can influence which configuration — and therefore which engines, providers, or extension modules — OpenSSL loads. The attack chain from a defender's perspective:

  1. Foothold: Attacker executes code as a standard user on a host running Trend Micro VPN.
  2. Plant: The attacker writes a malicious OpenSSL configuration file (e.g., an openssl.cnf referencing an attacker-controlled engine/provider DLL) into a location the vulnerable process searches — typically a user-writable directory, the application's working directory, or a path component writable by BUILTIN\Users.
  3. Trigger: The attacker restarts or waits for the elevated Trend Micro VPN service/process to initialize OpenSSL. Because the service runs with elevated integrity (SYSTEM or a privileged service account), the planted configuration causes the service to load and execute the attacker's module.
  4. Escalation: The malicious DLL executes inside the privileged process context — yielding SYSTEM-level code execution, and from there, LSASS access, token manipulation, persistence, or EDR/AV tampering.

This is structurally identical to DLL search order hijacking (MITRE ATT&CK T1574.001/T1574.002) and the exploitation of insecure directory permissions (T1574.005 — Path Interception by Search Order Hijacking). The elevated trigger and the user-writable plant location are the two observables you should build detection around.

Exploitation Status

  • Disclosure: Coordinated via ZDI (advisory ZDI-26-577), indicating Trend Micro was notified ahead of publication.
  • Active exploitation: No confirmed in-the-wild exploitation has been reported at time of writing, and CVE-2026-67212 is not currently listed in CISA KEV.
  • PoC availability: No public proof-of-concept is known, but this vulnerability class is extremely well understood. DLL search path and OpenSSL configuration hijack techniques are documented, stable, and low-skill to weaponize — assume weaponization time measured in days, not months.

Do not let the "local only, requires existing access" framing downgrade your urgency. Local EoP bugs in security-adjacent software are routinely chained in ransomware and intrusion operations precisely because they convert a noisy user-level foothold into silent SYSTEM control.

Detection & Response

The reliable observables for this technique are: (1) OpenSSL configuration files appearing in user-writable or non-standard locations, (2) the elevated Trend Micro VPN process loading modules from unusual paths, and (3) world/user-writable directories on the application's search path. Detection should be layered across file creation, image load, and process lineage telemetry.

SIGMA Rules

YAML
---
title: Trend Micro VPN Process Loading Module From User-Writable Path
id: 9d3e2c71-5a48-4b6f-9c21-7e4a5b8d6f01
status: experimental
description: Detects Trend Micro VPN components loading DLLs or OpenSSL providers/engines from user-writable directories, consistent with CVE-2026-67212 uncontrolled search path exploitation.
references:
  - http://www.zerodayinitiative.com/advisories/ZDI-26-577/
  - https://attack.mitre.org/techniques/T1574/001/
  - https://attack.mitre.org/techniques/T1574/002/
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.privilege_escalation
  - attack.t1574.001
  - attack.t1574.002
logsource:
  category: image_load
  product: windows
detection:
  selection_loader:
    Image|contains:
      - '\Trend Micro\'
      - '\TMVPN'
      - 'vpnclient'
  selection_module_path:
    ImageLoaded|contains:
      - '\Users\Public\'
      - '\AppData\Local\Temp\'
      - '\AppData\Roaming\'
      - '\ProgramData\'
      - '\Windows\Temp\'
      - '\PerfLogs\'
  filter_signed_programfiles:
    ImageLoaded|contains:
      - '\Program Files\Trend Micro\'
      - '\Program Files (x86)\Trend Micro\'
      - '\Windows\System32\'
  condition: selection_loader and selection_module_path and not filter_signed_programfiles
falsepositives:
  - Rare legitimate plugin loads from ProgramData; verify signer and hash
level: high
---
title: OpenSSL Configuration File Created In Non-Standard Location
id: 4f7a1b92-8c3d-4e5a-b916-2d8f6a3c9e55
status: experimental
description: Detects creation of openssl.cnf or OpenSSL provider/engine configuration in user-writable directories, a staging artifact for CVE-2026-67212 exploitation against Trend Micro VPN.
references:
  - http://www.zerodayinitiative.com/advisories/ZDI-26-577/
  - https://attack.mitre.org/techniques/T1574/005/
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.privilege_escalation
  - attack.persistence
  - attack.t1574.005
logsource:
  category: file_event
  product: windows
detection:
  selection_name:
    TargetFilename|endswith:
      - '\openssl.cnf'
      - '\openssl.cfg'
      - 'engines.dll'
  selection_path:
    TargetFilename|contains:
      - '\Users\'
      - '\ProgramData\'
      - '\Windows\Temp\'
  filter_vendor_path:
    TargetFilename|contains:
      - '\Program Files\Trend Micro\'
      - '\Program Files (x86)\Trend Micro\'
  condition: selection_name and selection_path and not filter_vendor_path
falsepositives:
  - Developers installing local OpenSSL toolchains in their profile
level: medium
---
title: Elevated Service Process Spawned By Trend Micro VPN Executing Unsigned Child
id: b21c6d48-3f7e-4a90-8d5b-1c9e4a7f2b33
status: experimental
description: Detects Trend Micro VPN processes spawning unexpected command interpreters or scripting hosts, a potential post-exploitation indicator following successful privilege escalation via CVE-2026-67212.
references:
  - http://www.zerodayinitiative.com/advisories/ZDI-26-577/
  - https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.execution
  - attack.privilege_escalation
  - attack.t1059
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|contains:
      - '\Trend Micro\'
      - 'vpn'
  selection_child:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
      - '\mshta.exe'
      - '\net.exe'
      - '\net1.exe'
      - '\whoami.exe'
  condition: selection_parent and selection_child
falsepositives:
  - Vendor diagnostics or update routines invoking cmd.exe; confirm with Trend Micro release notes
level: high

KQL — Microsoft Sentinel / Defender

Hunt across file creation, image loads, and process lineage for the plant-load-execute chain:

KQL — Microsoft Sentinel / Defender
// Hunt 1: Trend Micro VPN loading modules from user-writable paths (CVE-2026-67212)
let WritablePaths = dynamic(["\\Users\\Public\\", "\\AppData\\Local\\Temp\\", "\\AppData\\Roaming\\", "\\Windows\\Temp\\", "\\ProgramData\\", "\\PerfLogs\\"]);
DeviceImageLoadEvents
| where FolderPath has_any ("Trend Micro", "TMVPN") or InitiatingProcessFolderPath has_any ("Trend Micro", "TMVPN")
| where FileName endswith ".dll" or FileName endswith ".cnf"
| where FolderPath has_any (WritablePaths)
| where FolderPath !has "Program Files"
| project TimeGenerated, DeviceName, FileName, FolderPath, SHA256, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessAccountName
| order by TimeGenerated desc;
// Hunt 2: Staged OpenSSL configuration files in writable locations
DeviceFileEvents
| where FileName =~ "openssl.cnf" or FileName endswith "engines.dll"
| where FolderPath has_any ("\\Users\\", "\\ProgramData\\", "\\Windows\\Temp\\")
| where FolderPath !has "Program Files"
| join kind=leftouter (DeviceProcessEvents | summarize by DeviceId, FileName=InitiatingProcessFileName, TimeGenerated) on DeviceId
| project TimeGenerated, DeviceName, FileName, FolderPath, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessAccountName;
// Hunt 3: VPN service spawning shells or recon utilities post-exploitation
DeviceProcessEvents
| where InitiatingProcessFolderPath has_any ("Trend Micro", "vpn")
| where FileName in~ ("cmd.exe", "powershell.exe", "pwsh.exe", "rundll32.exe", "regsvr32.exe", "net.exe", "whoami.exe", "nltest.exe")
| project TimeGenerated, DeviceName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessAccountName, AccountName
| order by TimeGenerated desc;

Velociraptor VQL

Sweep the fleet for planted OpenSSL configuration artifacts and suspicious module loads around the Trend Micro VPN installation:

VQL — Velociraptor
-- Hunt for OpenSSL config staging and suspicious DLLs in user-writable paths (CVE-2026-67212)
SELECT FullPath, Size, Mtime, Ctime
FROM glob(globs=[
  'C:/Users/*/AppData/**/openssl.cnf',
  'C:/Users/Public/**/openssl.cnf',
  'C:/ProgramData/**/openssl.cnf',
  'C:/Windows/Temp/**/openssl.cnf',
  'C:/Users/*/AppData/**/engines.dll'
])

-- Correlate with running Trend Micro VPN processes and their loaded modules
SELECT Pid, Name, Exe, CommandLine, Username
FROM pslist()
WHERE Exe =~ '(?i)trend.?micro|tmvpn|vpn'

Remediation and Verification Script

Use this PowerShell to audit the search-path posture and identify exposure pending patch deployment:

PowerShell
# CVE-2026-67212 - Trend Micro VPN exposure audit and hardening verification
# Run elevated on each endpoint hosting Trend Micro VPN

$Report = [ordered]@{}

# 1. Locate Trend Micro VPN installation
$InstallPaths = @(
  "$env:ProgramFiles\Trend Micro",
  "${env:ProgramFiles(x86)}\Trend Micro"
) | Where-Object { Test-Path $_ }
$Report['TrendMicroInstalled'] = [bool]$InstallPaths

# 2. Check for OPENSSL_CONF environment variable abuse (user-controllable config path)
$Report['OPENSSL_CONF_Machine'] = [Environment]::GetEnvironmentVariable('OPENSSL_CONF','Machine')
$Report['OPENSSL_CONF_User']    = [Environment]::GetEnvironmentVariable('OPENSSL_CONF','User')
if ($Report['OPENSSL_CONF_User']) {
  Write-Warning "User-level OPENSSL_CONF set: $($Report['OPENSSL_CONF_User']) - potential hijack vector"
}

# 3. Audit ACLs on installation directory for write access by non-admins
foreach ($Path in $InstallPaths) {
  Get-ChildItem $Path -Directory -Recurse -ErrorAction SilentlyContinue | ForEach-Object {
    $acl = Get-Acl $_.FullName
    $weak = $acl.Access | Where-Object {
      $_.IdentityReference -match 'Users|Everyone|Authenticated Users' -and
      $_.FileSystemRights -match 'Write|Modify|FullControl' -and
      $_.AccessControlType -eq 'Allow'
    }
    if ($weak) {
      Write-Warning "WRITABLE BY NON-ADMINS: $($_.FullName) -> $($weak.IdentityReference -join ', ')"
    }
  }
}

# 4. Scan for planted OpenSSL config artifacts in writable locations
$SuspectFiles = Get-ChildItem -Path "$env:PUBLIC","$env:ProgramData","$env:windir\Temp","$env:LOCALAPPDATA" `
  -Recurse -Include 'openssl.cnf','openssl.cfg','engines.dll' -ErrorAction SilentlyContinue
$Report['SuspectArtifacts'] = $SuspectFiles.FullName

# 5. Check Trend Micro VPN product version against vendor advisory
$vpn = Get-WmiObject Win32_Product -ErrorAction SilentlyContinue |
  Where-Object { $_.Name -match 'Trend Micro.*VPN' }
$Report['InstalledVersion'] = $vpn.Version
$Report

# 6. Remediation action: remove rogue user-level OPENSSL_CONF if unauthorized
# [Environment]::SetEnvironmentVariable('OPENSSL_CONF',$null,'User')

Write-Host "`nACTION: Confirm installed version against ZDI-26-577 / Trend Micro advisory and apply the vendor update." -ForegroundColor Yellow

Remediation

  1. Apply the vendor fix immediately. Consult ZDI-26-577 (http://www.zerodayinitiative.com/advisories/ZDI-26-577/) and the corresponding Trend Micro security advisory for the patched build of Trend Micro VPN. Because ZDI advisories are published after coordinated disclosure, a fixed release should be available or imminent — verify the exact fixed version against Trend Micro's official support portal before declaring remediation complete.
  2. Prioritize by exposure, not by CVSS alone. Any host where Trend Micro VPN is installed AND standard users can execute code (i.e., virtually every workstation) is in scope. Terminal servers, jump boxes, and analyst workstations with broader local access go first.
  3. Audit search-path hygiene as a compensating control. Until patched: verify no user-level OPENSSL_CONF variables exist, confirm the Trend Micro VPN installation tree denies write/modify to BUILTIN\Users and Everyone, and remove any OpenSSL configuration files found outside the vendor's signed installation path.
  4. Deploy the detection content above. The file-creation and image-load rules are the highest-signal tripwires — a planted openssl.cnf in C:\Users\Public or an unsigned DLL loading into the VPN service from a temp directory is not legitimate behavior.
  5. Hunt retrospectively. This flaw existed before disclosure. Review 90+ days of image-load and file-creation telemetry on VPN hosts for the patterns above before assuming a clean state.
  6. Harden the escalation surface broadly. Enable DLL safe search mode where applicable, enforce WDAC/AppLocker policies blocking unsigned module loads into security-product processes, and ensure EDR tamper protection is active — SYSTEM-level EoP in a security-adjacent product is a classic precursor to defense evasion.

The pattern here — a security or connectivity product shipping an uncontrolled search path in a third-party dependency — recurs constantly across vendors. If your vulnerability management program only scans for CVEs in the primary binary and not in bundled dependencies like OpenSSL, this advisory is your reminder to close that gap.

Related Resources

Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.