Back to Intelligence

Cl0p Campaign: Defending PTC Windchill & FlexPLM Against Critical Auth-Bypass RCE

SA
Security Arsenal Team
July 25, 2026
7 min read

The Cl0p threat actor (tracked as FIN11, Lace Tempest, and Graceful Spider) has launched a new wave of data extortion attacks targeting the engineering and manufacturing sectors. Unlike previous campaigns focusing primarily on file transfer utilities, this operation zeroes in on Product Lifecycle Management (PLM) software.

Actors are actively chaining a pre-authentication information disclosure vulnerability in the FlexPLM WSDL endpoint with a critical server-side request forgery (SSRF) or deserialization flaw in the PTC Windchill login servlet. This chain enables unauthenticated Remote Code Execution (RCE) on internet-exposed instances. Given the high-value Intellectual Property typically stored in PLM systems, the risk of data theft and subsequent extortion is severe. Defenders must treat internet-facing instances as compromised until proven otherwise.

Technical Analysis

Affected Products:

  • PTC Windchill (PDMLink, Windchill RV&S)
  • PTC FlexPLM

The Vulnerability Chain: While specific CVE identifiers have not yet been assigned in public advisories at the time of this writing, the attack technique involves a specific chain of flaws:

  1. Initial Reconnaissance: Scanners identify internet-exposed instances running PTC software, often on default ports (e.g., 80, 443, 8080).
  2. Information Disclosure (Pre-Auth): Attackers query the FlexPLM WSDL (Web Services Definition Language) endpoint. This component, in its current vulnerable state, leaks internal configuration details or session tokens without requiring authentication.
  3. Server-Side Flaw Exploitation: Using the harvested information, the attacker targets the Windchill login servlet. The input validation failure in this servlet allows the injection of malicious serialized objects or specifically crafted requests.
  4. Remote Code Execution: The server-side flaw results in the application server (typically Apache Tomcat) executing arbitrary commands under the context of the service account.

Exploitation Status:

  • Confirmed Active Exploitation: Security Arsenal confirms active in-the-wild exploitation by Cl0p affiliates.
  • Access Vector: Network (adjacent or public internet via HTTP/HTTPS).
  • Complexity: Low. The chain is scripted and requires no user interaction.

Detection & Response

Detecting this activity requires monitoring for anomalies in web access logs and unexpected process spawns on the application servers.

Sigma Rules

The following rules target the specific web endpoint interaction and the typical process spawning behavior associated with Java-based RCE.

YAML
---
title: PTC FlexPLM WSDL Information Disclosure Access
id: 8a4f2c1e-9d3b-45a6-b2e1-7f8c9d0a1b2c
status: experimental
description: Detects access to the FlexPLM WSDL endpoint which is targeted in the initial recon stage of Cl0p exploitation chains.
references:
  - https://thehackernews.com/2026/07/cl0p-affiliates-target-internet-exposed.html
author: Security Arsenal
date: 2026/07/15
tags:
  - attack.initial_access
  - attack.t1190
logsource:
  category: web
  product: apache
  # Add nginx/iis variants as needed for your env
detection:
  selection:
    cs_uri_path|contains:
      - '/FlexPLM/'
      - '/Windchill/'
    cs_uri_path|endswith:
      - '.wsdl'
      - '?wsdl'
  condition: selection
falsepositives:
  - Legitimate developer API testing
level: medium
---
title: Java Application Server Spawning Shell - PTC Windchill
id: 9b5g3d2f-0e4c-56d7-a8f9-2e3d4c5b6a7d
status: experimental
description: Detects the PTC Windchill Java process spawning cmd.exe or powershell.exe, a strong indicator of successful RCE.
references:
  - https://thehackernews.com/2026/07/cl0p-affiliates-target-internet-exposed.html
author: Security Arsenal
date: 2026/07/15
tags:
  - attack.execution
  - attack.t1059.001
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|contains:
      - '\java.exe'
      - '\javaw.exe'
    ParentCommandLine|contains:
      - 'windchill'
      - 'ptc'
  selection_child:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
  condition: all of selection_*
falsepositives:
  - Administrative troubleshooting (rare on production app servers)
level: critical

KQL (Microsoft Sentinel / Defender)

Use this query to hunt for suspicious access patterns to the WSDL endpoints followed by potential exploitation indicators in subsequent requests.

KQL — Microsoft Sentinel / Defender
// Hunt for PTC WSDL access and anomalies
let WSDLAccess = DeviceNetworkEvents
| where UrlOriginal contains "FlexPLM" or UrlOriginal contains "Windchill"
| where UrlOriginal contains "wsdl"
| project TimeGenerated, DeviceName, SourceIP, UrlOriginal, RemotePort;
// Join with Process Creation to detect web shell activity or RCE follow-up
let ProcessSpawns = DeviceProcessEvents
| where InitiatingProcessFileName =~ "java.exe"
| where ProcessFileName in~ ("cmd.exe", "powershell.exe", "bash")
| project TimeGenerated, DeviceName, ProcessFileName, InitiatingProcessCommandLine;
WSDLAccess
| join kind=inner ProcessSpawns on DeviceName
| where ProcessSpawns_TimeGenerated between (WSDLAccess_TimeGenerated - 5min .. WSDLAccess_TimeGenerated + 5min)
| project TimeGenerated, DeviceName, SourceIP, UrlOriginal, ProcessFileName, CommandLine=InitiatingProcessCommandLine

