CVE-2023-50218
High · 8.8CVSS
8.8
EPSS
55.0%
Published
May 3, 2024
CISA due date
—
Cloudanix analysis
An attacker with a valid login could take control of an affected Ignition automation server and disrupt or manipulate connected operations.
- Exploitation
- Remote Authenticated
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Remote Code Execution
- Component
- Application
- Class
- Deserialization
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Medium
What it actually does
CVE-2023-50218 is a deserialization of untrusted data vulnerability in Inductive Automation Ignition, specifically in the ModuleInvoke class. A remote attacker with valid low-privileged authentication can submit crafted serialized data that is not properly validated, causing the application to deserialize attacker-controlled objects. Successful exploitation can result in arbitrary code execution in the context of the Ignition service, reported as SYSTEM on affected Windows installations, giving the attacker full control over the application host and potentially connected operational technology integrations.
Why it matters to the business
Successful exploitation can allow an authenticated attacker to take over an Ignition server, disrupt industrial workflows, alter automation logic, access sensitive operational data, or use the server as a foothold into broader IT and OT networks. Because Ignition commonly integrates with PLCs, HMIs, historians, databases, and enterprise systems, compromise can have operational safety, production availability, and incident response consequences beyond the application itself. The CVSS score is high and EPSS is elevated, indicating meaningful exploitation likelihood even though it is not currently listed in CISA KEV and no public exploit maturity is noted in the supplied data.
How an attack unfolds
An attacker first obtains valid credentials for an affected Ignition installation, such as through credential theft, password spraying, reuse of exposed credentials, or compromise of a low-privileged account. The attacker then authenticates to the Ignition service and reaches functionality that invokes the vulnerable ModuleInvoke deserialization path. By sending a crafted request containing malicious serialized data, the attacker causes the server to deserialize attacker-controlled content without adequate validation. If a suitable gadget chain or execution path is available in the target environment, the payload executes arbitrary commands with the privileges of the Ignition service, which may be SYSTEM on Windows. The attacker can then deploy tooling, create persistence, access project resources and credentials, pivot to connected systems, or disrupt automation services.
How to fix it
Upgrade Inductive Automation Ignition to a vendor-fixed release that addresses CVE-2023-50218. The supplied input does not include exact fixed versions, so administrators should consult Inductive Automation’s official advisory and release notes for the applicable Ignition branch and module versions. Where immediate upgrade is not possible, restrict network access to Ignition management and gateway interfaces, require VPN or segmented administrative access, enforce strong multifactor authentication where supported, remove unnecessary user accounts and privileges, rotate potentially exposed credentials, and monitor for suspicious ModuleInvoke activity. Run Ignition services with the least privileges required rather than broad local administrator or SYSTEM-level rights where operationally feasible. In OT environments, coordinate patching through change-management and test procedures to avoid unplanned production impact.
How to confirm the fix worked
Confirm the deployed Ignition version and installed module versions against the vendor advisory to verify they are no longer affected. Validate that the gateway and management interfaces are not exposed to untrusted networks and that only authorized administrative sources can reach them. Review user roles to ensure low-privileged accounts cannot access unnecessary module invocation or administrative functions. After patching, perform authenticated vulnerability scanning or vendor-supported validation where available. Confirm that the service account privileges have been reduced where feasible and that logging captures authentication, gateway activity, module invocation errors, and process execution events on the host.
Typical attack path
- Identify an exposed or reachable Inductive Automation Ignition instance.
- Obtain valid credentials for the Ignition environment through phishing, credential reuse, brute force, insider access, or prior compromise.
- Authenticate to the affected Ignition installation with low-privileged access.
- Send a crafted ModuleInvoke request containing malicious serialized data.
- Trigger unsafe deserialization on the server.
- Execute attacker-controlled code in the Ignition service context, potentially SYSTEM on Windows.
- Establish persistence, access sensitive project or integration data, move laterally, or disrupt industrial operations.
How to detect it
To determine whether exploitation already occurred, review Ignition gateway, wrapper, application, and audit logs for unusual authenticated requests around module invocation, deserialization failures, Java exceptions, unexpected module behavior, or activity from unfamiliar users and source IPs. Correlate Ignition authentication events with host telemetry showing child processes spawned by the Ignition Java service, especially command shells, PowerShell, curl, certutil, bitsadmin, wscript, cscript, Python, or other scripting and download utilities. On Windows, examine Security, System, PowerShell, Sysmon, and service-control logs for new services, scheduled tasks, privilege changes, encoded commands, suspicious outbound connections, and files written by the Ignition service account. On Linux, review systemd, shell history, cron, auditd, process accounting, and web/application logs for commands executed under the Ignition service user. Also inspect Ignition project files, module directories, temporary directories, and startup scripts for unauthorized modifications. Because this is an authenticated RCE, suspicious valid-user behavior is especially important: logins from new geographies, unusual hours, newly created users, failed-then-successful login sequences, and low-privileged accounts performing administrative or module-related actions should be investigated.
- ModuleInvoke
- java.io.InvalidClassException
- java.io.StreamCorruptedException
- java.io.OptionalDataException
- java.lang.ClassNotFoundException
- java.lang.reflect.InvocationTargetException
- ObjectInputStream
- deserialization
- wrapper.log
- ignition
- IgnitionGateway
- powershell.exe
- cmd.exe
- certutil.exe
- bitsadmin.exe
- curl.exe
- wscript.exe
- cscript.exe
- rundll32.exe
- regsvr32.exe
- schtasks.exe
- sc.exe
- /var/lib/ignition
- /usr/local/bin/ignition
- C:\Program Files\Inductive Automation\Ignition
- C:\Program Files\Inductive Automation\Ignition\logs
- C:\Program Files\Inductive Automation\Ignition\data\modules
What your security team should do
- Prioritize patching or upgrading affected Inductive Automation Ignition servers because the vulnerability enables authenticated remote code execution with high confidentiality, integrity, and availability impact.
- Inventory all Ignition gateways and modules, including systems in OT, lab, disaster recovery, and vendor-managed environments.
- Restrict access to Ignition gateway and administrative interfaces to trusted management networks or VPN users only.
- Audit all Ignition user accounts, remove stale accounts, enforce strong passwords, and enable multifactor authentication where supported.
- Review logs for suspicious authenticated activity, unexpected ModuleInvoke errors, abnormal serialized payload handling, and unusual process creation by the Ignition service account.
- Hunt for post-exploitation activity on Ignition hosts, especially command shells, script interpreters, remote access tools, new services, scheduled tasks, and outbound connections spawned from the Ignition service.
- Rotate credentials stored in or used by Ignition if compromise is suspected, including database, historian, PLC, API, and enterprise integration credentials.
- Apply least-privilege hardening to the Ignition service account and segment Ignition servers from unnecessary IT and OT network paths.
The record
Inductive Automation Ignition ModuleInvoke Deserialization of Untrusted Data Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of Inductive Automation Ignition. Authentication is required to exploit this vulnerability. The specific flaw exists within the ModuleInvoke class. The issue results from the lack of proper validation of user-supplied data, which can result in deserialization of untrusted data. An attacker can leverage this vulnerability to execute code in the context of SYSTEM. Was ZDI-CAN-21624.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-63393 OpenSearch SQL supports querying OpenSearch data using SQL and Piped Processing Language. CWE-502
- CVE-2026-118938 In Trail of Bits fickling through 0.1.12, a pickle STACK_GLOBAL operand carrying a dotted… CWE-502
- CVE-2026-16760 In Trail of Bits fickling through 0.1.12, the _process_import() method in fickle.py adds… CWE-502
- CVE-2026-62848 Metalama is a Roslyn-based open-source patterns and architecture toolkit for C#. CWE-502
- CVE-2026-90888 Unauthenticated PHP Object Injection in LeadSnap <= 1.25 versions. CWE-502
- CVE-2026-78527 Contributor PHP Object Injection in GS Testimonial Slider <= 3.3.10 versions. CWE-502
- CVE-2026-73186 Subscriber PHP Object Injection in Enable Media Replace <= 4.2.2 versions. CWE-502
- CVE-2026-39738 Unauthenticated PHP Object Injection in FunnelKit Automations <= 3.8.6.1 versions. CWE-502