Skip to main content
CVE-2026-12569 Critical Patch Available

CVE-2026-12569: PTC Windchill — Unauthenticated Deserialization RCE

CVE Details

CVE ID CVE-2026-12569
CVSS Score 9.3
Severity Critical
Vendor PTC
Product Windchill PDMLink / FlexPLM
Patch Status Available
Published June 25, 2026
EPSS Score 1.2%
CISA Patch Deadline ⚠ July 16, 2026 Federal deadline passed

Background

PTC Windchill PDMLink is the dominant product lifecycle management (PLM) platform in manufacturing and engineering environments, used to manage product data, CAD documents, bills of materials, and engineering change processes across complex supply chains. FlexPLM is PTC’s PLM offering for retail, apparel, and footwear verticals. Both products share an underlying application stack and are widely deployed on-premises in large enterprises, often with network connectivity to engineering workstations, ERP systems, and external partner portals.

CVE-2026-12569 is a deserialization vulnerability (CWE-502) with an associated input validation failure (CWE-20) that allows an unauthenticated, network-adjacent or remote attacker to execute arbitrary code on the Windchill or FlexPLM server. PTC assigned a CVSS 4.0 score of 9.3 (CRITICAL). CISA added the vulnerability to the Known Exploited Vulnerabilities catalog on June 25, 2026, with a three-day federal remediation deadline of June 28, 2026.

Active exploitation has been confirmed. Intrusion indicators include JSP webshells dropped to the Windchill login directory, consistent with post-exploitation tooling deployed following successful deserialization exploitation.

Technical Mechanism

The root cause is deserialization of attacker-controlled input at an unauthenticated network endpoint. Windchill’s Java-based application server accepts serialized objects over the network as part of its API and session handling. The application fails to validate or restrict the class types of deserialized objects before processing them, allowing an attacker to submit a malicious serialized payload containing a gadget chain that executes arbitrary code when deserialized by the server’s JVM.

This class of vulnerability — Java deserialization RCE — has been well-understood since 2015 and is characterised by several properties relevant to detection and mitigation:

  • No authentication is required. The vulnerable endpoint is reachable before any session is established.
  • Exploitation is network-based. An attacker with TCP connectivity to the Windchill HTTP(S) service can trigger the flaw without local access.
  • The gadget chain leverages existing Java libraries on the classpath. No custom payload delivery is required beyond the serialized object itself.
  • Post-exploitation typically involves dropping a webshell or establishing a reverse shell for persistent access.

PTC has not publicly disclosed the specific endpoint path or servlet that processes the malicious input. The X-windchill-req HTTP header has been identified as having no legitimate application purpose and should be treated as an exploitation indicator when observed in server logs.

Real-World Exploitation Evidence

Active exploitation of CVE-2026-12569 was confirmed prior to CISA’s KEV addition on June 25, 2026. The observed post-exploitation pattern is consistent with automated or semi-automated tooling:

  • JSP webshells with 16-character lowercase hexadecimal filenames appearing in the Windchill login directory. The pattern matches the regex /Windchill/login/[0-9a-f]{16}.jsp.
  • Suspicious POST requests targeting these dynamically-generated JSP paths following the initial exploitation request.

The Windchill login directory is web-accessible by design. Files written there by the application server process are immediately reachable by external HTTP clients, making it an effective webshell deployment location. The 16-character hex naming pattern is consistent with automated post-exploitation frameworks that generate random filenames to reduce collision probability and avoid static IOC matching.

No specific threat actor or ransomware group has been publicly attributed to observed exploitation as of June 25, 2026.

