VORANT. Threat Intelligence Research Sign in Create a free account

Trimble Cityworks deserialization RCE exploited in wild

high vulnerability government-nationalinfrastructure

Free public brief. The indicators, the detections with Splunk SPL already written (plus Elastic and KQL where they apply), and a Slack alert the next time this touches a vendor you run are in the app — free account, no card.

Authenticated deserialization flaw in Trimble Cityworks allows remote code execution; actively exploited.

A deserialization vulnerability in Trimble Cityworks, a GIS-based asset management system widely used in government and public infrastructure, permits authenticated attackers to execute arbitrary code on affected Microsoft Internet Information Services (IIS) web servers. CISA reports active exploitation in the wild. The vulnerability affects Cityworks versions prior to 15.8.9 and Cityworks with Office Companion versions prior to 23.10. Successful exploitation allows an attacker to install programs, view, change, or delete data within the privilege context of the compromised account; administrative accounts pose the highest risk. The attack requires authentication but no user interaction. Defenders should prioritize patching affected versions immediately, enforce least-privilege access controls, segment network infrastructure to isolate critical systems, and conduct vulnerability scanning to identify affected deployments.

Mentioned in this report

Vulnerabilities CVE-2025-0994KEV

Detection guidance

IIS Worker Process Spawning Command Shell or Script Host

ATT&CK T1190

w3wp.exe spawning cmd, PowerShell or script hosts - typical post-exploitation of a deserialization RCE against an IIS-hosted app such as Cityworks. Auto-generated starting point — validate and tune in your environment before deploying. IOC matches can false-positive on shared infrastructure and decay as adversary infrastructure rotates.

title: IIS Worker Process Spawning Command Shell or Script Host
description: Detects the IIS worker process w3wp.exe spawning an interpreter (cmd,
  PowerShell, mshta, wscript, cscript). This is the usual process pattern after exploiting
  a deserialization RCE in an IIS-hosted application such as Trimble Cityworks, and
  it also matches webshell use. Generalises on the parent/child relation, not on a
  specific payload.
tags:
- attack.initial-access
- attack.t1190
- attack.execution
logsource:
  category: process_creation
  product: windows
detection:
  selection:
    ParentImage|endswith: \w3wp.exe
    Image|endswith:
    - \cmd.exe
    - \powershell.exe
    - \pwsh.exe
    - \mshta.exe
    - \wscript.exe
    - \cscript.exe
  condition: selection
falsepositives:
- Legacy IIS web applications that deliberately shell out to cmd.exe for batch jobs
- Administrative web apps that invoke PowerShell for management tasks
level: medium
id: 6289c4ab-008a-533f-bc80-7dabb2c850a2
status: experimental
author: Vorant
references:
- https://www.cisecurity.org/advisory/a-vulnerability-in-trimble-cityworks-could-allow-for-remote-code-execution_2025-014

IIS Worker Process Spawning Download or Staging Tool

ATT&CK T1104

w3wp.exe spawning certutil, bitsadmin, curl or PowerShell download cradles to fetch a second-stage payload after exploitation of an IIS-hosted app. Auto-generated starting point — validate and tune in your environment before deploying. IOC matches can false-positive on shared infrastructure and decay as adversary infrastructure rotates.

title: IIS Worker Process Spawning Download or Staging Tool
description: Detects w3wp.exe launching file-transfer utilities or PowerShell download
  cradles, indicating a multi-stage intrusion where the initial web exploit (such
  as the Cityworks deserialization RCE) pulls down further tooling.
tags:
- attack.command-and-control
- attack.t1104
- attack.initial-access
- attack.t1190
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|endswith: \w3wp.exe
  selection_img:
    Image|endswith:
    - \certutil.exe
    - \bitsadmin.exe
    - \curl.exe
  selection_cli:
    CommandLine|contains:
    - DownloadString
    - DownloadFile
    - Invoke-WebRequest
    - Net.WebClient
    - Start-BitsTransfer
    - urlcache
    - 'iwr '
  condition: selection_parent and (selection_img or selection_cli)
falsepositives:
- Web applications that legitimately call curl.exe to reach internal APIs
level: high
id: e9852e6f-c4d0-59cf-8da0-95c7a3f6ebea
status: experimental
author: Vorant
references:
- https://www.cisecurity.org/advisory/a-vulnerability-in-trimble-cityworks-could-allow-for-remote-code-execution_2025-014

IIS Worker Process Spawning Reconnaissance Commands

ATT&CK T1190

w3wp.exe spawning whoami, systeminfo, net, nltest, etc. indicating hands-on-keyboard discovery after web application exploitation. Auto-generated starting point — validate and tune in your environment before deploying. IOC matches can false-positive on shared infrastructure and decay as adversary infrastructure rotates.

title: IIS Worker Process Spawning Reconnaissance Commands
description: Detects the IIS worker process spawning host and domain discovery utilities.
  After exploiting an IIS-hosted app (for example Cityworks), attackers commonly check
  their privilege context and the environment first.
tags:
- attack.initial-access
- attack.t1190
- attack.discovery
logsource:
  category: process_creation
  product: windows
detection:
  selection:
    ParentImage|endswith: \w3wp.exe
    Image|endswith:
    - \whoami.exe
    - \systeminfo.exe
    - \ipconfig.exe
    - \nltest.exe
    - \net.exe
    - \net1.exe
    - \quser.exe
    - \tasklist.exe
  condition: selection
falsepositives:
- Web-based server monitoring or diagnostics pages that run ipconfig or tasklist
level: high
id: 94b128f6-5a16-53cd-b4a7-8f6315f5fca2
status: experimental
author: Vorant
references:
- https://www.cisecurity.org/advisory/a-vulnerability-in-trimble-cityworks-could-allow-for-remote-code-execution_2025-014

Behavioural rules are generated from public reporting — validate in your environment before deploying.

Source reporting: https://www.cisecurity.org/advisory/a-vulnerability-in-trimble-cityworks-could-allow-for-remote-code-execution_2025-014

What this brief leaves out

This page is the free tier: the write-up, the severity, the names. In the app the same report carries its extracted indicators, its detections (Splunk SPL already written, plus Elastic and Microsoft KQL where they apply), the actors and CVEs it names as live profiles, and the vendor research on the same campaign — the primary source the news paraphrased, cited and read directly.

It sits in a corpus of 13,854 reports from 146 sources, 616 of them written in the last seven days, and it grows through the day.

A new account starts with three days of all of it, no card, then keeps the government and CERT reporting free. Name the vendors you run and Slack hears about the reports that touch them — about forty a week that are yours, not the four hundred that are not.

Create a free account   What it costs