CVE-2025-59438

5.3 MEDIUM

📋 TL;DR

Mbed TLS versions through 3.6.4 contain a timing side-channel vulnerability in RSA decryption with PKCS#1 v1.5 padding. This allows attackers to potentially extract private keys by measuring decryption timing differences. Any system using vulnerable Mbed TLS for RSA operations is affected.

💻 Affected Systems

Products:
  • Mbed TLS
Versions: All versions through 3.6.4
Operating Systems: All platforms running Mbed TLS
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects RSA operations with PKCS#1 v1.5 padding. ECC and other algorithms are not affected.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of RSA private keys, enabling decryption of captured traffic, impersonation of servers, or signing malicious code.

🟠

Likely Case

Partial key recovery requiring significant computational resources and network access, potentially leading to targeted decryption of specific messages.

🟢

If Mitigated

Minimal impact with proper network segmentation, key rotation, and monitoring for unusual decryption patterns.

🌐 Internet-Facing: MEDIUM
🏢 Internal Only: LOW

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: HIGH

Exploitation requires precise timing measurements and multiple decryption attempts. Practical attacks are challenging but theoretically possible.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 3.6.5 and later

Vendor Advisory: https://mbed-tls.readthedocs.io/en/latest/security-advisories/mbedtls-security-advisory-2025-10-invalid-padding-error/

Restart Required: No

Instructions:

1. Update Mbed TLS to version 3.6.5 or later. 2. Recompile any applications using Mbed TLS. 3. Deploy updated binaries. 4. Consider rotating RSA keys as precaution.

🔧 Temporary Workarounds

Disable RSA PKCS#1 v1.5 Padding

all

Configure applications to use RSA-PSS or OAEP padding instead of PKCS#1 v1.5

Modify application configuration to use MBEDTLS_RSA_PKCS_V21 instead of MBEDTLS_RSA_PKCS_V15

🧯 If You Can't Patch

  • Implement network segmentation to limit access to vulnerable services
  • Monitor for unusual RSA decryption patterns and failed decryption attempts

🔍 How to Verify

Check if Vulnerable:

Check Mbed TLS version with: mbedtls_version_check() or examine build configuration for RSA PKCS#1 v1.5 usage

Check Version:

grep MBEDTLS_VERSION_STRING mbedtls/include/mbedtls/version.h

Verify Fix Applied:

Verify version is 3.6.5 or later and confirm RSA operations use constant-time implementations

📡 Detection & Monitoring

Log Indicators:

  • Multiple failed RSA decryption attempts
  • Unusual timing patterns in decryption operations

Network Indicators:

  • Repeated connection attempts to RSA-enabled services with malformed padding

SIEM Query:

source="*mbedtls*" AND (event="decryption_failed" OR event="padding_error") | stats count by src_ip

🔗 References

📤 Share & Export