Back to Intelligence

CVE-2026-92817: Inductive Automation Ignition Privilege Escalation — Detection and Remediation Guide for ICS Defenders

SA
Security Arsenal Team
October 15, 2026
13 min read

CISA has published ICS advisory ICSA-26-286-01 covering CVE-2026-92817, an incorrect authorization vulnerability in Inductive Automation's Ignition platform — one of the most widely deployed SCADA/IIoT gateway platforms in Critical Manufacturing, Energy, and Information Technology sectors worldwide. The vulnerability carries a CVSS v3 score of 8.8 (High) and allows an authenticated low-level user to escalate privileges to Designer-level access.

For those of us who have run IR engagements in OT environments, this is the vulnerability class that keeps us up at night. Ignition gateways sit at the convergence point between IT and OT — they broker connections to PLCs, historians, databases, and MES systems. A threat actor with Designer-level access to an Ignition gateway isn't just changing dashboards. They can modify project logic, alter tag bindings, change alarm configurations, inject scripts that execute in the gateway's JVM context, and pivot toward the control network. In a ransomware or destructive-attack scenario, Designer access to Ignition is effectively a skeleton key to the operational environment.

If you run Ignition anywhere in your environment — and given its market penetration in manufacturing and energy, many of you do without realizing it — treat this as a priority remediation item.

Technical Analysis

Affected Products and Versions

Per the CISA advisory, the following Ignition versions are vulnerable:

  • Ignition 8.1.x: versions 8.1.0 through 8.1.54
  • Ignition 8.3.x: versions 8.3.0 through 8.3.8

Both major supported release trains are affected, which means virtually every Ignition deployment that hasn't applied the latest updates is exposed. Inductive Automation is headquartered in the United States, and the product is deployed worldwide across critical infrastructure sectors.

Vulnerability Details: CVE-2026-92817

Weakness class: Incorrect Authorization (CWE-863) CVSS v3: 8.8 (High) — consistent with an authenticated, network-reachable privilege escalation with high impact to confidentiality, integrity, and availability.

The root cause sits in the Ignition Perspective module. Per the advisory, the Perspective module does not properly validate session privileges when determining Designer-level access. In practical terms:

  1. An attacker needs valid credentials — but only low-level credentials. Think a read-only operator account, a contractor account, a service account with minimal roles, or credentials harvested via phishing or password spraying against the gateway's web interface (default ports 8088/8043).
  2. Once authenticated to a Perspective session, the attacker can manipulate session state or requests such that the gateway fails to correctly validate their privilege level when evaluating Designer-level access checks.
  3. The result is escalation to Designer-level functionality — the ability to launch or interact with Designer-tier operations without ever holding those roles in the IdP or internal user source.

This is a classic broken authorization pattern: authentication is enforced, but the authorization decision relies on session attributes that aren't rigorously re-validated server-side. It maps cleanly to MITRE ATT&CK T1078 (Valid Accounts) for initial access and T1068 (Exploitation for Privilege Escalation) for the escalation itself. In the ATT&CK for ICS matrix, Designer-level tampering with projects and tag logic aligns with T0831 (Manipulation of Control) and T0846 (Remote System Discovery) as follow-on activities.

Why Designer-Level Access Matters in OT

Defenders from an IT background sometimes underestimate what "Designer access" means in Ignition. The Designer is the development environment for Ignition projects. With it, an attacker can:

  • Modify Perspective and Vision project logic, including Python scripts (Jython) that execute on the gateway
  • Alter tag bindings and OPC connections — changing what operators see versus what the process is actually doing
  • Disable or reroute alarms and historization
  • Create new users, modify security levels, and establish persistence in the project itself
  • Access configured database connections and credential stores referenced by projects

In short: this isn't a web-app bug with abstract impact. It's a path to manipulating physical process visibility and control.

Exploitation Status

As of this writing, the advisory does not report confirmed in-the-wild exploitation, and CVE-2026-92817 has not been listed in CISA's Known Exploited Vulnerabilities (KEV) catalog. However, three factors argue for treating this as urgent rather than theoretical:

  1. Authentication is the only barrier. Post-authentication bugs in internet-facing or DMZ-accessible gateways are routinely weaponized quickly — we've seen this pattern repeatedly with ICS web interfaces.
  2. Ignition gateways are discoverable. Shodan and Censys index thousands of Ignition gateway interfaces. Low-privilege credential access (default accounts, weak operator passwords, reused credentials) is a solved problem for motivated actors.
  3. OT threat actors are actively targeting SCADA platforms. The dwell time between advisory publication and scanning activity for ICS products has compressed dramatically over the past two years.

Detection & Response

