Every CVE Search/ Get API key

CVE-2023-41325

OP-TEE double free in shdr_verify_signature

7.4 High

OP-TEE is a Trusted Execution Environment (TEE) designed as companion to a non-secure Linux kernel running on Arm; Cortex-A cores using the TrustZone technology. Starting in version 3.20 and prior to version 3.22, shdr_verify_signature can make a double free. shdr_verify_signature used to verify a TA binary before it is loaded. To verify a signature of it, allocate a memory for RSA key. RSA key allocate function (sw_crypto_acipher_alloc_rsa_public_key) will try to allocate a memory (which is optee’s heap memory). RSA key is consist of exponent and modulus (represent as variable e, n) and it allocation is not atomic way, so it may succeed in e but fail in n. In this case sw_crypto_acipher_alloc_rsa_public_keywill free oneand return as it is failed but variable ‘e’ is remained as already freed memory address .shdr_verify_signaturewill free again that memory (which ise`) even it is freed when it failed allocate RSA key. A patch is available in version 3.22. No known workarounds are available.

Attack profile

How easy it is to exploit

Attack vector
Local
Complexity
Low
Privileges needed
High
User interaction
Required

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
None

Exploit likelihood

0.39%Up 0.3 points since Sep 16, 2023
90%50%10%1%

What each source reports

CVE List Score used 7.4

OP-TEE double free in shdr_verify_signature

OP-TEE is a Trusted Execution Environment (TEE) designed as companion to a non-secure Linux kernel running on Arm; Cortex-A cores using the TrustZone technology. Starting in version 3.20 and prior to version 3.22, shdr_verify_signature can make a double free. shdr_verify_signature used to verify a TA binary before it is loaded. To verify a signature of it, allocate a memory for RSA key. RSA key allocate function (sw_crypto_acipher_alloc_rsa_public_key) will try to allocate a memory (which is optee’s heap memory). RSA key is consist of exponent and modulus (represent as variable e, n) and it allocation is not atomic way, so it may succeed in e but fail in n. In this case sw_crypto_acipher_alloc_rsa_public_keywill free oneand return as it is failed but variable ‘e’ is remained as already freed memory address .shdr_verify_signaturewill free again that memory (which ise`) even it is freed when it failed allocate RSA key. A patch is available in version 3.22. No known workarounds are available.

Record
CVE-2023-41325
CVSS 3.1
7.4 HighCVSS:3.1/AV:L/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
Weakness
CWE-415
Updated
2026-11-02
EUVDEUVD-2023-45838 7.4

OP-TEE is a Trusted Execution Environment (TEE) designed as companion to a non-secure Linux kernel running on Arm; Cortex-A cores using the TrustZone technology. Starting in version 3.20 and prior to version 3.22, shdr_verify_signature can make a double free. shdr_verify_signature used to verify a TA binary before it is loaded. To verify a signature of it, allocate a memory for RSA key. RSA key allocate function (sw_crypto_acipher_alloc_rsa_public_key) will try to allocate a memory (which is optee’s heap memory). RSA key is consist of exponent and modulus (represent as variable e, n) and it allocation is not atomic way, so it may succeed in e but fail in n. In this case sw_crypto_acipher_alloc_rsa_public_keywill free oneand return as it is failed but variable ‘e’ is remained as already freed memory address .shdr_verify_signaturewill free again that memory (which ise`) even it is freed when it failed allocate RSA key. A patch is available in version 3.22. No known workarounds are available.

Record
EUVD-2023-45838
CVSS 3.1
7.4 HighCVSS:3.1/AV:L/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
Updated
2026-11-03
NVD 7.4

OP-TEE is a Trusted Execution Environment (TEE) designed as companion to a non-secure Linux kernel running on Arm; Cortex-A cores using the TrustZone technology. Starting in version 3.20 and prior to version 3.22, shdr_verify_signature can make a double free. shdr_verify_signature used to verify a TA binary before it is loaded. To verify a signature of it, allocate a memory for RSA key. RSA key allocate function (sw_crypto_acipher_alloc_rsa_public_key) will try to allocate a memory (which is optee’s heap memory). RSA key is consist of exponent and modulus (represent as variable e, n) and it allocation is not atomic way, so it may succeed in e but fail in n. In this case sw_crypto_acipher_alloc_rsa_public_keywill free oneand return as it is failed but variable ‘e’ is remained as already freed memory address .shdr_verify_signaturewill free again that memory (which ise`) even it is freed when it failed allocate RSA key. A patch is available in version 3.22. No known workarounds are available.

Record
CVE-2023-41325
CVSS 3.1
7.4 HighCVSS:3.1/AV:L/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
CVSS 3.1
6.7 MediumCVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-415
Updated
2026-11-02
OSV 7.4

OP-TEE double free in shdr_verify_signature

OP-TEE is a Trusted Execution Environment (TEE) designed as companion to a non-secure Linux kernel running on Arm; Cortex-A cores using the TrustZone technology. Starting in version 3.20 and prior to version 3.22, shdr_verify_signature can make a double free. shdr_verify_signature used to verify a TA binary before it is loaded. To verify a signature of it, allocate a memory for RSA key. RSA key allocate function (sw_crypto_acipher_alloc_rsa_public_key) will try to allocate a memory (which is optee’s heap memory). RSA key is consist of exponent and modulus (represent as variable e, n) and it allocation is not atomic way, so it may succeed in e but fail in n. In this case sw_crypto_acipher_alloc_rsa_public_keywill free oneand return as it is failed but variable ‘e’ is remained as already freed memory address .shdr_verify_signaturewill free again that memory (which ise`) even it is freed when it failed allocate RSA key. A patch is available in version 3.22. No known workarounds are available.

Record
CVE-2023-41325
CVSS 3.1
7.4 HighCVSS:3.1/AV:L/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
Weakness
CWE-415
Updated
2026-11-02

Affected products

History

History
RecordedChangedSources
aliases, publishedEUVD
first indexedCVE List, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2023-41325 is a high vulnerability (CVSS 7.4) in Trustedfirmware Op-tee, published September 15, 2023. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.39%, the 32nd percentile. No source names a fixed version.

References

MoveEnter Open