CVE-2025-59438
Mbed TLS through 3.6.4 has an Observable Timing Discrepancy.
Mbed TLS through 3.6.4 has an Observable Timing Discrepancy.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- Low
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
5.3
Mbed TLS through 3.6.4 has an Observable Timing Discrepancy.
- Record
CVE-2025-59438- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Weakness
- CWE-208
- Updated
- 2026-11-02
EUVDEUVD-2025-35171
5.3
Mbed TLS through 3.6.4 has an Observable Timing Discrepancy.
- Record
EUVD-2025-35171- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-mqc9-9p37-h763
5.3
Mbed TLS through 3.6.4 has an Observable Timing Discrepancy.
Mbed TLS through 3.6.4 has an Observable Timing Discrepancy.
- Record
GHSA-mqc9-9p37-h763- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Weakness
- CWE-208
- Updated
- 2026-11-02
NVD
5.3
Mbed TLS through 3.6.4 has an Observable Timing Discrepancy.
- Record
CVE-2025-59438- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Weakness
- CWE-208
- Updated
- 2026-11-05
OSVALPINE-CVE-2025-59438
5.3
Mbed TLS through 3.6.4 has an Observable Timing Discrepancy.
- Record
ALPINE-CVE-2025-59438- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Updated
- 2026-11-03
OSV
5.3
Mbed TLS through 3.6.4 has an Observable Timing Discrepancy.
- Record
CVE-2025-59438- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Updated
- 2026-11-07
Show 17 moreShow less
OSVDEBIAN-CVE-2025-59438
5.3
Mbed TLS through 3.6.4 has an Observable Timing Discrepancy.
- Record
DEBIAN-CVE-2025-59438- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Updated
- 2026-11-06
OSVJLSEC-2025-233
5.3
Padding oracle through timing of cipher error reporting
Vulnerability
In symmetric encryption modes that involve padding, if an attacker can submit ciphertexts for decryption and learn whether the padding is valid, this provides partial information about the plaintext. If the attacker can also submit input that the victim encrypts together with a secret, this can allow the attacker to recover the whole secret part. This is known as a padding oracle attack. The attacker may learn the validity of the padding directly or indirectly, for example through timing.
In the Mbed TLS legacy API (mbedtls_cipher_crypt(), mbedtls_cipher_finish()), the problematic modes are ECB and CBC with any padding other than NONE. In the PSA Crypto API (psa_cipher_decrypt(), psa_cipher_finish()), the problematic algorithm is PSA_ALG_CBC_PKCS7.
Mbed TLS takes care to check the padding in constant time inside the legacy cipher modules, so mbedtls_cipher_crypt() and mbedtls_cipher_finish() are not vulnerable. However, application code may be vulnerable if it handles errors from these functions in a way that is not constant-time.
In the PSA API, when the built-in implementation of CBC-PKCS7 is used, the PSA functions (psa_cipher_decrypt(), psa_cipher_finish()) call mbedtls_cipher_finish() and translate its error codes into PSA error codes. This translation is not constant-time, and a local unprivileged attacker may be able to observe which error is raised by timing shared resources such as a code cache or a branch predictor.
In the PSA API, when using a driver, there is no error translation. However some code paths inside the library distinguish the error case from the success case, which allows the same attack.
Impact
Local attackers may be able to recover plaintexts encrypted with CBC-PKCS7 or other symmetric encryption mode using padding when it is decrypted through the PSA API.
Applications using the legacy API to decrypt with padding may be affected through their own error handling.
Affected versions
All versions of Mbed TLS up to 3.6.4 are affected.
TF-PSA-Crypto 1.0.0beta is also affected.
Work-around
Applications are not affected if they only accept authenticated ciphertexts for CBC decryption, i.e. if they only use CBC as part of an encrypt-then-MAC construction. (Applications should use AEAD modes instead of CBC-based modes whenever possible.)
Resolution
Affected users should upgrade to Mbed TLS 3.6.5 or TF-PSA-Crypto 1.0.0 or above.
Additionally, applications using mbedtls_cipher_crypt() or mbedtls_cipher_finish() with a CBC or EBC mode with padding should review their error handling, and should consider switching to the new function mbedtls_cipher_finish_padded() which simplifies the handling of invalid-padding conditions.
Applications doing decryption with PSA_ALG_CBC_PKCS7 should handle errors carefully if local timing attacks are a concern. (This also applies to asymmetric decryption with PSA_ALG_RSA_PKCS1V15_CRYPT.)
- Record
JLSEC-2025-233- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Updated
- 2026-11-02
OSVUBUNTU-CVE-2025-59438
5.3
Mbed TLS through 3.6.4 has an Observable Timing Discrepancy.
- Record
UBUNTU-CVE-2025-59438- CVSS 3.1
- 5.3 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N - Updated
- 2026-11-02
OSVopenSUSE-SU-2025:15662-1 No score
micropython-1.26.0-2.1 on GA media
These are all security issues fixed in the micropython-1.26.0-2.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2025:15662-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2025:15747-1 No score
libeverest-3.6.5-1.1 on GA media
These are all security issues fixed in the libeverest-3.6.5-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2025:15747-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2025:20035-1 No score
Security update for micropython
This update for micropython fixes the following issues:
Changes in micropython:
- Build with mbedtls-3.6.5 instead of bundled 3.6.2 to fix CVE-2025-59438
Version 1.26.0:
- Added machine.I2CTarget for creating I2C target devices on multiple ports.
- New MCU support: STM32N6xx (800 MHz, ML accel) & ESP32-C2 (WiFi + BLE).
- Major float accuracy boost (~28% → ~98%), constant folding in compiler.
- Optimized native/Viper emitters; reduced heap use for slices.
- Time functions standardized (1970–2099); new boards across ESP32, SAMD, STM32, Zephyr.
- ESP32: ESP-IDF 5.4.2, flash auto-detect, PCNT class, LAN8670 PHY.
- RP2: compressed errors, better lightsleep, hard IRQ timers.
- Zephyr v4.0.0: PWM, SoftI2C/SPI, BLE runtime services, boot.py/main.py support.
- mpremote adds fs tree, improved df, portable config paths.
- Updated lwIP, LittleFS, libhydrogen, stm32lib; expanded hardware/CI tests.
- Record
openSUSE-SU-2025:20035-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:10083-1 No score
vlang-0.5-2.1 on GA media
These are all security issues fixed in the vlang-0.5-2.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:10083-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:10378-1 No score
ovmf-202602-5.1 on GA media
These are all security issues fixed in the ovmf-202602-5.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:10378-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11790-1 No score
libmbedcrypto7-2.28.10-5.1 on GA media
These are all security issues fixed in the libmbedcrypto7-2.28.10-5.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11790-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:20499-1 No score
Security update for ovmf
This update for ovmf fixes the following issue:
- CVE-2025-59438: mbedtls: padding oracle attack possible through timing of cipher error reporting (bsc#1252441).
- Record
openSUSE-SU-2026:20499-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21144-1 No score
Security update for mbedtls
This update for mbedtls fixes the following issues:
Changes in mbedtls:
- Update to 3.6.6 (LTS maintenance update from 3.6.1); security fixes
accumulated across the 3.6.2-3.6.6 releases:
- CVE-2024-49195 (boo#1231708): buffer underrun in pkwrite when writing an opaque key pair
- CVE-2025-27809 (boo#1240051): certificate verification accepted arbitrary hostnames
- CVE-2025-27810 (boo#1240052): possible authentication bypass on failed memory allocation / hardware errors
- CVE-2025-47917 (boo#1246783): misleading memory management in mbedtls_x509_string_to_names()
- CVE-2025-48965 (boo#1246784): NULL pointer dereference after mbedtls_asn1_store_named_data()
- CVE-2025-49087 (boo#1246973): timing side channel in PKCS#7 padding removal
- CVE-2025-49600 (boo#1245808): unchecked return values in LMS verification allow signature bypass via fault injection
- CVE-2025-49601 (boo#1245809): out-of-bounds read in mbedtls_lms_import_public_key()
- CVE-2025-52496 (boo#1245810): race in AES-NI support detection can lead to AES key extraction or GCM forgery
- CVE-2025-52497 (boo#1245811): one-byte heap underflow when parsing PEM-encrypted material
- CVE-2025-54764 (boo#1252341): timing attacks in RSA operations
- CVE-2025-59438 (boo#1252454): padding-oracle attack via timing of cipher error reporting
- CVE-2026-25833: PSA RNG state duplicated across fork()
- CVE-2026-25834: TLS 1.3 HelloRetryRequest man-in-the-middle session-resumption downgrade
- CVE-2026-25835: RNG state duplicated when application/VM state is cloned
- Record
openSUSE-SU-2026:21144-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21864-1 No score
Security update for mbedtls-2
This update for mbedtls-2 fixes the following issues:
Changes in mbedtls-2:
- CVE-2025-52496: race condition in AESNI support detection, AES key disclosure / GCM forgery in multithreaded programs (boo#1245810)
- CVE-2025-59438: padding oracle through timing of cipher error reporting (boo#1252454)
- Record
openSUSE-SU-2026:21864-1- Updated
- 2026-11-02
OSVROOT-OS-DEBIAN-12-CVE-2025-59438 No score
CVE-2025-59438 in mbedtls - Patched by Root
Root has patched CVE-2025-59438 in the mbedtls package for Root:Debian:12. Multiple fixed versions available.
- Record
ROOT-OS-DEBIAN-12-CVE-2025-59438- Updated
- 2026-11-02
OSVSUSE-SU-2026:1413-1 No score
Security update for ovmf
This update for ovmf fixes the following issue:
- CVE-2025-59438: mbedtls: padding oracle attack possible through timing of cipher error reporting (bsc#1252441).
- Record
SUSE-SU-2026:1413-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:20769-1 No score
Security update for ovmf
This update for ovmf fixes the following issue:
- CVE-2025-59438: mbedtls: padding oracle attack possible through timing of cipher error reporting (bsc#1252441).
- Record
SUSE-SU-2026:20769-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:21018-1 No score
Security update for ovmf
This update for ovmf fixes the following issue:
- CVE-2025-59438: mbedtls: padding oracle attack possible through timing of cipher error reporting (bsc#1252441).
- Record
SUSE-SU-2026:21018-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:21161-1 No score
Security update for ovmf
This update for ovmf fixes the following issue:
- CVE-2025-59438: mbedtls: padding oracle attack possible through timing of cipher error reporting (bsc#1252441).
- Record
SUSE-SU-2026:21161-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
mbedtlsAlpine:v3.20 |
before 3.6.5-r0 | 3.6.5-r0 |
mbedtlsAlpine:v3.21 |
before 3.6.5-r0 | 3.6.5-r0 |
mbedtlsAlpine:v3.22 |
before 3.6.5-r0 | 3.6.5-r0 |
mbedtlsAlpine:v3.23 |
before 3.6.5-r0 | 3.6.5-r0 |
mbedtlsAlpine:v3.24 |
before 3.6.5-r0 | 3.6.5-r0 |
mbedtls3Alpine:v3.24 |
before 3.6.5-r0 | 3.6.5-r0 |
mbedtlsDebian:12 |
All versions, plus listed versions 2.28.3-12.28.4-12.28.5-12.28.6-12.28.7-1 Show 18 moreShow less2.28.7-1.12.28.7-1.1~exp12.28.8-13.6.0-13.6.0-23.6.0-33.6.2-13.6.2-23.6.2-33.6.3-13.6.4-13.6.4-23.6.5-0.13.6.5-0.1~deb13u13.6.6-0.13.6.6-0.1~deb13u13.6.7-23.6.7-3 |
None known |
mbedtlsDebian:13 |
before 3.6.5-0.1~deb13u1, plus listed versions 3.6.4-2 |
3.6.5-0.1~deb13u1 |
mbedtlsDebian:14 |
before 3.6.5-0.1, plus listed versions 3.6.4-23.6.5-0.1~deb13u1 |
3.6.5-0.1 |
MbedTLS_jllJulia |
All versions | None known |
Show 23 moreShow less
| Package | Affected | Fixed |
|---|---|---|
mbedtlsRoot:Debian:12 |
before 2.28.3-1.root.io.14 | 2.28.3-1.root.io.142.28.3-1.root.io.152.28.3-1.root.io.162.28.3-1.root.io.132.28.3-1.aikido.17 |
rootio-mbedtlsRoot:Debian:12 |
before 2.28.3-1.root.io.14 | 2.28.3-1.root.io.142.28.3-1.root.io.152.28.3-1.root.io.162.28.3-1.root.io.132.28.3-1.aikido.17 |
ovmfSUSE:Linux Enterprise Module for Package Hub 15 SP7 |
before 202408-150700.3.15.1 | 202408-150700.3.15.1 |
ovmfSUSE:Linux Enterprise Module for Server Applications 15 SP7 |
before 202408-150700.3.15.1 | 202408-150700.3.15.1 |
ovmfSUSE:Linux Micro 6.1 |
before 202402-slfo.1.1_2.1 | 202402-slfo.1.1_2.1 |
ovmfSUSE:Linux Micro 6.2 |
before 202502-160000.4.1 | 202502-160000.4.1 |
ovmfSUSE:Linux Enterprise Server 16.0 |
before 202502-160000.4.1 | 202502-160000.4.1 |
ovmfSUSE:Linux Enterprise Server for SAP applications 16.0 |
before 202502-160000.4.1 | 202502-160000.4.1 |
mbedtlsUbuntu:16.04:LTS |
All versions, plus listed versions 2.1.2-12.2.0-12.2.1-12.2.1-22.2.1-2ubuntu0.12.2.1-2ubuntu0.22.2.1-2ubuntu0.3 |
None known |
mbedtlsUbuntu:Pro:18.04:LTS |
All versions, plus listed versions 2.5.1-1ubuntu12.6.0-12.7.0-22.8.0-12.8.0-1ubuntu0.1~esm1 |
None known |
mbedtlsUbuntu:Pro:20.04:LTS |
All versions, plus listed versions 2.16.2-12.16.3-12.16.4-1ubuntu22.16.4-1ubuntu2+esm1 |
None known |
mbedtlsUbuntu:22.04:LTS |
All versions, plus listed versions 2.16.9-0.1ubuntu12.16.11-0.1ubuntu12.16.11-0.32.28.0-12.28.0-1build1 |
None known |
mbedtlsUbuntu:24.04:LTS |
All versions, plus listed versions 2.28.3-12.28.6-1ubuntu12.28.7-1ubuntu12.28.7-1.1ubuntu12.28.8-1 |
None known |
mbedtlsUbuntu:25.10 |
All versions, plus listed versions 3.6.2-3ubuntu1 |
None known |
micropythonopenSUSE:Tumbleweed |
before 1.26.0-2.1 | 1.26.0-2.1 |
mbedtlsopenSUSE:Tumbleweed From an advisory covering 2 CVEs |
before 3.6.5-1.1 | 3.6.5-1.1 |
micropythonopenSUSE:Leap 16.0 |
before 1.26.0-bp160.1.1 | 1.26.0-bp160.1.1 |
vlangopenSUSE:Tumbleweed |
before 0.5-2.1 | 0.5-2.1 |
ovmfopenSUSE:Tumbleweed |
before 202602-5.1 | 202602-5.1 |
mbedtls-2openSUSE:Tumbleweed From an advisory covering 2 CVEs |
before 2.28.10-5.1 | 2.28.10-5.1 |
ovmfopenSUSE:Leap 16.0 |
before 202502-160000.4.1 | 202502-160000.4.1 |
mbedtlsopenSUSE:Leap 16.0 From an advisory covering 15 CVEs |
before 3.6.6-bp160.1.1 | 3.6.6-bp160.1.1 |
mbedtls-2openSUSE:Leap 16.0 From an advisory covering 2 CVEs |
before 2.28.10-bp160.2.1 | 2.28.10-bp160.2.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | OSV | |
| affected | ||
| facts | NVD | |
| affected | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2025-59438 is a medium vulnerability (CVSS 5.3) in Arm Mbed Tls, published October 21, 2025. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.26%, the 18th percentile. Fixed in mbedtls 3.6.5-r0.
References
mbed-tls.readthedocs.io/en/latest/tech-updates/security-advisories
mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-10-invalid-padding-error
nvd.nist.gov/vuln/detail/CVE-2025-59438
github.com/advisories/GHSA-mqc9-9p37-h763
security.alpinelinux.org/vuln/CVE-2025-59438
github.com/CVEProject/cvelistV5/tree/main/cves/2025/59xxx/CVE-2025-59438.json
Show 35 moreShow less
security-tracker.debian.org/tracker/CVE-2025-59438
suse.com/support/update/announcement/2026/suse-su-20261413-1
bugzilla.suse.com/1252441
suse.com/security/cve/CVE-2025-59438
suse.com/support/update/announcement/2026/suse-su-202620769-1
suse.com/support/update/announcement/2026/suse-su-202621018-1
suse.com/support/update/announcement/2026/suse-su-202621161-1
ubuntu.com/security/CVE-2025-59438
cve.org/CVERecord?id=CVE-2025-59438
suse.com/security/cve/CVE-2025-54764
suse.com/security/cve/CVE-2025-52496
bugzilla.suse.com/1231708
bugzilla.suse.com/1240051
bugzilla.suse.com/1240052
bugzilla.suse.com/1245808
bugzilla.suse.com/1245809
bugzilla.suse.com/1245810
bugzilla.suse.com/1245811
bugzilla.suse.com/1246783
bugzilla.suse.com/1246784
bugzilla.suse.com/1246973
bugzilla.suse.com/1252341
bugzilla.suse.com/1252454
suse.com/security/cve/CVE-2024-49195
suse.com/security/cve/CVE-2025-27809
suse.com/security/cve/CVE-2025-27810
suse.com/security/cve/CVE-2025-47917
suse.com/security/cve/CVE-2025-48965
suse.com/security/cve/CVE-2025-49087
suse.com/security/cve/CVE-2025-49600
suse.com/security/cve/CVE-2025-49601
suse.com/security/cve/CVE-2025-52497
suse.com/security/cve/CVE-2026-25833
suse.com/security/cve/CVE-2026-25834
suse.com/security/cve/CVE-2026-25835