CVE-2020-36423

7.5 HIGH

📋 TL;DR

This vulnerability in Arm Mbed TLS allows a remote attacker to recover plaintext from encrypted communications due to an incomplete Lucky 13 countermeasure when hardware acceleration is used. It affects systems using Mbed TLS versions before 2.23.0 with hardware acceleration enabled. The vulnerability enables decryption of sensitive data transmitted over TLS connections.

💻 Affected Systems

Products:
  • Arm Mbed TLS
Versions: All versions before 2.23.0
Operating Systems: All operating systems using affected Mbed TLS versions
Default Config Vulnerable: ⚠️ Yes
Notes: Requires hardware acceleration to be enabled and used. Systems without hardware acceleration or with it disabled are not vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of encrypted communications, allowing attackers to decrypt sensitive data including credentials, session tokens, and confidential information transmitted over TLS.

🟠

Likely Case

Partial plaintext recovery from encrypted sessions, potentially exposing sensitive application data or authentication credentials.

🟢

If Mitigated

Minimal impact if proper patching is applied and hardware acceleration is disabled or properly configured.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: MEDIUM

Exploitation requires network access to TLS endpoints and ability to observe encrypted traffic. The Lucky 13 attack is well-documented and has been weaponized in other contexts.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.23.0 or later

Vendor Advisory: https://github.com/ARMmbed/mbedtls/releases/tag/v2.23.0

Restart Required: Yes

Instructions:

1. Update Mbed TLS to version 2.23.0 or later. 2. Recompile applications using Mbed TLS. 3. Restart affected services. 4. Verify the update was successful.

🔧 Temporary Workarounds

Disable Hardware Acceleration

all

Disable hardware acceleration in Mbed TLS configuration to avoid the vulnerable code path

Configure MBEDTLS_HAVE_TIME and MBEDTLS_HAVE_TIME_DATE to 0 in mbedtls_config.h
Set MBEDTLS_TIMING_C to 0 if not needed

🧯 If You Can't Patch

  • Implement network segmentation to limit exposure of vulnerable systems
  • Use additional encryption layers (e.g., VPN, application-layer encryption) for sensitive data

🔍 How to Verify

Check if Vulnerable:

Check Mbed TLS version: mbedtls_version_get_string() or check library version in system packages

Check Version:

ldd <application> | grep mbedtls or check package manager (apt list --installed | grep mbedtls)

Verify Fix Applied:

Verify Mbed TLS version is 2.23.0 or later and hardware acceleration configuration is reviewed

📡 Detection & Monitoring

Log Indicators:

  • Unusual decryption errors
  • TLS handshake anomalies
  • Increased failed connection attempts

Network Indicators:

  • Unusual traffic patterns to TLS endpoints
  • Multiple connection attempts with timing variations

SIEM Query:

source="*tls*" AND (error OR failed OR anomaly) AND (handshake OR decrypt)

🔗 References

📤 Share & Export