SEC Consult Vulnerability Lab Security Advisory < 20250226-0 >
=======================================================================
              title: Multiple Vulnerabilities
            product: Siemens A8000 CP-8050 PLC
                     Siemens A8000 CP-8031 PLC
 vulnerable version: <05.40 for Vulnerability 1, <05.30 for Vulnerability 2
      fixed version: 05.40 for Vulnerability 1, 05.30 for Vulnerability 2
         CVE number: CVE-2024-39601, CVE-2024-53832
             impact: High
           homepage: https://www.siemens.com
              found: 2023-04-03
                 by: Stefan Viehboeck (Office Vienna)
                     Steffen Robertz (Office Vienna)
                     Gerhard Hechenberger (Office Vienna)
                     Constantin Schieber-Knoebl (Office Vienna)
                     SEC Consult Vulnerability Lab

                     An integrated part of SEC Consult, an Eviden business
                     Europe | Asia

                     https://www.sec-consult.com

=======================================================================

Vendor description:
-------------------
"We are a technology company focused on industry, infrastructure,
transport, and healthcare. From more resource-efficient factories,
resilient supply chains, and smarter buildings and grids, to cleaner
and more comfortable transportation as well as advanced healthcare,
we create technology with purpose adding real value for customers."

Source: https://new.siemens.com/global/en/company/about.html


Business recommendation:
------------------------
The vendor provides a patch which should be installed immediately.

SEC Consult highly recommends to perform a thorough security review of
the product conducted by security professionals to identify and resolve
potential further security issues.


Vulnerability overview/description:
-----------------------------------
1) Firmware Downgrade (CVE-2024-39601)
The PLC allows the downgrade to previous firmware versions. Therefore,
an attacker is able to downgrade to a firmware version with known
vulnerabilities (e.g., RCE) and exploit them on the PLC, which may
lead to leaking data or backdoored devices. A user account or physical
access is required for firmware upgrades/downgrades.

2) Firmware Update Decryption via Secure Element Oracle (CVE-2024-53832)
The PLC includes a secure element which is connected via an unencrypted
SPI bus. By connecting to this SPI bus, the password for the secure
element authentication can be observed. This allows an attacker to use
the secure element outside of the PLC as an oracle and leads to the
possibility to decrypt all encrypted update files.


Proof of concept:
-----------------
1) Firmware Downgrade (CVE-2024-39601)
A firmware upgrade/downgrade can be triggered in multiple ways, here,
the SICAM WEB interface was used. The current firmware version can be
viewed at "Applications" -> "Installed applications" and was
"CPCI85 04.93" at start. After successfully installing the firmware
file "CPCI8504.F92" via the hamburger menu entry
"Update" -> "Update firmware ..." at the top left corner, the current
firmware version shows "CPCI85 04.92". The downgrade was successful.


2) Firmware Update Decryption via Secure Element Oracle (CVE-2024-53832)
The PLC uses a VaultIC405 secure element in a SOIC8 package connected
via SPI. Its pinout can be seen below:

          +-----------+
SPI_MOSI =| *         |= SPI_MISO
     GND =|  VaultIC  |= VCC
 !SPI_SS =|    405    |= NC
!SPI_SEL =|           |= SPI_SCK
          +-----------+

When connecting to the SPI bus, cleartext data can be read. E.g., the
SubmitPassword command, which looks as follows:

| 0x00 0x00 0x10 0x80 0x20 | UserID | RoleID | Password length | Password | 
Checksum |

Reverse engineering the communication, the used credentials can be
identified as "SiemensUser", ID 1, Role 2. For decrypting updates, the
algorithm "CIP_RSAES_PKCS" is used. After setting the algorithm, data
can be sent to the secure element, the data is decrypted using the
secure element's private key, and the data can be read from the secure
element. This knowledge now allows to use the secure element as oracle
to decrypt updates. For this, the VaultIC shared library
/lib/libvaultic_api_4xx.so was loaded together with a custom library
in between (using LD_PRELOAD) from a custom C program, which was
executed on a Raspberry Pi using the SPI kernel driver to communicate
with the connected secure element.

