CVE-2023-0811
Executive Summary
CVE-2023-0811 is a critical improper access control vulnerability affecting the Omron CJ1M programmable logic controller (PLC) unit version 4.0 and prior. The flaw resides in the memory region where the UM (User Memory) password is stored, allowing an authenticated or network-reachable adversary to issue a PROGRAM AREA WRITE command that overwrites the password stored in that protected memory region. Successful exploitation can disable UM read/write protection mechanisms, or set a non-ASCII password that prevents legitimate engineers from accessing or modifying the user program, effectively locking the owner out of their own device. The vulnerability carries a CVSS score of 9.1, indicating critical severity, and primarily impacts industrial control system (ICS) environments that use Omron CJ1M PLCs in their automation architecture.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The vulnerability class is Improper Access Controls — a failure to enforce authorization policies when writing to protected memory regions on the Omron CJ1M CPU unit. The NVD description states that the targeted memory region stores the UM password, which is a security credential used to gate access to the user program stored in the PLC. The flaw exists because the device does not adequately validate or block write operations that target this specific memory area when the control logic is not properly locked.
Attack Vector: The adversary issues a PROGRAM AREA WRITE command — a legitimate FINS (Factory Interface Network Service) protocol command used for writing user programs to the PLC. The vulnerability allows this command to reach the memory region that holds the UM password authentication value, which should be protected from arbitrary writes by the device's internal access control model. The device fails to enforce write protection on that specific memory region under certain configurations or when the hardware write-protection DIP switch is not engaged. Note that the FINS protocol typically runs on TCP/UDP port 9600.
Technical specifics from the advisory:
- The affected memory region stores the UM password.
- A direct write command (PROGRAM AREA WRITE) can overwrite this password.
- Two outcomes are possible: (a) UM protection is disabled entirely (e.g., if a blank/zero value is written), or (b) a non-ASCII password is written using non-keyboard characters, rendering the device unable to authenticate legitimate engineers who cannot type those characters.
The core issue is that the PLC's firmware does not distinguish between authorized program writes (which should be allowed only after password verification) and writes targeting the credential storage area. The access control check that should gate writes to the UM protection region is either missing, configured incorrectly, or bypassable via the FINS command path.
Attack Surface: The attack surface is the FINS protocol endpoint exposed on the network. If the CJ1M is directly connected to an untrusted network segment, or if firewall rules allow FINS traffic from unauthorized hosts, a remote attacker can send the crafted PROGRAM AREA WRITE command. The vulnerability can also be triggered from the engineering workstation if malware or a compromised host has access to the PLC's programming port.
Exploitation Scenarios
Baseline: No public PoC is available, and the attack chain described below is inferred from the vulnerability class and the NVD description. The technical details in the description are sufficient to establish the attack path at the protocol/command level.
Step 1 — Reconnaissance / Target Identification: An attacker first identifies CJ1M PLCs on the network. This is typically done via network scanning for FINS protocol traffic on port 9600 (TCP/UDP). Shodan-style queries can identify exposed Omron PLCs using banner data or protocol-specific fingerprints. The attacker may also target ICS network segments of an organization by compromising the IT network and pivoting laterally, or by gaining access to an engineering workstation that has a programming cable or network path to the PLC.
Step 2 — Triggering the Flaw: The attacker establishes a FINS session with the PLC. FINS is a request/response protocol with a defined frame structure. The attacker crafts a FINS command frame with the PROGRAM AREA WRITE command (command code for writing to the program area), designating the target memory address as the location where the UM password is stored. Because the device fails to enforce access controls on this specific region, the PLC processes the write request and modifies the stored password bytes.
Step 3 — Payload / Execution Method: The cryptographic/sized payload depends on the attacker's goal:
- To disable UM protections: write a zero-length or blank password value (e.g., all-null bytes, or the ASCII representation of an empty string). After this write, the UM read/write protection is effectively disabled, granting the attacker full read/write access to the user program and potentially the ability to modify ladder logic or other PLC configurations.
- To lock out legitimate engineers: write a password consisting of non-ASCII characters (bytes outside the printable keyboard character range). PLC engineers attempting to access the device through the vendor's programming software will be unable to enter the non-ASCII characters via standard keyboard input, effectively denying them access to the device. This can be used as a denial-of-service (integrity/availability) attack on the control system.
Step 4 — Post-Exploitation Impact: Once the UM password is overwritten, the attacker has the ability to alter the PLC's program logic. If the UM protections are disabled, the attacker can inject malicious ladder logic that manipulates physical process outputs (e.g., turning off safety interlocks, altering setpoints, causing physical damage). If the attacker instead writes a non-ASCII password, the immediate impact is a denial of service on the engineering access path — the legitimate operator cannot connect to modify or troubleshoot the PLC, potentially bringing operations to a halt until a physical reset/factory restore is performed.
Attack Chain Summary:
- Network access to FINS port 9600 (or physical access to the programming port).
- Crafted FINS PROGRAM AREA WRITE command targeting the UM password memory region.
- Password overwritten → UM protection disabled or non-ASCII password set.
- Attacker modifies user program (logic injection) OR locks out engineering access (DoS).
Impact Assessment
CVSS Context: The vulnerability has a CVSS base score of 9.1 (Critical). This reflects a combination of high availability impact (device lockout), high integrity impact (ability to alter credentials and potentially the user program), and low attack complexity when network access to the FINS port is available. The high score also reflects that no specialized conditions beyond network reachability appear necessary to trigger the flaw.
Business Impact:
- Availability: A non-ASCII password write denies engineering teams the ability to connect, modify, or diagnose the PLC. In continuous-process manufacturing (e.g., food & beverage, automotive assembly, pharmaceutical), a locked-out PLC may force production stops and unscheduled downtime.
- Integrity: If UM protection is disabled, an attacker can rewrite the entire user program, potentially causing safety interlock bypasses, incorrect process control, or damaging physical equipment.
- Confidentiality: The user program (intellectual property) is exposed to unauthorized reading once UM protections are disabled.
- Safety: In safety-critical industrial environments, authorized tampering with PLC logic could create physical hazards for operators and equipment.
Blast Radius: All systems using Omron CJ1M firmware v4.0 or prior in production lines. The blast radius extends to OT networks where FINS traffic is not segmented from IT networks. The process disruption potential is high given the criticality of PLCs in manufacturing. EPSS indicates roughly 0.62% probability of exploitation in the next 30 days (74th percentile of all CVEs in terms of relative likelihood), and this CVE is not listed on CISA's Known Exploited Vulnerabilities (KEV) catalog — but the critical CVSS score and the fact that PLCs are network-reachable in many deployments warrant immediate attention.
Detection Guidance
Sigma Rule
title: Omron CJ1M UM Password Overwrite via FINS PROGRAM AREA WRITE
id: 8f2e6d3c-1a2b-4c5d-9e8f-0a1b2c3d4e5f
status: experimental
description: Detects FINS PROGRAM AREA WRITE commands targeting the UM password memory region on Omron CJ1M PLCs.
references:
- https://nvd.nist.gov/vuln/detail/CVE-2023-0811
author: vartersit.com Threat Intel
date: 2023/10/01
logsource:
product: suricata
category: network
detection:
selection_fins:
- dport: 9600
- sport: 9600
selection_write:
- payload|startswith: '|80|' # FINS command frame header byte
condition: selection_fins and selection_write
falsepositives:
- Legitimate engineering workstations writing user programs (rare if write protection is properly configured)
level: high
YARA Rule
rule Omron_CJ1M_UM_Password_Overwrite_Payload
{
meta:
author = "vartersit.com Threat Intel"
description = "Detects payload patterns matching FINS PROGRAM AREA WRITE to UM password region on Omron CJ1M"
cve = "CVE-2023-0811"
date = "2023-10-01"
severity = "critical"
strings:
$fins_write_cmd = { 01 01 02 } // FINS command code for program area write (adjust per protocol spec if available)
$um_password_region = { 00 20 } // Memory address pattern for UM region (adjust per actual address map)
$non_ascii_payload = { (8|9|A|B|C|D|E|F)0-FF } // bytes with high bit set indicating non-ASCII
condition:
$fins_write_cmd at 0 and $um_password_region in (4..12) and any of ($non_ascii_payload*)
}
Note: The specific FINS command code byte sequences and UM memory region addresses are not provided in the NVD description. Actual YARA rules should be baseline-tuned against real Omron FINS traffic captures and the official FINS protocol specification. Treat the above as a structural template, not as production-ready signatures.
Suricata IDS Rule
alert tcp any any -> any 9600 (msg:"ET EXPLOIT Omron CJ1M UM Password Overwrite Attempt (CVE-2023-0811)"; flow:to_server,established; content:"|80|"; offset:0; depth:1; content:"|01|"; offset:4; depth:4; content:"|02|"; within:10; content:"|00 20|"; within:20; reference:cve,2023-0811; classtype:attempted-admin; sid:20230811; rev:1;)
alert udp any any -> any 9600 (msg:"ET EXPLOIT Omron CJ1M UM Password Overwrite Attempt (CVE-2023-0811)"; content:"|80|"; offset:0; depth:1; content:"|01|"; offset:4; depth:4; content:"|02|"; within:10; content:"|00 20|"; within:20; reference:cve,2023-0811; classtype:attempted-admin; sid:20230812; rev:1;)
Note: The byte offsets in the content fields are placeholders and must be validated against the official Omron FINS protocol frame specification before deploying to production sensor networks. No frame-specific detail was provided in the advisory.
Elastic Detection
network where dport == 9600 and
(
(network.protocol == "tcp" and network.direction == "outbound") or
(network.protocol == "udp" and network.direction == "outbound")
) and
// FINS protocol header characteristics
length > 20 and
// Sequence: write command in the command field at offset 4-5
bytesToString(source.bytes[4:6]) == "0102" and
// Target memory region (UM password area) at offset 6-7
bytesToString(source.bytes[6:8]) == "0020"
Placeholder note: The above uses hypothetical offsets. Please adjust to match your actual network packet capture schema and log normalization.
Splunk SPL Query
index=network sourcetype=firewall OR sourcetype=proxy
| where dest_port = 9600
| eval fins_write = if(match(hex(payload_bytes), "(?i)0102"), "yes", "no")
| where fins_write == "yes"
| eval um_target = if(match(hex(payload_bytes), "(?i)0020"), "likely", "unlikely")
| eval threshold_trigger = if(um_target == "likely", "CRITICAL", "WATCH")
| search threshold_trigger = "CRITICAL"
| table _time, src_ip, dest_ip, dest_port, payload_bytes, um_target
| sort -_time
Wazuh OSSEC Rule
<group name="omron,cve-2023-0811,">
<rule id="100081" level="15">
<field name="src_port">9600|dest_port=9600</field>
<field name="payload" regex="^\x80\x01\x01\x02.+\x00\x20.*">True</field>
<description>Omron CJ1M FINS PROGRAM AREA WRITE to UM password region detected (CVE-2023-0811)</description>
<group>attack_attempt</group>
<mitre>
<id>T1190</id>
</mitre>
</rule>
</group>
Mitigation & Patch Guidance
Patch Confidence: 1/4 (PARTIAL) — No official firmware fix has been confirmed for CVE-2023-0811. The vendor (Omron) has released only countermeasures and network hygiene guidance. Organizations should treat this as an actively unpatched condition that requires compensating controls.
1) Immediate Mitigations (must be applied now):
- Enable the hardware UM write-protection DIP switch on the front panel of the CPU unit. This physically blocks write operations to the UM region and is the most effective immediate countermeasure.
- Set the UM read protection password AND select the "Prohibit from overwriting to a protected program" option in the engineering software. This software-level control should prevent PROGRAM AREA WRITE commands from overwriting the password even if the DIP switch is missed.
- Enable the FINS write protection function on the device and select "Protect by IP Address" filtering to restrict which source IPs can issue FINS write commands.
2) Network-Side Mitigations:
- Segment OT assets: Ensure Omron CJ1M PLCs are on a separate OT network segment that is isolated from the IT network and untrusted public networks.
- Deploy firewalls: Block inbound and outbound traffic on FINS port 9600 (TCP/UDP) at all network boundaries. If the port must be open, allow only connections from authorized engineering workstations (fixed IPs).
- Use VPNs: Require VPN connectivity for all remote access to PLC programming ports; never expose FINS directly to the internet.
- Enforce strong passwords and MFA: For engineering workstations and any remote system that can reach the PLC. Change UM passwords frequently.
- Physical controls: Restrict physical access to PLCs and engineering consoles. Validate USB drives before connection.
3) Long-Term Hardening:
- Monitor for firmware updates: Subscribe to Omron's security advisory notifications (CSRC — Omron Security) and apply any patched firmware versions as soon as they are released for CJ1M.
- Periodic backups & recovery testing: Maintain verified offline backups of PLC user programs to enable rapid recovery if the device is locked out or logic is tampered with.
- Network monitoring: Deploy IDS (Suricata) with the FINS-write detection rule above; log and alert on any unexpected FINS write commands from non-engineering IPs.
- Data validation: Implement range checks and backup validation procedures as recovery insurance against unauthorized program modifications.
- Antivirus on engineering PCs: Protect the engineering workstation to prevent malware from using the programming port as a proxy for this attack.
References
- NVD Entry — CVE-2023-0811: https://nvd.nist.gov/vuln/detail/CVE-2023-0811
- Omron Vendor Advisory (via ICS-CERT coordination): https://www.omron.com/global/en/security/ — search for "CJ1M" or "CVE-2023-0811" advisory (direct link not provided in the CVE data; the workaround details above were drawn from the NVD description which cites the vendor countermeasures).
- CISA KEV Catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog — this CVE is NOT listed as known-exploited as of the date of this report.
- EPSS (Exploit Prediction Scoring System) — FIRST.org: https://www.first.org/epss/ — CVE-2023-0811 has an EPSS score of 0.00621 (46.4th percentile in time-to-exploit), indicating a low near-term exploitation probability but a non-negligible absolute risk given the critical CVSS.
- MITRE ATT&CK — T0859 (IEC 61850 / PLC programming commands) / T1190 (Exploit Public-Facing Application): https://attack.mitre.org/techniques/T1190/ — as the FINS port exposure is the attack vector.
Known threat actor campaigns: None publicly attributed to CVE-2023-0811 are documented. However, Omron PLCs have historically been targeted by ICS-specific malware (e.g., CrashOverride/Industroyer leveraged IEC 60870-5-104; TRITON targeted Triconex — not Omron). The PLC ecosystem as a whole is a well-documented target for botnets (e.g., IPFire variants) and state-sponsored ICS malware. The absence of KEV listing should be interpreted as "no confirmed wild exploitation reported," not "impossible to exploit."
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.