Impact Assessment

  • Unauthenticated RCE — an attacker with network access to the Windchill HTTP service can execute arbitrary commands in the context of the application server process without presenting credentials
  • Persistent access — observed exploitation deploys JSP webshells that survive patch application unless explicitly removed during remediation
  • PLM data exposure — Windchill stores engineering drawings, CAD files, bills of materials, supplier data, and product configurations; compromise provides access to IP representing years of engineering investment
  • Supply chain risk — many Windchill deployments connect to external partner portals and ERP systems; a compromised Windchill server may serve as a pivot point into connected environments
  • No CPS fix available — PTC’s Connected Product Server (CPS) versions are affected with no patch currently available, extending the exposure window for customers on that component

Affected Versions

ProductAffected VersionFixed Version
Windchill PDMLink11.0 M030Patch available — see CS473270
Windchill PDMLink11.1 M020Patch available — see CS473270
Windchill PDMLink11.2.1.0Patch available — see CS473270
Windchill PDMLink12.0.2.0Patch available — see CS473270
Windchill PDMLink12.1.2.0Patch available — see CS473270
Windchill PDMLink13.0.2.0Patch available — see CS473270
Windchill PDMLink13.1.0.0 – 13.1.3.0Patch available — see CS473270
FlexPLM11.0 M030 – 13.0.3.0Patch available — see CS473270
PTC Connected Product Server (CPS)All versionsNo fix currently available

Exact hotfix identifiers and download instructions are in PTC Support article CS473270. A PTC Support account is required to access the advisory.

Remediation Steps

  1. Apply PTC patches immediately. Access CS473270 at https://www.ptc.com/en/support/article/CS473270 with your PTC Support credentials. Apply all available hotfixes for your installed version. Prioritise internet-facing deployments.

  2. For CPS components with no available patch, disconnect from all external networks immediately. Restrict access to trusted internal IP ranges using firewall rules.

  3. Isolate unpatched systems. If immediate patching is not possible, remove Windchill/FlexPLM from internet exposure. Restrict access to the application’s HTTP/HTTPS ports (typically 80, 443, 8080) to internal network segments only at the network perimeter.

  4. Scan for webshells. Check the Windchill login directory for JSP files matching the pattern [0-9a-f]{16}.jsp:

    find <windchill_install>/wtcore/webapp/com/ptc/windchill/uwgm/security/login/ \
      -name "*.jsp" -newer <deployment_date_reference_file>

    Any unexpected JSP files should be treated as indicators of compromise. Preserve the files for forensic analysis before removal.

  5. Review HTTP access logs for POST requests to /Windchill/login/ with 16-character hex filenames and for requests containing the X-windchill-req header.

  6. Apply HTTP Server configuration mitigations referenced in CS473270 even on patched systems, as an additional layer of defence.

Detection Guidance

Web server access logs:

  • POST requests to paths matching /Windchill/login/[0-9a-f]{16}.jsp — this pattern is a reliable exploitation indicator
  • Requests containing the X-windchill-req HTTP header — no legitimate Windchill functionality uses this header
  • Unusual HTTP methods or large binary POST bodies to Windchill API endpoints, particularly from external source IPs

Filesystem monitoring:

  • New JSP files created in the Windchill login directory by the application server process
  • New files in /tmp, %TEMP%, or other writable locations created by the Windchill JVM process
  • Creation of unexpected listener sockets or child processes spawned by the Java application server

Network monitoring:

  • Outbound connections from the Windchill server to external hosts on non-standard ports, which may indicate a reverse shell or C2 beacon established after initial exploitation

SIEM query (Splunk — adapt index/sourcetype to your environment):

index=web sourcetype=access_combined 
  (uri_path="/Windchill/login/*.jsp" method="POST") 
  OR (cs_referer_header="X-windchill-req")
| table _time, src_ip, uri_path, method, status

Timeline

DateEvent
June 17, 2026CVE-2026-12569 first recorded (NVD discovery date)
June 25, 2026PTC patches released and CS473270 advisory published
June 25, 2026CISA adds CVE-2026-12569 to Known Exploited Vulnerabilities catalog
June 25, 2026JSP webshell deployment observed in active exploitation
June 28, 2026CISA BOD 26-04 federal remediation deadline

References