Every firmware update file contains multiple encrypted archive files,
which are encrypted using a different, random, RSA encrypted AES key.
However, all AES keys can be decrypted using the secure element oracle.
For the following example, the "SICORE_KERNEL_V04.MB_arm.ear" archive
from the "CPCI8504.F93" update archive was used. Extracted, it contains
two files:
* AES encrypted package "SICORE_KERNEL_V04.MB_arm.ipk.enc"
* RSA encrypted AES key "SICORE_KERNEL_V04.MB_arm.ipk.key"
The .key file content is shown below:
-----------------------------------------------------------------------
00000000: 588c f4b8 50c9 27a9 6fcd 7aee 787d 87e2 ...."./uZ.....k{
[...]
000000f0: c3c0 ec53 c671 8024 748f e7ee 2e5f d6b6 ...S.q.$t...._..
-----------------------------------------------------------------------
Using the secure element oracle, the .key file can be decrypted as
"key.bin" file below:
-----------------------------------------------------------------------
00000000: 027a XXXX XXXX XXXX XXXX XXXX XXXX XXXX .z.0XXXXXXXXXXXX
00000010: XXXX XXXX XXXX XXXX XXXX XXXX XXXX 28e4 XXXXXXXXXXXX^r(.
-----------------------------------------------------------------------

The decryption was reverse engineered from the "IDEC00.elf" binary on the
PLC and turned out to be AES in CTR mode. A small C program "decrypt"
was written to decrypt the .enc file with a given key, using the OpenSSL
"CRYPTO_ctr128_encrypt" function. It was used as follows:
-----------------------------------------------------------------------
$ ./decrypt SICORE_KERNEL_V04.MB_arm.ipk.enc out.ipk key.bin
key 02 7a XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 
XX XX XX XX XX 28 e4
filesize 5131094 bytes
-----------------------------------------------------------------------
The created out.ipk file is now a valid IPK software archive. The first
few bytes are given below:
-----------------------------------------------------------------------
00000000: 213c 6172 6368 3e0a 6465 6269 616e 2d62 !<arch>.debian-b
00000010: 696e 6172 792f 2020 3136 3736 3930 3936 inary/ 16769096
00000020: 3736 2020 3020 2020 2020 3020 2020 2020 76  0    0
00000030: 3130 3036 3434 2020 3520 2020 2020 2020 100644 5
00000040: 2020 600a 322e 300d 0a0a 636f 6e74 726f   `.2.0...contro
00000050: 6c2e 7461 722e 677a 2f20 3136 3736 3930 l.tar.gz/ 167690
-----------------------------------------------------------------------
The archive contains a control.tar.gz, data.tar.gz, and a debian-binary
file and can be opened with an archive manager. The decryption was
successful.


Vulnerable / tested versions:
-----------------------------
The following products were tested and identified to be vulnerable:
* Siemens A8000 CP-8050 04.92
* Siemens A8000 CP-8031 04.92

According to the vendor, the following previous firmware versions
are affected:
* <05.40 for vulnerability 1
* <05.30 for vulnerability 2


Vendor contact timeline:
------------------------
2023-04-18: Contacting vendor through productc...@siemens.com, sending PGP
            encrypted advisory.
2023-04-19: Advisory will be handled as case #92461.
2023-06-13: Siemens releases advisory for vulnerability CVE-2023-33919 which was
            originally included in this advisory.
            SEC Consult published first advisory for this device 
(https://sec-consult.com/vulnerability-lab/advisory/multiple-vulnerabilities-siemens-a8000/)
            and included CVE-2023-33919 in issue 2. Removed issue CVE-2023-33919
            from this advisory.
2023-10-09: Requesting status update
2023-10-10: Advisory release scheduled for December.
2024-04-03: Could not find any further Siemens advisory, requesting status 
update.
2024-04-04: Firmware downgrade issue fix scheduled for August 2024, Siemens 
advisory
               will be published in August or September
            Unsafe Storage of MQTT password fix will be released in April 2024,
               Siemens advisory scheduled for May 2024
            Firmware update decryption via oracle fix in April 2024, for full
               bugfix new hardware is required. Supposed to be introduced to
               manufacturing in Summer 2024.
2024-05-14: Siemens released CVE-2024-31486 in SSA-871704 for Vulnerability 3
2024-06-18: Vulnerability 3 now released in SEC Consult SA-20240626-0
            
https://sec-consult.com/vulnerability-lab/advisory/multiple-vulnerabilities-in-siemens-power-automation-products-cp-8000-cp-8021-cp8-022-cp-8031-cp-8050-sicore/
            Removed from this advisory.
2024-07-04: Siemens informs that Vulnerability 1 will be published in August,
            asks for the researcher's names.
2024-07-22: Siemens fixes vulnerability 1 and assignes CVE-2024-39601. Siemens
            advisory information can be found at
            https://cert-portal.siemens.com/productcert/html/ssa-071402.html
2024-10-22: Meeting with ProductCERT, discussing all open / reported issues.
2025-02-10: Requested updated timeline for vulnerability 2.
2025-02-11: Vulnerability 2 released in SSA-128393 on 2024-12-10. Siemens 
advisory
            information can be found at
            https://cert-portal.siemens.com/productcert/html/ssa-128393.html
2025-02-26: Coordinated release of security advisory.


Solution:
---------
The vendor provides software updates for the identified security issues:

* Upgrade firmware CPCI85 to >=V05.40 for Vulnerability 1
  Siemens advisory: 
https://cert-portal.siemens.com/productcert/html/ssa-071402.html

* Upgrade firmware CPCI85 to >=V05.30 for Vulnerability 2
  Siemens advisory: 
https://cert-portal.siemens.com/productcert/html/ssa-128393.html


Workaround:
-----------
Restrict network access to the A8000 CP-8050/CP-8031 module or disable the
SICAM Web Interface.
Disable SD-Card usage to prevent unauthenticated firmware downgrades with
physical access. Use strong credentials and limit access for users allowed
to perform firmware upgrades.
Make sure to strictly limit physical access to the PLC during and also after
its life cycle and strictly limit access to the configured MQTT server.


Advisory URL:
-------------
https://sec-consult.com/vulnerability-lab/


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SEC Consult Vulnerability Lab
An integrated part of SEC Consult, an Eviden business
Europe | Asia

About SEC Consult Vulnerability Lab
The SEC Consult Vulnerability Lab is an integrated part of SEC Consult, an
Eviden business. It ensures the continued knowledge gain of SEC Consult in the
field of network and application security to stay ahead of the attacker. The
SEC Consult Vulnerability Lab supports high-quality penetration testing and
the evaluation of new offensive and defensive technologies for our customers.
Hence our customers obtain the most current information about vulnerabilities
and valid recommendation about the risk profile of new technologies.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Interested to work with the experts of SEC Consult?
Send us your application https://sec-consult.com/career/

Interested in improving your cyber security with the experts of SEC Consult?
Contact our local offices https://sec-consult.com/contact/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Mail: security-research at sec-consult dot com
Web: https://www.sec-consult.com
Blog: https://blog.sec-consult.com
X: https://x.com/sec_consult

EOF Stefan Viehboeck, Steffen Robertz, Gerhard Hechenberger, Constantin 
Schieber-Knoebl  / @2025

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
Sent through the Full Disclosure mailing list
https://nmap.org/mailman/listinfo/fulldisclosure
Web Archives & RSS: https://seclists.org/fulldisclosure/

Reply via email to