CISA ICSA-26-244-04 flags a high-severity local privilege-escalation weakness in Rockwell Automation FactoryTalk Activation Manager: V5.02 and below are affected by CVE-2026-16675, scored CVSS v3 7.8. The advisory is especially relevant to Critical Manufacturing environments deployed worldwide, where FactoryTalk licensing and activation components often sit on engineering workstations, HMI servers, historians, and maintenance laptops that already hold trusted access into the OT zone.
The practical risk is not simply another Windows installer bug. The advisory describes installer custom actions that spawn visible console windows running as SYSTEM during installation or repair operations. On a shared jump host or engineering station, a local user who can trigger or reach those consoles may be able to convert ordinary interactive access into SYSTEM-level execution. In OT environments, that can become the bridge from a compromised maintenance account to credential theft, lateral movement, tampering with licensing services, or persistence on systems that are rarely rebuilt.
The source item available to defenders is terse and appears truncated mid-sentence, so do not treat this post as a replacement for the vendor CSAF. Pull the official CSAF and Rockwell PSIRT advisory before change-control approval. Until a fixed build is verified in your asset inventory, operate as if any Windows host running FactoryTalk Activation Manager V5.02 or lower is exposed to local privilege gain during install, modify, or repair workflows.
Technical analysis
Affected product and version scope, per the CISA summary: Rockwell Automation FactoryTalk Activation Manager V5.02_and_below. The listed vulnerability class is Improper Restriction of Excessive Authentication Attempts, while the narrative describes an unauthorized privilege gain condition rooted in installer custom actions. Those two statements should be read together conservatively: the security-relevant behavior is privileged execution surface created during setup/repair, and the weakness class points at missing guardrails around privileged authentication/authorization attempts. Do not over-index on the label; the observable behavior is what your SOC can control today.
The vulnerable component is the Windows Installer/custom-action path used by FactoryTalk Activation Manager during installation, modification, or repair. In normal MSI execution, custom actions should not expose interactive command surfaces to standard users, and elevated operations should be brokered through controlled, non-interactive elevated contexts. The advisory indicates that console windows are spawned visibly and run with SYSTEM privileges. A defender should assume the risky sequence looks like this: a user or process initiates setup/repair, Windows Installer or a vendor bootstrapper runs custom actions, a console host or shell is created in a SYSTEM context, and a local actor with access to the session or desktop can interact with that window or hijack the execution flow.
Exploitation requirements are likely local and context-dependent. An attacker probably needs some ability to reach the machine during setup/repair, influence installer execution, or interact with the spawned console. That still matters in OT because FactoryTalk systems are frequently administered by multiple roles: vendors, integrators, controls engineers, IT support, and remote maintenance accounts. A local standard user on a shared engineering workstation is not a low-risk assumption; it is a common operating model.
Exploitation status: the supplied advisory item does not state confirmed in-the-wild exploitation, a public PoC, or CISA KEV inclusion. Treat it as unconfirmed but urgent. CVSS 7.8 plus SYSTEM context plus critical manufacturing deployment justifies immediate exposure reduction even without a public exploit.
Detection and response
Prioritize hosts where FactoryTalk Activation Manager is installed, where Rockwell installers are staged, and where local interactive logon is permitted. The highest-fidelity behavioral signal is Windows Installer or a vendor setup bootstrapper spawning console/shell processes, especially in a SYSTEM context, with command lines or working paths referencing FactoryTalk, Activation Manager, repair, REINSTALL, or MSI transforms. A secondary signal is unexpected authentication/authorization failure bursts around the activation or licensing service, but avoid broad failed-logon detections unless you can bind them to the product path and host role; generic failure spikes will drown the SOC.
---
title: Windows Installer Spawns Shell During FactoryTalk Activation Manager Install or Repair
id: 8f2f6b6a-7c5e-4f4a-9a26-cve202616675
status: experimental
description: Detects cmd, conhost, PowerShell, wscript, or cscript spawned by msiexec or setup while FactoryTalk/Activation install or repair indicators are present. Intended to catch SYSTEM console exposure described in ICSA-26-244-04.
references:
- https://www.cisa.gov/news-events/ics-advisories/icsa-26-244-04
- https://attack.mitre.org/techniques/T1068/
- https://attack.mitre.org/techniques/T1548/002/
author: Security Arsenal
date: 2026/09/02
tags:
- attack.privilege_escalation
- attack.t1068
- attack.t1548.002
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith:
- '\msiexec.exe'
- '\setup.exe'
- '\install.exe'
selection_child:
Image|endswith:
- '\cmd.exe'
- '\conhost.exe'
- '\powershell.exe'
- '\pwsh.exe'
- '\wscript.exe'
- '\cscript.exe'
selection_context:
CommandLine|contains:
- 'FactoryTalk'
- 'Activation Manager'
- 'REINSTALL'
- '/repair'
- '/fa'
- 'msiexec'
condition: selection_parent and selection_child and selection_context
falsepositives:
- Legitimate Rockwell installation or repair performed by authorized change window; validate against CMDB ticket and installer hash
level: high
---
title: SYSTEM Interactive Console Created On FactoryTalk Host
id: 4b1a7d55-2b3d-4c74-8c5d-ftamconsole26
status: experimental
description: Looks for interactive console/shell processes on hosts with FactoryTalk installation paths where the command line references activation, licensing, or repair. Use on engineering workstations, HMIs, and OT jump hosts.
references:
- https://www.cisa.gov/news-events/ics-advisories/icsa-26-244-04
- https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/09/02
tags:
- attack.execution
- attack.t1059
- attack.privilege_escalation
logsource:
category: process_creation
product: windows
detection:
selection_shell:
Image|endswith:
- '\cmd.exe'
- '\conhost.exe'
- '\powershell.exe'
- '\pwsh.exe'
selection_markers:
CommandLine|contains:
- 'FactoryTalk Activation Manager'
- 'FactoryTalk Activation'
- 'FTActivation'
- 'Activation Manager'
- 'Rockwell Automation'
- 'repair'
filter_common:
CommandLine|contains:
- 'conhost.exe 0xffffffff'
condition: selection_shell and selection_markers and not filter_common
falsepositives:
- Vendor support sessions and approved licensing maintenance; scope to critical assets and require change record
level: medium
---
title: FactoryTalk Activation Manager Install Directory Modified Outside Approved Setup
id: 0a6d2b2f-c24a-4e42-a43c-ftamfile26
status: experimental
description: Detects creation of scripts or executables in FactoryTalk Activation Manager directories by processes other than known installer binaries. Useful for post-escalation persistence and tamper hunting.
references:
- https://www.cisa.gov/news-events/ics-advisories/icsa-26-244-04
- https://attack.mitre.org/techniques/T1036/
- https://attack.mitre.org/techniques/T1547/
author: Security Arsenal
date: 2026/09/02
tags:
- attack.persistence
- attack.defense_evasion
- attack.t1036
logsource:
category: file_event
product: windows
detection:
selection_path:
TargetFilename|contains:
- '\Rockwell Automation\FactoryTalk Activation Manager\'
- '\Rockwell Software\FactoryTalk Activation\'
- '\ProgramData\Rockwell Automation\'
selection_ext:
TargetFilename|endswith:
- '.exe'
- '.dll'
- '.bat'
- '.cmd'
- '.ps1'
- '.vbs'
- '.js'
filter_installers:
Image|endswith:
- '\msiexec.exe'
- '\setup.exe'
condition: selection_path and selection_ext and not filter_installers
falsepositives:
- Rare vendor updates deployed by non-MSI tooling; allowlist by signed Rockwell binary and approved deployment ring
level: high
// Hunt for installer-spawned shells and SYSTEM-context process creation on FactoryTalk assets.
// Scope Hosts first where possible: engineering workstations, HMI servers, OT jump hosts, license servers.
let ftAssets =
DeviceFileEvents
| where Timestamp > ago(30d)
| where FolderPath has_any ('FactoryTalk Activation Manager','FactoryTalk Activation','Rockwell Automation')
| summarize by DeviceName;
DeviceProcessEvents
| where Timestamp > ago(14d)
| where DeviceName in (ftAssets)
| where FileName in~ ('cmd.exe','conhost.exe','powershell.exe','pwsh.exe','wscript.exe','cscript.exe')
or InitiatingProcessFileName in~ ('msiexec.exe','setup.exe','install.exe')
| where ProcessCommandLine has_any ('FactoryTalk','Activation Manager','REINSTALL','/repair','/fa','Rockwell Automation')
or InitiatingProcessCommandLine has_any ('FactoryTalk','Activation Manager','REINSTALL','/repair','/fa','Rockwell Automation')
| extend SystemInvolved = (AccountSid == 'S-1-5-18' or InitiatingProcessAccountSid == 'S-1-5-18' or AccountName =~ 'SYSTEM' or InitiatingProcessAccountName =~ 'SYSTEM')
| project Timestamp, DeviceName, AccountName, AccountSid, SystemInvolved, FileName, ProcessCommandLine, ProcessIntegrityLevel,
InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessAccountName, InitiatingProcessAccountSid,
FolderPath, SHA256, ReportId
| order by Timestamp desc
// Correlate with Windows Installer service events in Sentinel/Defender where MSI logging is present.
let InstallerEvents =
SecurityEvent
| where TimeGenerated > ago(14d)
| where ProviderName =~ 'MsiInstaller'
| summarize by Computer, EventID, TimeGenerated, Message;
DeviceProcessEvents
| where Timestamp > ago(14d)
| where InitiatingProcessFileName =~ 'msiexec.exe'
| where ProcessCommandLine has_any ('FactoryTalk','Activation','repair','REINSTALL','/fa')
| join kind=leftouter (InstallerEvents) on $left.DeviceName == $right.Computer
| project Timestamp, DeviceName, FileName, ProcessCommandLine, AccountName, InitiatingProcessCommandLine, EventID, Message
| order by Timestamp desc
-- Velociraptor hunt: SYSTEM shells/consoles and installer lineage around FactoryTalk Activation Manager.
SELECT Pid, Ppid, Name, CommandLine, Exe, Username, CreateTime
FROM pslist()
WHERE (
CommandLine =~ 'FactoryTalk|Activation Manager|Rockwell Automation|REINSTALL|/repair|/fa'
OR Exe =~ 'Rockwell Automation|FactoryTalk'
)
AND (
Name =~ 'cmd|conhost|powershell|pwsh|wscript|cscript|msiexec|setup'
OR Username =~ 'SYSTEM'
)
ORDER BY CreateTime DESC
-- Follow-on artifact: list likely install directories and recently modified executable/script content.
SELECT FullPath, Size, Mtime, Atime, Ctime
FROM glob(globs='C:/Program Files*/Rockwell*/**/*')
WHERE Mtime > now() - (14 * 24 * 3600)
AND FullPath =~ '\.(exe|dll|bat|cmd|ps1|vbs|js)$'
# Audit-and-harden helper for CVE-2026-16675 exposure. Run elevated on candidate Windows hosts.
# It reports vulnerable installs, checks ACL drift, finds recent installer shell lineage, and exports JSON evidence.
$ErrorActionPreference = 'SilentlyContinue'
$out = Join-Path $env:TEMP 'ftam_cve_2026_16675_audit.json'
$fixedKnown = $false # Set to $true only after Rockwell CSAF identifies the fixed build for your exact product line.
$installed = Get-CimInstance Win32_Product | Where-Object { $_.Name -match 'FactoryTalk Activation Manager' } |
Select-Object Name, Version, Vendor, IdentifyingNumber, InstallLocation
$registryInstalled = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*',
'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*' |
Where-Object { $_.DisplayName -match 'FactoryTalk Activation Manager' } |
Select-Object DisplayName, DisplayVersion, Publisher, InstallLocation, PSChildName
$candidateRoots = @(
(Join-Path ${env:ProgramFiles} 'Rockwell Automation'),
(Join-Path ${env:ProgramFiles(x86)} 'Rockwell Automation'),
(Join-Path $env:ProgramData 'Rockwell Automation')
) | Where-Object { $_ -and (Test-Path $_) }
$aclFindings = foreach ($root in $candidateRoots) {
Get-ChildItem $root -Recurse -Directory -ErrorAction SilentlyContinue |
Where-Object { $_.FullName -match 'FactoryTalk Activation|Activation Manager' } |
ForEach-Object {
$acl = Get-Acl $_.FullName
$weak = $acl.Access | Where-Object {
$_.IdentityReference -match 'BUILTIN\Users|Everyone|DOMAIN\Domain Users' -and
$_.FileSystemRights -match 'Write|Modify|FullControl' -and
$_.AccessControlType -eq 'Allow'
}
if ($weak) { [pscustomobject]@{ Path=$_.FullName; WeakPrincipal=($weak.IdentityReference -join ';'); Rights=($weak.FileSystemRights -join ';') } }
}
}
$recentInstallerShells = Get-WinEvent -FilterHashtable @{ LogName='Security'; Id=4688; StartTime=(Get-Date).AddDays(-14) } |
Where-Object { $_.Message -match 'msiexec.exe|setup.exe' -and $_.Message -match 'cmd.exe|conhost.exe|powershell.exe|wscript.exe|cscript.exe' -and $_.Message -match 'FactoryTalk|Activation Manager|REINSTALL|/repair|/fa' } |
Select-Object TimeCreated, Id, Message
$result = [pscustomobject]@{
Host = $env:COMPUTERNAME
CheckedUtc = (Get-Date).ToUniversalTime()
FixedVersionKnownToScript = $fixedKnown
InstalledFromWmi = $installed
InstalledFromRegistry = $registryInstalled
PotentiallyVulnerable = ($registryInstalled | Where-Object { [version]$_.DisplayVersion -le [version]'5.02' }).Count -gt 0
WeakAclFindings = $aclFindings
RecentInstallerShellEvents = $recentInstallerShells
RecommendedAction = 'If PotentiallyVulnerable is true: isolate from non-admin local logon, block install/repair until approved, retrieve Rockwell CSAF fixed build, then update and reboot under change control.'
}
$result | ConvertTo-Json -Depth 6 | Set-Content -Path $out -Encoding UTF8
$result
Write-Output ('Evidence written to ' + $out)
# Optional containment for approved emergency windows only: remove broad write/modify rights after validating app function.
# Do not run in production without application owner signoff and a rollback snapshot.
# foreach ($f in $aclFindings) { icacls $f.Path /remove:g 'BUILTIN\Users' 'Everyone' }
Remediation and risk reduction
-
Retrieve the full CSAF and Rockwell advisory referenced by CISA ICSA-26-244-04 before applying changes. The public summary in the news item is truncated; confirm the exact fixed release, prerequisites, supported upgrade path, and whether the remediation differs between new installs, upgrades, and repair operations. Do not rely on a guessed version number.
-
Inventory every FactoryTalk Activation Manager instance across OT and IT boundary systems. Include engineering workstations, HMI/SCADA servers, license servers, virtual images, gold images, offline spares, and vendor-managed laptops. Flag V5.02 and below as potentially vulnerable until the installed build is proven fixed by the vendor advisory. Capture evidence using Win32_Product, uninstall registry keys, file version metadata, and your EDR software inventory; WMI product queries can trigger repair on some legacy MSI packages, so schedule them carefully and prefer registry/EDR inventory on sensitive OT hosts.
-
Temporarily reduce execution surface. Suspend non-emergency install, modify, and repair operations on affected hosts. Require dual control and a recorded change ticket for any Rockwell installer execution. Remove standard-user local logon from systems that host activation components where operationally feasible. If vendor maintenance must continue, use a dedicated hardened admin workstation, restrict inbound interactive sessions, record the session, and pre-stage EDR visibility for msiexec child processes.
-
Harden Windows Installer behavior around OT assets. Enforce the principle that elevated installer activity is non-interactive and ticket-bound. Where supported by your Windows build and application compatibility testing, evaluate policies that limit elevated install behavior to administrators, prevent users from initiating repair of admin-installed products, and alert on AlwaysInstallElevated. Do not enable AlwaysInstallElevated; if it exists for user or machine, treat it as a misconfiguration unless explicitly required by a legacy vendor workflow and compensated.
-
Constrain local privilege and session exposure. On FactoryTalk hosts, remove broad Write/Modify/FullControl for BUILTIN\Users, Everyone, and Domain Users from Rockwell installation and ProgramData paths after application-owner validation. Use LAPS or equivalent unique local admin credentials, tiered administration, and just-in-time elevation. Block casual RDP/Quick Assist/screen-sharing access to OT administration endpoints and require brokered access with session recording.
-
Apply application control cautiously. Use WDAC or AppLocker in audit mode first to prevent arbitrary script/executable launches from Rockwell install directories by non-installer processes. A practical first rule set: allow signed Rockwell Automation binaries and Microsoft installer binaries; audit then block unsigned EXE/DLL/script content under FactoryTalk Activation Manager paths unless executed by approved deployment tooling. Test activation, license checkout, failover, and service restart before enforcement.
-
Monitor the change window aggressively. For any approved upgrade to the vendor-fixed build, collect before/after hashes of installed binaries, Windows Installer logs, EDR process lineage, and account context. Alert if setup/repair spawns cmd.exe, conhost.exe, PowerShell, wscript, or cscript as SYSTEM, or if a console window is visible to a non-admin session. Treat any unexplained child shell from msiexec during the maintenance as a possible compromise and preserve memory before reboot if policy allows.
-
If you cannot patch immediately, isolate and watch. Move affected hosts behind stricter firewall/VLAN ACLs, disable unused remote management, block outbound Internet from license components unless required, and add high-sensitivity detections for credential dumping, service creation, scheduled tasks, Run keys, and new local admin creation on those assets. A local privilege bug becomes materially more dangerous when the host can reach credential stores, domain controllers, backup infrastructure, or OT historians.
-
Validate after remediation. Confirm installed version matches the fixed Rockwell release, rerun the audit script, review ACLs, and execute a controlled repair only in a test VM if you must validate the vulnerable condition is gone. Do not attempt interactive exploitation on production OT systems. Close the loop with exposure management: mark CVE-2026-16675 remediated only when asset inventory, fixed-version evidence, and detection coverage all agree.
Related Resources
Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.