Detection for this vulnerability centers on three observable behaviors: (1) Designer sessions launched by users who shouldn't have Designer rights, (2) anomalous post-authentication activity against the gateway's web endpoints, and (3) post-exploitation behavior on the gateway host — because a compromised Ignition gateway running as a privileged service is a launchpad for broader intrusion.

Sigma Rules

YAML
---
title: Inductive Automation Ignition Gateway Process Spawning Command Shell
id: 3f8a2c14-9b7e-4d51-a6c8-2e1f5b9d7a30
status: experimental
description: Detects the Ignition gateway Java process spawning command interpreters or scripting engines, consistent with post-exploitation activity following privilege escalation via CVE-2026-92817 (e.g., gateway scripts abused to execute OS commands).
references:
  - https://www.cisa.gov/news-events/ics-advisories/icsa-26-286-01
  - https://attack.mitre.org/techniques/T1068/
  - https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/10/13
tags:
  - attack.privilege_escalation
  - attack.t1068
  - attack.execution
  - attack.t1059
logsource:
  category: process_creation
  product: windows
detection:
  selection_parent:
    ParentImage|endswith:
      - '\java.exe'
      - '\javaw.exe'
    ParentCommandLine|contains:
      - 'Ignition'
      - 'ignition-gateway'
      - 'com.inductiveautomation'
  selection_child:
    Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\pwsh.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
      - '\mshta.exe'
  condition: selection_parent and selection_child
falsepositives:
  - Legitimate Ignition gateway scripting that invokes system commands for maintenance tasks; validate against approved project scripts
level: high
---
title: Ignition Designer Launcher Executed From Unexpected User Context
id: 8c4d6e21-5a93-4f27-b3d1-7e8c2a4f6b15
status: experimental
description: Detects execution of the Ignition Designer Launcher by non-engineering user accounts or from unexpected workstations. Privilege escalation via CVE-2026-92817 enables low-privileged authenticated users to obtain Designer-level access.
references:
  - https://www.cisa.gov/news-events/ics-advisories/icsa-26-286-01
  - https://attack.mitre.org/techniques/T1078/
author: Security Arsenal
date: 2026/10/13
tags:
  - attack.persistence
  - attack.valid_accounts
  - attack.t1078
logsource:
  category: process_creation
  product: windows
detection:
  selection:
    Image|endswith:
      - '\designerlauncher.exe'
      - '\Designer Launcher.exe'
    CommandLine|contains:
      - 'designer'
falsepositives:
  - Legitimate SCADA engineers and integrators launching the Designer; baseline approved engineering accounts and workstations and alert on deviations
level: medium
---
title: Linux Ignition Gateway Java Process Spawning Shell
id: 5b2e9f47-1c68-4a83-9d54-3f7a1e8c2b96
status: experimental
description: Detects the Ignition gateway Java process on Linux spawning shells or download utilities, consistent with post-exploitation after privilege escalation via CVE-2026-92817.
references:
  - https://www.cisa.gov/news-events/ics-advisories/icsa-26-286-01
  - https://attack.mitre.org/techniques/T1059/004/
author: Security Arsenal
date: 2026/10/13
tags:
  - attack.execution
  - attack.t1059.004
  - attack.privilege_escalation
logsource:
  category: process_creation
  product: linux
detection:
  selection_parent:
    ParentImage|endswith: '/java'
    ParentCommandLine|contains:
      - 'ignition'
      - 'com.inductiveautomation'
  selection_child:
    Image|endswith:
      - '/bash'
      - '/sh'
      - '/dash'
      - '/zsh'
      - '/curl'
      - '/wget'
      - '/nc'
      - '/ncat'
      - '/python'
      - '/python3'
  condition: selection_parent and selection_child
falsepositives:
  - Gateway scripts invoking system utilities for approved integrations; validate against documented project behavior
level: high

KQL (Microsoft Sentinel / Defender)

The following queries assume you're ingesting Ignition gateway logs and host telemetry into Sentinel. At minimum, forward the gateway's wrapper/audit logs via Syslog/CEF and onboard gateway hosts to Defender for Endpoint.

KQL — Microsoft Sentinel / Defender
// Hunt 1: Ignition gateway Java process spawning suspicious child processes (post-exploitation)
DeviceProcessEvents
| where TimeGenerated > ago(7d)
| where InitiatingProcessFileName =~ "java.exe" or InitiatingProcessFileName =~ "java"
| where InitiatingProcessCommandLine has_any ("Ignition", "ignition", "inductiveautomation")
| where FileName in~ ("cmd.exe", "powershell.exe", "pwsh.exe", "wscript.exe", "cscript.exe", "rundll32.exe", "mshta.exe", "bash", "sh", "curl", "wget")
| project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessCommandLine, SHA256
| order by TimeGenerated desc;

