PTH To CE
PTH To CE
M340 PLCs
Abstract
The Schneider Electric industrial control systems architecture consists of Modicon PLCs which com-
municate with an engineering station and SCADA HMI on one side, and control industrial systems on
the other side. After reverse-engineering the cryptographic protocol, we identify vulnerabilities through
which we are able to masquerade as the engineering station to the PLC, cryptographically sign messages,
and inject any messages favourable to the attacker. Moreover, we identify additional vulnerabilities in
the PLC’s memory management. We demonstrate that these primitives lead to remote code execution,
installation of persistent root-kits, and potential re-programming the boot firmware over the network.
1 Introduction
Programmable Logic Controllers (PLCs) are widely used in Industrial Control Systems (ICSs), where they
perform essential process control functions. These controllers manage key equipment such as thermostats,
barometers, valves, engines, and generators. ICSs are used to oversee critical infrastructure, including
power generation facilities, chemical processing plants, water treatment facilities, railways, and other vital
transportation systems essential to contemporary life.
Since 2010, ICSs, and in particular their configuration and monitoring interfaces, have become popular
targets for cyber attacks, the most well known of which is Stuxnet [20, 6]. In response, vendors hardened
these interfaces by adding cryptographic protection.
PLCs are available from multiple vendors, including Siemens, Allen-Bradley, Mitsubishi, Schneider Electric,
and others. Each vendor provides unique firmware, programming languages, communication protocols, and
maintenance software. Nonetheless, the fundamental architecture is quite similar: the PLC manages its
inputs and outputs using internal variables and logic. Programming for the PLC is done on an engineering
workstation using the vendor’s specific control language. This code is compiled into an executable format and
then transferred to the PLC. The PLCs are monitored and controlled through dedicated systems running
Human Machine Interface (HMI) software. While modern PLCs, HMIs, and engineering stations all use
TCP/IP for communication, they generally operate with proprietary higher-level protocols.
Our focus in this paper is Schneider Electric’s line of Modicon Programmable Logic Controllers (PLCs),
which are ranked among the top ten most popular PLCs by their market share, with estimated sales revenue
of around one billion US dollars from their PLC business [24]. Along with the PLCs, Schneider Electric’s
product line features the ‘EcoStruxure Control Expert’ software platform. This platform serves as both
an engineering station and, optionally, as a Human-Machine Interface (HMI). The Control Expert, or the
HMI, communicates with the PLCs using the UMAS network protocol, which is an extension to the popular
Modbus protocol. The latest versions of the UMAS protocol incorporate cryptographic measures to secure
communication, including cryptographic signing of UMAS messages through dynamic nonces exchanged
during the authentication process. Our objective is to gain access to a reserved session with the capability to
1
sign privileged messages, ultimately allowing us to inject a rootkit shellcode and remotely execute it via the
UMAS network. Our use-case for achieving our objectives is the Modicon M340 PLC product line.
1.2 Contributions
Prior research [17] demonstrated a pass-the-hash attack against Modicon PLCs (CVE-2021-22779). In re-
sponse, Schneider Electric released firmware v3.60, which claims to mitigate the attack. Against this back-
drop our contributions are as follows:
• By reverse engineering the PLC we identified that the main change in v3.60 is the introduction of
a Diffie-Hellman key exchange, and the elimination of the cleartext exchange of the password hash
(pwdhash ).
• We discovered a new vulnerability through which the adversary can steal the password hash by sniffing
the project upload or download messages (CVE-2024-8933). With pwdhash in hand we are able to
revive the pass-the-hash attack, i.e., we bypass the mitigations introduced against CVE-2021-22779
[3].
• We observed that even if the project is encrypted, the transmission occurs in cleartext during upload
or download. Additionally, we discovered that the encryption password hash and its salt are visibly
transmitted, similar to the pwdhash .
• The Diffie-Hellman exchange used in v3.60 is a plain-vanilla exchange. so it is vulnerable to a Man-in-
the-Middle (MITM) attack. We demonstrate such an attack that is able to steal the management unit
and PLC nonces, use them to calculate the signature for authenticating reserved UMAS messages—and
thereby achieve the ability to inject arbitrary signed UMAS messages to the PLC (CVE-2024-8935).
• We identify a new vulnerability in which via the MITM attack, and using a signed message, we are able
to modify a critical variable in the PLC memory—the addressReadLimiter (CVE-2024-8936). Once it
is overwritten the attacker can read all the restricted memory areas using public unsigned read requests
sent over UMAS traffic, without needing to execute the MITM attack again, until the PLC is rebooted:
i.e., we bypass the mitigations against CVE-2020-7537 [3]. This allows reading the pwdhash and other
cryptographic data whenever the attacker wishes.
• Modicon M340 PLCs are built on ARMv4T processors which do not have a “Non-Execute” bit over
memory regions. Hence by using signed messages we are able to inject shellcode into unused memory
2
regions. We identify two new vulnerabilities through-which we can trigger the injected shellcode and
achieve code execution, at will, using unsigned messages (CVE-2024-8937 and CVE-2024-8938).
The content of this paper was disclosed to Schneider Electric prior to publication. Schneider officially con-
firmed our findings on November 12, 2024 and registered them under the five CVE numbers mentioned
above: CVE-2024-8933, CVE-2024-8935, CVE-2024-8936, CVE-2024-8937, and CVE-2024-8938. In parallel
to the registration of the CVEs Schneider Electric released firmware update 3.65 to address the addressRead-
Limiter overwrite and the two code-execution vulnerabilities. They also published mitigations against the
other vulnerabilities.
2 Basics
2.1 EcoStruxure Control Expert
EcoStruxure Control Expert (previously named Unity Pro) is a software platform developed by Schneider
Electric as part of their EcoStruxure architecture. It is designed for programming and managing Modicon
PLCs and PACs (Programmable Automation Controllers). It provides a set of tools for creating, simulating,
debugging, and maintaining control applications.
3
UMAS Session UMAS Data
header key function code
0x5A 0x00 ... ...
1 Byte 1 Byte 1 Byte Variable size
allows to download older firmware versions (as it is possible to downgrade the PLC firmware). In our study
we refer our findings to firmware versions from v3.01 and above, in which Schneider started implementing
a password protection mechanism over UMAS protocol. In particular we show undiscovered findings and
approaches to handle with the recent firmware version v3.60.
4
UMAS Session UMAS sign Magic Signature UMAS Session UMAS Data
header key function code key function code
0x5A rsvID 0x38 0x01 ... 0x5A rsvID ... ...
1 Byte 1 Byte 1 Byte 1 Byte 32 Bytes 1 Byte 1 Byte 1 Byte Variable size
messages. The messages include: the ‘UMAS header’, a propriety Modbus function byte used in all UMAS
messages; The ‘Session key’, a byte that carries the reservation ID. If the PLC is not reserved, then the
‘Session key’ value is ‘0x00’. Then there is the ‘UMAS function code’, and variable length ‘Data’ that
corresponds to the function type.
4 UMAS Authentication
A project in the management unit’s Control Expert software is password-protected. As described by [16],
when such a project is created, the Control Expert prompts the user to select a password (pwd), and generates
5
UMAS Error
error header data
0xDA 0x04
1 Byte 1 Byte
Table 5: The structure of UMAS message response for incorrectly signed UMAS message request
Authentication
Cryptographic
Nonces exchange secret and session
data exchange
key transmission
a 16 bytes salt value (pwdsalt ). It then calculates the password hash (pwdhash ) as follows:
pwdsalt = randomBytes(16)
pwdhash = SHA256(pwdsalt ||pwd) (1)
Both pwdsalt and pwdhash are saved in the APX binary in Base64 encoding. The plaintext password pwd
itself is not stored.
Figure 1 shows a high-level view of the the authentication handshake that occurs whenever the management
unit establishes a session with the PLC. The handshake assumes that the APX binary is already present
on the PLC. The handshake consists of three stages: a cryptographic data exchange, nonces exchange, and
authentication secret and session key transmission.
The general structure of the handshake has not changed by the firmware updates since v3.01. However,
Schneider did enhance the protection of the stages’ implementation on each firmware update to make it
successively harder to attack. In the following sections we will go into more detail for each stage, and discuss
the changes in their implementation for the different firmware versions.
6
Control Expert v16 PLC
v3.01 to v3.50
Figure 3: Exchanging nonces between management unit and PLC using ‘enhancedRsvMngt’ UMAS message
X data is inaccessible via the ‘ReadMemoryBlock’ UMAS message: the firmware code denies this request
and replies with a NACK UMAS message.
Hence in the v3.50 and above, the management unit just calculates pwdhash based on the user-provided
pwd and the pwdsalt extracted from the UMAS traffic. Note that at this stage the software cannot know
whether the pwd given by the user is correct or not since it does not have the expected pwdhash to compare
with.
7
Control Expert v16 PLC
v3.60
Figure 4: Exchanging nonces between management unit and PLC using v3.60 two-stage UMAS nonces
handshake messages
is the introduction of a textbook Diffie-Hellman key exchange to generate an ephemeral shared value
(‘DH_shared‘), from which a salted shared ephemeral AES key (‘AES_secret’) is derived. The nonces
are transmitted encrypted with AES-CBC-256 using ‘AES_secret’ as the key. Figure 4 shows the message
flow.
We identified that the cryptographic computations in the PLC are based on the mbedtls_dhm library, a
component of the mbedtls cryptographic open-source library [22]. The modular exponential (MODP) group
used for Diffie-Hellman calculations is the RFC-3526 [18] 2048-bit MODP group:
g = 2 (2)
2048 1984 64 1918
p = 2 −2 −1+2 · [(2 π) + 124476]
Tables 10 and 11 in the Appendix describe the structure of the two Diffie-Hellman (‘preEncryptedRsvMngt’)
messages exchanging the public DH values g a (mod p) and g b (mod p). Note that in the message from the
management unit to the PLC (Table 10) there is a ‘Reserver ID’ field, a 4 bytes that uniquely identifies the
management unit, that is sent in plaintext. At this point, both parties calculate the Diffie-Hellman shared
key
DH_shared = g ab (mod p). (3)
The management unit now generates a random 16-byte AES_salt, and derives a shared AES_secret
by
AES_secret = SHA256(AES_salt||DH_shared) (4)
The management unit encrypts its N onceP C using AES-CBC-256 (using a fixed IV = 0), with AES_secret
as the key:
Enc_N onceP C = AES-CBC-256AES_secret (N onceP C )
and sends Enc_N onceP C together with AES_salt as an ‘encryptedRsvMngt’ message to the PLC. With
the received AES_salt the PLC also derives AES_secret according to equation (4), encrypts its own
N onceP LC , and sends it to the management unit. Tables 12 and 13 in the Appendix show the structure
of the two ‘encryptedRsvMngt’ messages. At the end of this exchange both sides decrypt the other party’s
nonce.
8
The management unit encodes auth_secret with UTF-8 and sends it to the PLC using the ‘TryReserve’
UMAS function (0x10). If the received auth_secret is equal to the value calculated by the PLC, it re-
sponds with a reservation session key. Tables 14 and 15 in the Appendix show the structure of these two
messages.
Through reverse engineering the code, we discovered how the PLC generates the 1-byte Session Key for
the reserved session: if the PLC was not reserved before then it picks a random value for the Session Key.
Otherwise in increments the previous value by 1 (modulo 256).
We note that having a 1-byte Session Key seems to be weak—however, this value is exchanged in plaintext
in all subsequent messages, and knowing it seems not to provide much value to an attacker since there can
only be one reserved session at a time.
be the request UMAS message content to be signed (for response UMAS message, the ‘UMAS function
code’ is replaced by the ‘ACK/NACK code’); it is a concatenation of all “non-reserved” fields in a UMAS
message. The signature computation is symmetric. To sign M sg, the signing party uses the two nonces from
Section 4.2, hashes each nonce with the P LCID , and calculates the signature as follows:
The P LCID is a 4-byte identifier for the PLC that can be obtained by public UMAS messages.
Interestingly, this unusual signature algorithm does not use auth_secret (equation (5)), and in fact does not
depend on the project password pwd nor its hash pwdhash in any way. The algorithm has remained the same
in all firmware updates since version v3.01. We argue that this is a significant design weakness: an attacker
that learns the two nonces and some public or easy-to-sniff values is able to sign messages at will, without
needing to know the project password. As we shall see in Sections 6 and 7, this weakness is an enabler to
our advanced attacks leading to code execution.
In our opinion, using a standard symmetric signature like HMAC [19], using a shared key derived from
auth_secret, would be much stronger than the current method, and would mitigate some aspects of our
attacks.
9
5.1 Getting the Password Hash over UMAS
In this section, we show how to capture the pwdhash through passive sniffing of UMAS traffic. This attack
is based on the following:
Vulnerability 1 (CVE-2024-8933): The pwdhash is transmitted in plaintext during project upload from
or download to the PLC.
UMAS includes function codes to download a project from the management unit to the PLC, and to upload
a project from the PLC. Both are reserved commands that need to be signed. However, our research shows
that the upload or download traffic transfers the full APX binary, and is not encrypted. As described in
Section 4, the APX binary includes both the pwdhash and pwdsalt . Therefore, a passive attacker can capture
these two parameters by sniffing the traffic when a legitimate upload or download process is occurring.
When the management unit performs a project upload from the PLC, it sends an ‘UploadPacket’ reserved
UMAS message (0x34). The structure of this message and the PLC’s response appear in Tables 16 and 17
in the Appendix.
Similarly, UMAS supports the project upload, in the opposite direction: The management unit sends a
‘DownloadPacket’ reserved UMAS message (0x31). The structure of this message and the PLC’s response
appear in Tables 18 and 19 in the Appendix.
An immediate implication of stealing the pwdhash and pwdsalt from the upload/download UMAS traffic
is that cracking the password from the password hash becomes possible: As an example, we modified the
popular hashcat [15] password cracker to support the hash calculation of Equation (1) and successfully
cracked our own projects’ password.
10
Control Expert v16 PLC
v3.60
reserverID (Table 14). Upon completion of the process, the attacker establishes an authenticated reserved
session with the PLC.
We implemented this attack in python and demonstrated that it works successfully against our PLC.
11
Control Expert v16 Attacker PLC v3.60
IPP C A IPAttacker C IPP LC B
MACP C a MACAttacker c MACP LC b
[ARP] IP B has MAC c
[ARP] IP A has MAC c
[0x6E] PC DH Public key g a
Figure 6: A MITM attack using ARP spoofing against the nonce exchange
the PLC, but reusing the values sent by the management unit allows the attacker to avoid re-signing all
subsequent messages.
In the last 2 ‘TryReserve’ messages the attacker simply forwards the messages between the management unit
and the PLC, leaving the packets unchanged.
The implication of this attack is that now the attacker has both nonces of an active reserved session, and
is able to inject arbitrary signed messages into the session. In and of itself this attack does not provide the
pwdhash , since it is not exchanged in the handshake—however, as we already noted above, only the nonces
are needed to forge reserved message signatures.
12
Schneider’s security notification [8]). We exploit a new vulnerability to remove the limitation and allow full
memory access.
As for modifying memory, ‘WritePhysicalAddress’ can be modify any writable address. This property,
noted in CVE-2019-6829 by Talos ([26]), was exploited to achieve RCE by Armis ([3]). Nonetheless the
‘WritePhysicalAddress’ logic was not changed in v3.60 and it is still capable of modifying any writable
address, which we exploit. As we shall see in Section 7 we also exploit ‘WritePhysicalAddress’ to inject code
to memory in the same manner as Armis did. For this we need to introduce a some additional background
material.
In our research we discovered the precise value of addressReadLimiter and established that it remains stable
across reboots, and we also have the exact values of the Base and Factor (details are omitted).
However, we discovered the following vulnerability:
Vulnerability 3 (CVE-2024-8936): addressReadLimiter is writeable over UMAS.
13
CE v16 Attacker PLC v3.01 and above
IPP C A IPAttacker C IPP LC B
MACP C a MACAttacker c MACP LC b
Authorized UMAS message [i] request
Authorized UMAS message [i] response
Unauthorized UMAS message request
Unauthorized UMAS message response
Authorized UMAS message [i + 1] request
Authorized UMAS message [i + 1] response
14
PLC receives non- ‘Function1’ : ‘Function1’1 :
‘Function1’2
reserved message call ‘Function1’1 call ‘Function1’2
‘shellcode’ :
‘Function1’1 :
execute; call
call ‘shellcode’
‘Function1’2
Figure 8: Two-step function pointer redirection of ‘Function1’. White rectangles are actions within code
memory regions, and grey rectangles are actions within data memory regions.
8 Conclusions
In this paper showed that version v3.60 of the UMAS protocols, which was the most recent at the time
of writing, was vulnerable. We identified vulnerabilities through which we were able to masquerade as the
EcoStruxure Control Expert to the PLC, cryptographically sign messages, and inject any messages favourable
1 The real function names in the firmware code are redacted.
15
to the attacker. Moreover, we identified additional vulnerabilities in the M340 PLC’s memory management,
which in conjunction with the protocol vulnerabilities could be exploited to create read-anywhere and write-
anywhere primitives over the network. We demonstrated that these primitives could lead to remote code
execution. In many cases we also provided suggestions on how the vulnerabilities we identified might be
mitigated. We disclosed our findings to the vendor.
16
References
[1] Modbus Application Protocol V1.1b. http://www.modbus.org/docs/Modbus_Application_Protocol_
V1_1b.pdf.
[2] Nichole Anne. Packet modification attack on PLC with ARP spoofing (MITM attack). Medium,
2020. https://medium.com/@npcole/packet-modification-attack-on-plc-with-arp-spoofing-
mitm-attack-f0c4d58e3e83.
[3] Armis. The Vulnerability Can Lead to Native Remote-Code-Execution on Vulnerable PLCs, 2020.
Armis, https://www.armis.com/research/modipwn/.
[4] biero-el corridor. Wireshark umas modicon m340 protocol dissector github, 2022. https://github.
com/biero-el-corridor/Wireshark-UMAS-Modicon-M340-protocol/blob/main/modbus-umas-
schneider.lua.
[5] E. Biham, S. Bitan, A. Carmel, A. Dankner, U. Malin, and A. Wool. Rogue7: Rogue engineering-station
attacks on S7 Simatic PLCs. In Black Hat Briefings, Las Vegas, August 2019.
[6] T.M. Chen. Stuxnet, the real start of cyber warfare? IEEE Network, 24(6):2–3, 2010.
[7] S. Cheung, B. Dutertre, M. Fong, U. Lindqvist, K. Skinner, and A. Valdes. Using model-based intrusion
detection for SCADA networks. In Proceedings of the SCADA Security Scientific Symposium, pages
127–134, 2007.
[8] Schneider Electric. Schneider Electric security notification - Modicon M580, Modicon M340, legacy
controllers Modicon Quantum & Modicon Premium, December 2020. Schneider Electric, https://
download.schneider-electric.com/files?p_Doc_Ref=SEVD-2020-343-08.
[9] Schneider Electric. Schneider Electric security notification - Modicon M340, Momentum & MC80,
Novmeber 2024. Schneider Electric, https://download.schneider-electric.com/doc/SEVD-2024-
317-02/SEVD-2024-317-02.pdf.
[10] Schneider Electric. Schneider Electric security notification - Modicon M340, Momentum & MC80,
Novmeber 2024. Schneider Electric, https://download.schneider-electric.com/doc/SEVD-2024-
317-02/SEVD-2024-317-03.pdf.
[11] Liras en la red. The Unity (UMAS) protocol, 2017. http://lirasenlared.blogspot.com/2017/08/
the-unity-umas-protocol-part-i.html.
[12] Ettercap home page. https://www.ettercap-project.org/.
[13] Niv Goldenberg and Avishai Wool. Accurate modeling of Modbus/TCP for intrusion detection in
SCADA systems. International Journal of Critical Infrastructure Protection, 6(2):63–75, 2013.
[14] Barak Hadad, Gal Kauffman, and Ben Seri. Exploring and exploiting programmable logic controllers
with URGENT/11 vulnerabilities, 2020. Armis, https://info.armis.com/rs/645-PDC-047/images/
Armis-URGENT11-on-OT-WP.pdf.
[15] hashcat. Hashcat advanced password recovery, 2019. http://hashcat.net.
[16] Gao Jian. Going deeper into Schneider Modicon PAC security. In HITB Security Confer-
ence, 2021. https://conference.hitb.org/hitbsecconf2021sin/materials/D1T2%20-%20Going%
20Deeper%20into%20Schneider%20Modicon%20PAC%20Security%20-%20Gao%20Jian.pdf.
[17] Kaspersky. The secrets of Schneider Electric’s UMAS protocol, 2022. https://ics-cert.
kaspersky.com/publications/reports/2022/09/29/the-secrets-of-schneider-electrics-
umas-protocol/.
[18] T. Kivinen and M. Kojo. RFC 3526: More modular exponential (MODP) Diffie-Hellman groups for
Internet Key Exchange (IKE), May 2023.
17
[19] Hugo Krawczyk, Mihir Bellare, and Ran Canetti. RFC 2104: Hmac: Keyed-hashing for message au-
thentication. Technical report, 1997.
[20] Ralph Langner. Stuxnet: Dissecting a cyberwarfare weapon. Security & Privacy, IEEE, 9(3):49–51,
2011.
[21] Seok Min Lim. Attacking SCADA: Vulnerabilities in Schneider Electric SoMachine and
M221 PLC (CVE-2017-6034 and CVE-2020-7489). Trustwave SPIDERLABS BLOG, May
2020. https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/vulnerabilities-
in-schneider-electric-somachine-and-m221-plc/.
[22] Mbed-TLS / mbedtls. https://github.com/Mbed-TLS/mbedtls.
[23] Nicholas Miles. Examining crypto and bypassing authentication in Schneider Electric
PLCs (M340/M580). Medium Tenable Techblog, 2021. https://medium.com/tenable-
techblog/examining-crypto-and-bypassing-authentication-in-schneider-electric-plcs-
m340-m580-f37cf9f3ff34.
[24] Thrive Reports. Programmable Logic Controller (PLC) Market Size, Growth and Forecast from 2023
- 2030, 2023. https://www.linkedin.com/pulse/programmable-logic-controller-plc-market-
size-growth-forecast-v8ure/.
[25] Mashav Sapir, Uri Katz, Noam Moshe, Sharon Brizinov, and Amir Preminger. Evil PLC at-
tack: Weaponizing PLCs, 2022. Claroty, https://web-assets.claroty.com/resource-downloads/
team82-evil-plc-attack-research-paper-1661285586.pdf.
[26] Talos. Schneider Electric Modicon M580 UMAS Function Code 0x29 Denial of Service Vulnerability,
August 2019. https://talosintelligence.com/vulnerability_reports/TALOS-2019-0807.
[27] Jos Wetzels. Nakatomi space - lateral movement as L1 post-exploitation in OT. In Black Hat Asia,
2023. https://www.classcentral.com/course/youtube-nakatomi-space-lateral-movement-as-
l1-post-exploitation-in-ot-228451.
[28] Wireshark - network protocol analyzer. www.wireshark.org.
18
A Message Formats
UMAS header Session key UMAS function code Mode Reserver ID N onceP C Padding
0x5A 0x00 0x6E 0x02 reserverID ... 0x0000
1 Byte 1 Byte 1 Byte 1 Byte 4 Bytes 32 Bytes 2 Bytes
UMAS header Session key UMAS function code Mode Reserver ID DH_publicP C
0x5A 0x00 0x6E 0x03 reserverID ...
1 Byte 1 Byte 1 Byte 1 Byte 4 Bytes 256 Bytes
19
UMAS header Session key ACK/NACK code Magic Enc_N onceP LC
0x5A 0x00 0xFE 0xAAAA ...
1 Byte 1 Byte 1 Byte 2 Bytes 32 Bytes
Table 16: The structure of the non-reserved part of the ’UploadPacket’ UMAS reserved message request
Table 17: The structure of the non-reserved part of the ’UploadPacket’ UMAS reserved message response
Table 18: The structure of the non-reserved part of the ‘DownloadPacket’ UMAS reserved message request
Table 19: The structure of the non-reserved part of the ‘DownloadPacket’ UMAS reserved message response
Table 20: The structure of the non-reserved ‘ReadPhysicalAddress’ UMAS message request
20
UMAS Session ACK/NACK Size Data
header key code
0x5A 0x00 0xFE ... ...
1 Byte 1 Byte 1 Byte 2 Byte Variable size
Table 21: The structure of the non-reserved ‘ReadPhysicalAddress’ UMAS message response
Table 22: The structure of the non-reserved part of ‘WritePhysicalAddress’ UMAS message request
Table 23: The structure of the non-reserved part of ‘WritePhysicalAddress’ UMAS message response
21