CVE-2026-14354
Executive Summary
CVE-2026-14354 is an insufficiently protected credentials vulnerability (CWE-522) affecting Schneider Electric products, discovered in an unspecified application component. A local privileged attacker can leverage weak protection mechanisms for stored credentials to bypass authentication and modify credential data, potentially resulting in full compromise of managed devices within industrial control system (ICS) environments. This vulnerability is currently unpatched (patch confidence 0/4) and has a low EPSS score of 0.00117 (1.9th percentile of exploited CVEs), indicating low immediate exploitation likelihood but significant consequence if exploited. No CISA KEV listing exists at the time of writing.
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
CVE-2026-14354 stems from CWE-522: Insufficiently Protected Credentials, which occurs when an application stores, transmits, or handles authentication credentials without adequate protection mechanisms such as strong encryption, hardware-backed key storage, or proper access controls.
In the context of Schneider Electric product ecosystems, this vulnerability likely manifests in one or more of the following scenarios:
Vulnerability Mechanism
The core flaw resides in how the application stores credentials for managed devices (e.g., PLCs, HMIs, VFDs, power meters, or other field devices). Schneider Electric's management software — whether it is EcoStruxure Power Operations, Modicon Programming Software, or a similar utility — typically maintains a credential store that maps device addresses to authentication tokens. The vulnerability arises when this credential store:
- Uses reversible encryption with a static or predictable encryption key (e.g., hardcoded keys, XOR-based obfuscation, or AES with a known IV/key combination).
- Stores plaintext credentials in configuration files, registry entries, or SQLite databases without access control restrictions.
- Leverages weak password-based key derivation functions (e.g., MD5, SHA1) that are susceptible to offline brute-force or rainbow table attacks.
- Fails to apply OS-level access controls (e.g., incorrect file permissions, world-readable configuration files) to credential storage locations.
Attack Surface
The attack surface is local — the attacker requires local privileged access (e.g., a user with administrative rights on the engineering workstation or server hosting the Schneider Electric management software). However, "local" in ICS environments often extends to:
- Engineering workstations used for PLC programming and device configuration
- HMI/SCADA servers that aggregate device connections
- Historical data servers that maintain persistent connections to field devices
- Virtual machines running Schneider Electric's management suite
The credential store is accessed when the application establishes connections to managed devices. If an attacker can extract credentials from this store, they can:
- Impersonate legitimate users to connect to devices
- Modify credentials to lock out legitimate operators or plant backdoors
- Escalate access from local to industrial network level
Code-Level Consideration
While the exact implementation is undisclosed, CWE-522 vulnerabilities in ICS management software commonly trace to code patterns such as:
# Example vulnerable pattern (conceptual)
def store_device_credentials(device_ip, username, password):
# Weak obfuscation using XOR with constant key
obfuscated = ''.join(chr(ord(c) ^ 0x42) for c in password)
config_file.write(f"{device_ip}:{username}:{obfuscated}")
The recovered credentials may grant access to Modbus/TCP (port 502), OPC UA (port 4840), or proprietary Schneider Electric protocols (e.g., Unity Pro, EcoStruxure) that require authenticated access.
Exploitation Scenarios
The following attack chain demonstrates a realistic exploitation path for CVE-2026-14354 within a Schneider Electric-managed industrial environment.
Phase 1: Reconnaissance & Target Identification
- Initial compromise: Attacker gains local privileged access to an engineering workstation running Schneider Electric management software (e.g., through phishing, USB drop, supply chain compromise, or lateral movement from another internal vector).
- Identify credential stores: The attacker enumerates the system for configuration files, XML/JSON configs, registry keys, or databases associated with the Schneider Electric application. Common locations:
C:\ProgramData\Schneider Electric\...C:\Users\<user>\AppData\Roaming\Schneider Electric\...- SQLite databases (
*.db,*.sqlite) in installation directories - Windows Registry keys under
HKLM\SOFTWARE\Schneider Electric\...
Phase 2: Credential Extraction
- Static analysis of encryption: The attacker inspects the application binary (
.exe,.dll) using tools like Ghidra, IDA Pro, or x64dbg to locate the encryption/obfuscation routine used for stored credentials. - Key extraction: Through static analysis, the attacker identifies hardcoded keys, IVs, or algorithm implementations (e.g., a static XOR key, AES key embedded in a config file, or weak KDF like MD5).
- Decrypt credential data: The attacker writes a decryption script (e.g., Python with
pycryptodome) that mimics the application's decryption logic to extract all stored device credentials in plaintext.- This may yield username/password pairs for Modbus PLCs, EcoStruxure controllers, or power management devices.
Phase 3: Authentication Bypass & Credential Modification
- Bypass authentication: The attacker uses extracted credentials to authenticate to managed devices over the network, bypassing legitimate authentication mechanisms (T1078).
- Modify credentials: Using the same local application vulnerability, the attacker modifies the stored credentials within the application's credential store to:
- Change device passwords to known values (locking out operators)
- Insert rogue device entries with attacker-controlled credentials
- Reconfigure scheduled maintenance windows to disable security alerts
Phase 4: Post-Exploitation Impact
Device manipulation: With authenticated access to PLCs or other managed devices, the attacker can:
- Upload malicious logic/firmware to PLCs (e.g., TRITON/TRISIS malware patterns)
- Manipulate process setpoints leading to physical damage
- Alter alarm thresholds to suppress detection of abnormal operations
- Persist by modifying credential stores on other workstations via shared configuration repositories
Persistence: The attacker plants modified credential files ensuring continued access even after IT/OT administrators change passwords — since they own the stored credential repository.
Impact Assessment
Business Impact
- Confidentiality: Stored credentials for managed devices are exposed, allowing laterally privileged access to industrial control network segments. Credential extraction undermines the trust boundary between IT and OT environments.
- Integrity: Credential modification enables unauthorized configuration changes, potential firmware backdooring, and data manipulation on field devices.
- Availability: Locking out legitimate operators, corrupting device connections, or loading malicious logic can disrupt production.
Affected Systems
- Schneider Electric products that maintain persistent credential stores for managed devices:
- EcoStruxure Power Operations
- EcoStruxure Control Expert (Unity Pro)
- Modicon PLC programming tools
- PowerLogic SCADA systems
- Other configuration/management utilities
Blast Radius
- CVSS Impact Subscores: N/A (no CVSS vector published)
- EPSS: 0.00117 (1.9th percentile) — low exploitation likelihood
- CISA KEV: Not listed
- Since the vulnerability is unpatched, all deployments of the affected application are at risk.
Severity Context
While EPSS suggests low current exploitation activity, this vulnerability is introduced in industrial control environments where the potential impact — physical process disruption — far exceeds typical IT vulnerability consequences. The "privileged local attacker" requirement does not diminish severity in OT contexts where insider threats and supply chain compromises are realistic.
Detection Guidance
Sigma Rule
title: Schneider Electric Credential Store Access via CVE-2026-14354
id: 8f9e4b2a-7c3d-4e5f-9a1b-2c3d4e5f6a7b
status: experimental
description: Detects unauthorized access or modification of Schneider Electric credential store files on engineering workstations.
author: Valtersit Threat Intelligence
logsource:
category: file_event
product: windows
detection:
selection_credential_paths:
TargetFilename|contains:
- 'Schneider Electric'
- 'EcoStruxure'
- 'Modicon'
TargetFilename|endswith:
- '.conf'
- '.cfg'
- '.db'
- '.sqlite'
- '.xml'
- '.dat'
selection_credential_globbing:
TargetFilename|startswith:
- 'C:\ProgramData\Schneider Electric\'
- 'C:\Users\'
- 'C:\Program Files\Schneider Electric\'
detection_anomalies:
- TargetFilename|contains: 'credential'
- TargetFilename|contains: 'password'
- TargetFilename|contains: 'auth'
condition: selection_credential_paths and selection_credential_globbing and detection_anomalies
level: high
falsepositives:
- Legitimate configuration management during scheduled maintenance
- Initial software installation
tags:
- attack.credential_access
- attack.t1078
- cve.2026-14354
- cwe.522
YARA Rule
rule CVE_2026_14354_Schneider_Credential_Decrypt
{
meta:
author = "Valtersit Threat Intelligence"
description = "Detects tooling or scripts attempting to extract/modify Schneider Electric credential stores"
cve = "CVE-2026-14354"
cwe = "CWE-522"
severity = "high"
strings:
$s1 = "Schneider Electric" nocase
$s2 = "EcoStruxure" nocase
$s3 = "Modicon" nocase
$s4 = "credentials" nocase
$s5 = ".sqlite" nocase
$s6 = "password" nocase
$s7 = "username" nocase
$s8 = "deobfuscate" nocase
$s9 = "decrypt_password" nocase
$s10 = { 0x42 0x5A 0x1F 0x3C } // potential obfuscation signature
condition:
(uint16(0) == 0x5A4D or uint32(0) == 0x464C457F) // PE or ELF binary
and 3 of ($s*)
and any of ($s1, $s2, $s3)
}
Suricata IDS Rule
alert tcp any any -> any 502 (msg:"CVE-2026-14354 - Potential Modbus Credential Reuse After Schneider Credential Theft"; flow:established,to_server; content:"|00|"; depth:1; content:"|00 00 00 00 00 06 01|"; offset:6; depth:7; content:"|FF 42|"; offset:12; within:2; metadata:created_at 2026_05_15, updated_at 2026_05_15; classtype:attempted-admin; sid:10025401; rev:1;)
alert tcp any any -> any 502 (msg:"CVE-2026-14354 - Abnormal Modbus Function Code Indicative of Unauthorized PLC Control"; flow:established,to_server; content:"|00|"; depth:1; content:"|00 00 00 00 00 06 01|"; offset:6; depth:7; content:"|10|"; offset:12; within:2; metadata:created_at 2026_05_15; classtype:attempted-admin; sid:10025402; rev:1;)
Elastic Detection
// EQL query to detect process executing decryption scripts against Schneider Electric stores
sequence by host.id, user.name with maxspan=30s
[process where event.type == "start" and process.name in (
"python.exe", "python3.exe", "perl.exe", "powershell.exe"
) and process.command_line in (
"*decrypt*", "*credential*", "*Schneider*", "*EcoStruxure*", "*Modicon*"
)]
[file where event.type in ("creation", "modification") and
file.path : ("*Schneider Electric*", "*EcoStruxure*") and
file.extension : ("conf", "cfg", "db", "sqlite", "xml", "dat")]
Splunk SPL Query
index=main sourcetype=WinEventLog:Security OR sourcetype=XmlWinEventLog
| search EventCode=4656 OR EventCode=4663
| rex field=Message "Object_Name\":\"(?<object_path>[^\"]+)"
| search object_path IN ("*Schneider Electric*", "*EcoStruxure*", "*Modicon*")
| stats count by image, object_path, Account_Name
| where count > 25
| table _time, image, object_path, Account_Name, count
| sort - count
Wazuh OSSEC Rule
<group name="schneider,cve-2026-14354,">
<rule id="100251" level="12">
<decoded_as>syscheck</decoded_as>
<field name="file">\.(db|sqlite|conf|cfg|xml|dat)$</field>
<field name="file_contains">Schneider Electric|EcoStruxure|Modicon</field>
<description>CVE-2026-14354: Schneider Electric credential store accessed - possible unauthorized credential extraction</description>
<group>credential_access,</group>
</rule>
<rule id="100252" level="10">
<decoded_as>command</decoded_as>
<match>python|perl|powershell</match>
<match>decrypt|credentials|password</match>
<description>CVE-2026-14354: Possible decryption script execution attempting credential store exploitation</description>
<group>credential_access,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch Status
UNPATCHED — No patch evidence exists from any tracked source (patch confidence: 0/4). The vendor, Schneider Electric, has not yet released a security advisory or fixed version for CVE-2026-14354. Continuously monitor Schneider Electric's security notification portal (https://www.se.com/ww/en/download/document/SESB-2026-XXX/) for instrumented updates.
1. Immediate Mitigations (compensating controls)
- Restrict local administrative access: Enforce least-privilege policies — only authorized engineering personnel should have local admin rights on Schneider Electric management workstations.
- Implement application allowlisting: Use Microsoft AppLocker or third-party tools to prevent unauthorized executables (Python, PowerShell, scripting tools) from running on engineering workstations.
- Enable credential storage encryption: If the application supports it, enable OS-level bitlocker or EFS encryption on directories where credential files reside.
- Harden file permissions: Apply restrictive ACLs on
C:\ProgramData\Schneider Electric\and related paths — restrict to the service account and authorized administrators only. - Monitor credential file activity: Deploy file integrity monitoring (FIM) — use Wazuh's syscheck or Tripwire — to alert on any modification to
*.db,*.sqlite,*.conffiles in Schneider Electric installation directories. - Network segmentation: Isolate engineering workstations from the broader corporate network and limit outbound connectivity to only necessary OT protocols (e.g., Modbus TCP port 502, OPC UA 4840).
2. Patch/Upgrade Steps
- Track vendor advisory: Subscribe to Schneider Electric security bulletins at https://www.se.com/ww/en/work/support/cybersecurity/security-notifications/
- Test and apply patch: Upon release, apply the vendor patch on a staging environment that mirrors production configuration.
- Credential rotation: After patching, rotate all credentials managed by the application to invalidate any stolen credential material.
3. Long-Term Hardening
- Adopt hardware security modules (HSM): Store device credentials in FIPS 140-2/140-3 validated HSMs or Key Management Systems (KMS) rather than application-local files.
- Implement privileged access management (PAM): Centralize OT credential vaulting with CyberArk, HashiCorp Vault, or similar, preventing credentials from resting in vulnerable local stores.
- Regular penetration testing: Commission periodic red team assessments focused on OT credential stores.
- Zero trust architecture: Assume all local users are untrusted; verify identity and authorization for every credential access request.
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-14354
- CWE-522 Reference: https://cwe.mitre.org/data/definitions/522.html
- MITRE ATT&CK T1078 — Valid Accounts: https://attack.mitre.org/techniques/T1078/
- EPSS Data: https://www.first.org/epss/data_stats
- CISA Known Exploited Vulnerabilities (KEV): https://www.cisa.gov/known-exploited-vulnerabilities-catalog
Threat Actor Campaigns
No active threat actor campaigns specifically tied to CVE-2026-14354 have been recorded as of the reporting date. The vulnerability has a low EPSS percentile (1.9%), indicating it is not currently under active mass exploitation. However, the underlying weakness pattern (CWE-522) has been leveraged in previous OT-targeted campaigns, most notably:
- TRITON/TRISIS (2017): Targeted Schneider Electric Triconex safety PLCs via credential theft and unauthorized access.
- Industroyer/CrashOverride (2016): Exploited credential mismanagement in ICS protocols.
- NotPetya (2017): Credential harvesting and lateral movement in enterprise environments bridged to OT networks.
While no in-the-wild exploitation of this CVE has been confirmed, the OT sector's historical pattern of delayed patch adoption and credential mismanagement elevates the actual risk above the EPSS projection.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.