// Hunt 2: Designer Launcher execution on non-engineering endpoints
DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where FileName =~ "designerlauncher.exe" or ProcessCommandLine has "designerlauncher"
| project TimeGenerated, DeviceName, AccountName, AccountDomain, ProcessCommandLine, InitiatingProcessFileName
| order by TimeGenerated desc;

// Hunt 3: High-volume or anomalous authentication against Ignition gateway web interface via Syslog/CEF ingestion
CommonSecurityLog
| where TimeGenerated > ago(7d)
| where DeviceProduct has "Ignition" or DestinationPort in (8088, 8043)
| where Message has_any ("login", "authentication", "session", "designer")
| summarize AuthEvents = count(), UniqueSources = dcount(SourceIP) by SourceIP, DestinationHostName, bin(TimeGenerated, 1h)
| where AuthEvents > 50 or UniqueSources > 10
| order by AuthEvents desc;

// Hunt 4: External connections to Ignition gateway management ports
DeviceNetworkEvents
| where TimeGenerated > ago(7d)
| where RemotePort in (8088, 8043)
| where ActionType == "InboundConnectionAccepted"
| summarize Connections = count(), UniqueRemotes = dcount(RemoteIP) by DeviceName, LocalPort, bin(TimeGenerated, 1d)
| order by Connections desc;

Tune Hunt 3 and Hunt 4 thresholds against your baseline. The goal is anomaly surfacing, not static thresholds — a gateway that normally sees 20 logins/day jumping to 500 is your signal.

Velociraptor VQL

For gateway hosts where you suspect post-escalation activity, this artifact triages Designer Launcher usage, gateway process lineage, and unexpected outbound connections from the Ignition process:

VQL — Velociraptor
-- Triage Ignition gateway hosts for post-exploitation indicators (CVE-2026-92817)
-- Looks for Designer Launcher processes, gateway-spawned shells, and gateway network connections

LET processes = SELECT Pid, Ppid, Name, CommandLine, Exe, Username, CreateTime
FROM pslist()
WHERE Name =~ '(?i)(designerlauncher|designer launcher)'
   OR (Name =~ '(?i)java' AND CommandLine =~ '(?i)(ignition|inductiveautomation)')

LET gateway_children = SELECT Pid, Ppid, Name, CommandLine, Username, CreateTime
FROM pslist()
WHERE Ppid IN (SELECT Pid FROM pslist()
               WHERE Name =~ '(?i)java'
                 AND CommandLine =~ '(?i)(ignition|inductiveautomation)')
  AND Name =~ '(?i)(cmd|powershell|pwsh|bash|sh|curl|wget|nc|mshta|rundll32)'

LET gateway_connections = SELECT Pid, Name, RemoteAddr, RemotePort, Status
FROM netstat()
WHERE Name =~ '(?i)java'
  AND Status =~ 'ESTABLISHED'

SELECT 'gateway_process' AS Category, Pid, Ppid, Name, CommandLine, Username,
       CreateTime, '' AS RemoteAddr, '' AS RemotePort
FROM processes
UNION ALL
SELECT 'suspicious_child' AS Category, Pid, Ppid, Name, CommandLine, Username,
       CreateTime, '' AS RemoteAddr, '' AS RemotePort
FROM gateway_children
UNION ALL
SELECT 'gateway_connection' AS Category, Pid, 0 AS Ppid, Name, '' AS CommandLine,
       '' AS Username, '' AS CreateTime, RemoteAddr, RemotePort
FROM gateway_connections

Remediation

1. Patch Immediately

Upgrade all Ignition gateways to a version later than 8.1.54 (for the 8.1 train) or later than 8.3.8 (for the 8.3 train) — apply the current fixed release published by Inductive Automation. Review the CISA advisory ICSA-26-286-01 and the linked vendor security bulletin for exact fixed-version numbers and the vendor's CSAF document for machine-readable guidance. Do not skip redundant/backup gateways — a vulnerable backup gateway is still a vulnerable gateway.

2. Verify Version Post-Patch

PowerShell
# Audit Ignition gateway version across Windows hosts
# Run from a management workstation with admin access to target servers

$targets = @("IGNITION-GW01", "IGNITION-GW02")  # Replace with your gateway hostnames

