☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 5.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N 🐛 CWE-425
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-2595

CVE-2025-2595 Information Disclosure in Codesys
📅 PUBLISHED: 2025-04-23 07:54 UTC 🔄 UPDATED: 2026-08-12 14:52 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.03%
👁️
0.03% probability
<1× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 5.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: L Confidentiality Low
I: N Integrity None
A: N Availability None
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-2595 is a forced browsing vulnerability in CODESYS Visualization that allows an unauthenticated remote attacker to bypass user management and read visualization template files or static elements. The vulnerability has a CVSS score of 5.3 (Medium) and is currently unpatched. No public exploit code or proof-of-concept is available, but the attack vector is straightforward: an attacker can directly request protected file paths without authentication, leading to information disclosure of sensitive visualization assets.

This vulnerability affects industrial control systems (ICS) using CODESYS Visualization, commonly deployed in manufacturing, energy, and critical infrastructure. The lack of authentication checks on static file access enables reconnaissance and potential leakage of proprietary control logic or system topology.

⚡ 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

Not applicable – CODESYS Visualization is a proprietary runtime component, not an open-source package.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – exploitable remotely.
  • Attack Complexity (AC): Low (L) – no special conditions required.
  • Privileges Required (PR): None (N) – no authentication needed.
  • User Interaction (UI): None (N) – no user action required.
  • Scope (S): Unchanged (U) – impact confined to the vulnerable component.
  • Confidentiality (C): Low (L) – limited disclosure of visualization files.
  • Integrity (I): None (N) – no data modification.
  • Availability (A): None (N) – no denial of service.

Threat Level: Medium. While the CVSS score is moderate, the attack is trivial to execute and can expose sensitive design information in ICS environments.

Deep Dive & Mechanics

The vulnerability resides in the CODESYS Visualization web server component, which serves static visualization files (e.g., .vis, .xml, .png) to authenticated users. Due to missing access control checks on certain endpoints, an unauthenticated attacker can directly request these files by guessing or enumerating file paths.

Root Cause: The web server does not enforce authentication for requests to static file directories. The user management bypass occurs because the server checks authentication only for dynamic pages (e.g., login, control actions) but not for static asset retrieval.

Attack Flow:

  1. Attacker identifies a CODESYS Visualization instance (e.g., via Shodan search for "CODESYS WebVisu").
  2. Attacker sends HTTP GET requests to known file paths, such as /visu/visu.xml, /visu/template.vis, or /static/logo.png.
  3. The server returns the file contents without requiring a session cookie or authentication token.
  4. Attacker extracts sensitive information (e.g., IP addresses, device names, control logic diagrams).

Impact: Information disclosure of visualization templates can reveal system architecture, network topology, and operational parameters, aiding further attacks.

Vulnerable vs. Patched Code

No patched version is available. The vulnerable code pattern is a missing authentication middleware for static file routes.

Vulnerable (pseudo-code):

# CODESYS Visualization web server (simplified)
def handle_request(path):
    if path.startswith("/visu/"):
        # No authentication check
        return serve_file(path)
    elif path.startswith("/api/"):
        if not is_authenticated(request):
            return 401
        return handle_api(path)

Patched (expected):

def handle_request(path):
    if path.startswith("/visu/") or path.startswith("/static/"):
        if not is_authenticated(request):
            return 401
        return serve_file(path)
    elif path.startswith("/api/"):
        if not is_authenticated(request):
            return 401
        return handle_api(path)

Exploitation & Lab Setup

Red Team

Prerequisites:

  • Target running CODESYS Visualization (e.g., CODESYS Control Win V3 or embedded device).
  • Network access to the web interface (default port 8080).

Exploitation Steps:

  1. Enumerate the target:
    curl -v http://target:8080/visu/visu.xml
    
  2. If successful, download all accessible files:
    wget -r -np http://target:8080/visu/
    
  3. Analyze downloaded files for sensitive data (e.g., IPs, credentials, logic).

No public exploit code is available. The attack is manual forced browsing.

Blue Team

Detection:

  • Monitor HTTP logs for requests to /visu/, /static/, or /template/ without prior authentication.
  • Alert on repeated 200 responses to these paths from unauthenticated IPs.

Hunting:

  • Search for anomalous GET requests to visualization file extensions (.vis, .xml, .png, .svg).
  • Correlate with failed login attempts (if any) to identify reconnaissance.

Mitigation:

  • Implement a reverse proxy (e.g., Nginx) with authentication before the CODESYS web server.
  • Restrict network access to the visualization port using firewall rules.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • HTTP GET requests to /visu/visu.xml, /visu/template.vis, /static/*
    • Source IPs scanning multiple file paths in short succession
  • File IOCs:
    • Unauthorized access to files with extensions: .vis, .xml, .png, .svg, .css, .js
  • Behavioral IOCs:
    • Multiple 200 responses to unauthenticated requests for static files
    • Absence of session cookies in requests that return visualization content

Detection Engineering

YARA Rule

rule CVE_2025_2595_Forced_Browsing {
    meta:
        description = "Detects forced browsing attempts against CODESYS Visualization"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-2595"
    strings:
        $visu_path = "/visu/"
        $static_path = "/static/"
        $template_ext = ".vis"
        $xml_ext = ".xml"
    condition:
        any of ($visu_path, $static_path) and any of ($template_ext, $xml_ext)
}

Sigma Rule

title: CVE-2025-2595 CODESYS Visualization Forced Browsing
id: 8a3f2c1e-5d7b-4a9f-8c2e-1b3d5f7a9c0e
status: experimental
description: Detects unauthenticated access to CODESYS Visualization static files
author: Valters IT
logsource:
    category: webserver
    product: apache
    service: access_log
detection:
    selection:
        cs-method: 'GET'
        cs-uri-stem|startswith:
            - '/visu/'
            - '/static/'
        cs-uri-stem|endswith:
            - '.vis'
            - '.xml'
            - '.png'
            - '.svg'
    condition: selection
falsepositives:
    - Legitimate authenticated users (check for session cookie)
level: medium

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-2595 CODESYS Visualization Forced Browsing Attempt"; flow:to_server; http.method; content:"GET"; http.uri; content:"/visu/"; nocase; http.uri; content:".vis"; nocase; classtype:attempted-recon; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Network Segmentation: Restrict access to the CODESYS Visualization web interface to trusted IPs only using firewall rules.
  2. Reverse Proxy: Deploy an Nginx or Apache reverse proxy in front of the CODESYS web server and enforce HTTP Basic Authentication or OAuth.
  3. Disable Unused Features: If visualization is not required, disable the web server component entirely.

Long-Term Fix:

  • Await an official patch from CODESYS. Monitor their security advisory page.
  • Implement application-level authentication for all static file routes in custom deployments.

Workaround:

  • Modify the CODESYS application to serve visualization files only through authenticated API endpoints (if supported).

Valters IT
Senior DevSecOps & Cyber Threat Intelligence Analyst

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

CODESYS Visualization
CODESYS WebVisu

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-2595/ · 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.