Velociraptor VQL

This artifact hunts for Java processes associated with PTC software that have established network connections or spawned child shells.

VQL — Velociraptor
-- Hunt for suspicious Java processes and network activity
SELECT Pid, Name, CommandLine, Exe, Username
FROM pslist()
WHERE Name =~ 'java'
  AND (CommandLine =~ 'windchill' OR CommandLine =~ 'FlexPLM')
  AND Pid IN (
      -- Check if this Java process spawned a shell
      SELECT ParentPid
      FROM pslist()
      WHERE Name =~ 'sh' OR Name =~ 'bash' OR Name =~ 'cmd.exe' OR Name =~ 'powershell.exe'
  )

Remediation Script (PowerShell)

This script assists in identifying running PTC services and checking for exposure. Note: Immediate patching is the only true remediation for the code execution flaw.

PowerShell
# PTC Windchill/FlexPLM Exposure Assessment Script
# Run as Administrator on the application server

Write-Host "[+] Checking for PTC Windchill and FlexPLM Services..." -ForegroundColor Cyan

$ptcServices = Get-WmiObject Win32_Service | Where-Object { 
    $_.Name -like "*Windchill*" -or 
    $_.Name -like "*FlexPLM*" -or 
    $_.PathName -like "*Windchill*" -or 
    $_.PathName -like "*FlexPLM*" 
}

if ($ptcServices) {
    foreach ($svc in $ptcServices) {
        Write-Host "[!] Found PTC Service: $($svc.Name)" -ForegroundColor Yellow
        Write-Host "    State: $($svc.State)"
        Write-Host "    Path: $($svc.PathName)"
        
        # Check for associated Java processes
        $processId = (Get-WmiObject Win32_Process | Where-Object { $_.CommandLine -like "*$($svc.Name)*" }).ProcessId
        if ($processId) {
            Write-Host "    Running PID: $processId"
        }
    }
} else {
    Write-Host "[-] No PTC services found via WMI." -ForegroundColor Gray
}

# Check for listening ports associated with PTC (Default 80/443, often 8080)
Write-Host "\n[+] Checking for suspicious listening ports (Web Interfaces)..." -ForegroundColor Cyan

$netstat = netstat -ano | Select-String "LISTENING"
$targetPorts = @(80, 443, 8080, 8443)

foreach ($port in $targetPorts) {
    $listeners = $netstat | Select-String ":$port "
    if ($listeners) {
        Write-Host "[!] Port $port is listening. Verify if this is the PTC interface." -ForegroundColor Yellow
        $listeners | ForEach-Object {
            $parts = $_ -split '\s+'
            $pid = $parts[-1]
            $proc = Get-Process -Id $pid -ErrorAction SilentlyContinue
            Write-Host "    PID: $pid ($($proc.ProcessName))"
        }
    }
}

Write-Host "\n[+] Recommendation: If PTC services are found, ensure they are NOT internet-exposed." -ForegroundColor Green
Write-Host "    Apply the latest security patches from PTC Support immediately."

Remediation

Given the active exploitation status, immediate containment is the priority before patching.

1. Immediate Isolation (Containment):

  • Block Internet Access: If your PTC Windchill or FlexPLM instance is internet-facing, revoke public access immediately via firewall rules (ACLs) or Security Groups. These systems should be accessed strictly via VPN or internal network only.
  • Ingress Filtering: Ensure external traffic on ports 80/443/8080 is blocked at the network perimeter.

2. Patching:

  • Review the official PTC Security Advisory. Apply the hotfix or update version provided by PTC that addresses the "Critical Code Execution" and "WSDL Information Disclosure" flaws.
  • If a patch is not yet available, PTC may provide interim mitigation steps (e.g., disabling the specific WSDL endpoint or modifying servlet configurations).

3. Credential Reset:

  • Although the exploit is unauthenticated, assume that once RCE is achieved, attackers dumped credentials. Force a reset for all service accounts and local administrators on the affected hosts.

4. Compromise Assessment:

  • Assume data has been exfiltrated if the system was exposed. Review logs for large outbound transfers (specifically around the time of the WSDL access). Engage your DFIR team to hunt for webshells or persistence mechanisms.

Related Resources

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

criticalzero-daycvepatch-tuesdayexploitvulnerability-disclosurecl0pptc-windchillflexplmrce

Is your security operations ready?

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