foreach ($target in $targets) {
    Write-Host "[+] Checking $target..." -ForegroundColor Cyan
    Invoke-Command -ComputerName $target -ScriptBlock {
        $installPaths = @(
            "C:\Program Files\Inductive Automation\Ignition",
            "C:\Program Files (x86)\Inductive Automation\Ignition"
        )
        foreach ($path in $installPaths) {
            if (Test-Path $path) {
                # Gateway version is recorded in the install properties
                $propsFile = Join-Path $path "..\.install4j\i4jparams.conf"
                $version = $null
                if (Test-Path $propsFile) {
                    $versionLine = Get-Content $propsFile | Select-String -Pattern "version"
                    $version = $versionLine.ToString()
                }
                # Fallback: query the gateway status page locally
                try {
                    $status = Invoke-RestMethod -Uri "http://localhost:8088/StatusPing" -TimeoutSec 5 -ErrorAction Stop
                    Write-Host "    Gateway responding on 8088"
                } catch {
                    Write-Host "    Gateway not responding on 8088 (check 8043/HTTPS)"
                }
                Write-Host "    Install path: $path"
                if ($version) { Write-Host "    Version info: $version" }
            }
        }
        # Confirm gateway service state
        $svc = Get-Service -Name "Ignition" -ErrorAction SilentlyContinue
        if ($svc) { Write-Host "    Service status: $($svc.Status)" }
    }
}

# Flag any gateway still on a vulnerable build
Write-Host "`n[!] REMEDIATION GATE: Any gateway reporting 8.1.0-8.1.54 or 8.3.0-8.3.8 is vulnerable to CVE-2026-92817" -ForegroundColor Red

For Linux gateways:

Bash / Shell
#!/bin/bash
# Check Ignition version on Linux gateway hosts
IGNITION_DIR="/usr/local/bin/ignition"

if [ -f "${IGNITION_DIR}/data/local/db/config.idb" ] || [ -d "${IGNITION_DIR}" ]; then
    echo "[+] Ignition installation found at ${IGNITION_DIR}"
    # Version is stored in the gateway's context properties
    grep -r "version" ${IGNITION_DIR}/data/ 2>/dev/null | grep -oE '8\.[0-9]+\.[0-9]+' | sort -u
    # Verify gateway service
    systemctl status Ignition-Gateway.service --no-pager 2>/dev/null | head -5
else
    echo "[-] Ignition not found at default path — check custom install locations"
fi

echo "[!] Vulnerable ranges: 8.1.0-8.1.54, 8.3.0-8.3.8 (CVE-2026-92817)"
echo "[!] If vulnerable, schedule immediate upgrade per ICSA-26-286-01"

3. Reduce Exposure While Patching

  • Remove gateway web interfaces from any internet-facing or broadly routable position. Ignition gateways (ports 8088/8043) should sit behind a firewall/ACL permitting only authorized engineering workstations and jump hosts. This is CISA's standing guidance for all ICS interfaces and it directly blunts this CVE's exploitation path.
  • Enforce least privilege on user sources. Audit every account that can authenticate to the gateway. Disable stale contractor and integrator accounts. Since exploitation requires only low-level credentials, every active account is a potential entry point.
  • Enable and centralize gateway auditing. Ignition supports audit profiles — ensure authentication events, Designer session launches, and project modifications are logged and shipped off-box to your SIEM before an attacker with Designer access can tamper with them.
  • Restrict Designer Launcher distribution. Designer should only be installable/executable from managed engineering workstations, not general-purpose operator HMI terminals.

4. Hunt Before You Patch

Do not assume patch-and-pray. Before and after upgrading, review gateway audit logs for the past 90 days: Designer sessions from accounts that never held Designer roles, project save/modification events outside change windows, new user creation, and unexpected gateway script edits. A low-privilege account that escalated weeks ago may have already planted persistence inside project logic — patching closes the door but doesn't sweep the room. If you find anomalous Designer activity, treat it as an IR event: snapshot the gateway config and projects, rotate all gateway credentials and database connection secrets referenced by projects, and review PLC/OPC tag configurations for tampering.

5. Network Segmentation Validation

Use this advisory as the forcing function to validate your Purdue-model segmentation. The gateway should not be reachable from enterprise user VLANs except through controlled paths (jump hosts, remote access gateways with MFA), and the OT zone downstream of Ignition should not trust the gateway implicitly. An attacker who escalates on Ignition and finds flat network access to PLCs has a very short path to physical process impact.

Bottom Line

CVE-2026-92817 is a high-severity, low-complexity privilege escalation in one of the most pervasive SCADA platforms in critical infrastructure. The only prerequisite is a low-privilege credential — and in most environments, those are plentiful. Patch to the fixed release per CISA ICSA-26-286-01, lock down gateway web access, audit every account that can touch the gateway, and hunt for anomalous Designer activity going back 90 days. In OT, authorization failures at the SCADA layer are not abstract web bugs — they're the first move in process manipulation.

Related Resources

Security Arsenal Alert Triage Automation AlertMonitor Platform Book a SOC Assessment platform Intel Hub

Is your security operations ready?

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