CVE-2020-36426
📋 TL;DR
This vulnerability in Arm Mbed TLS allows attackers to read one byte beyond the allocated buffer when parsing Certificate Revocation Lists (CRLs) in DER format. This could potentially leak sensitive memory contents or cause application crashes. Any system using affected Mbed TLS versions for TLS/SSL operations is vulnerable.
💻 Affected Systems
- Arm Mbed TLS
- Products embedding Mbed TLS library
📦 What is this software?
⚠️ Risk & Real-World Impact
Worst Case
Information disclosure of sensitive memory contents, potential remote code execution through memory corruption, or denial of service causing application crashes.
Likely Case
Application crash or denial of service due to invalid memory access, potentially leaking limited memory contents.
If Mitigated
Minimal impact with proper memory protections (ASLR, DEP) and crash handling; potential information disclosure limited to one byte.
🎯 Exploit Status
Exploitation requires attacker to supply a malicious CRL; buffer over-read of only one byte limits exploitation options.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 2.24.0 or later (also fixed in 2.16.8 and 2.7.17)
Vendor Advisory: https://github.com/ARMmbed/mbedtls/releases/tag/v2.24.0
Restart Required: Yes
Instructions:
1. Identify Mbed TLS version in use. 2. Upgrade to version 2.24.0 or later. 3. Recompile applications using the library. 4. Restart affected services.
🔧 Temporary Workarounds
Disable CRL verification
allTemporarily disable Certificate Revocation List verification if not required
# Configure application to not use CRL verification
Use PEM format CRLs
linuxConvert CRLs to PEM format instead of DER format
openssl crl -inform DER -in crl.der -outform PEM -out crl.pem
🧯 If You Can't Patch
- Implement network segmentation to limit exposure to CRL parsing
- Deploy memory protection mechanisms (ASLR, DEP) to reduce exploitation risk
🔍 How to Verify
Check if Vulnerable:
Check Mbed TLS version with: ldd on binaries or check library version in application
Check Version:
strings /path/to/libmbedtls.so | grep 'mbed TLS' || mbedtls_version
Verify Fix Applied:
Verify Mbed TLS version is 2.24.0 or later, or patched versions 2.16.8/2.7.17
📡 Detection & Monitoring
Log Indicators:
- Application crashes related to mbedtls_x509_crl_parse
- Memory access violation errors
- Unexpected termination of TLS services
Network Indicators:
- Unusual CRL requests or malformed CRL data in TLS handshakes
SIEM Query:
source="application.logs" AND ("mbedtls" OR "TLS error") AND ("crash" OR "segfault" OR "memory violation")
🔗 References
- https://bugs.gentoo.org/740108
- https://github.com/ARMmbed/mbedtls/releases/tag/v2.16.8
- https://github.com/ARMmbed/mbedtls/releases/tag/v2.24.0
- https://github.com/ARMmbed/mbedtls/releases/tag/v2.7.17
- https://lists.debian.org/debian-lts-announce/2022/12/msg00036.html
- https://bugs.gentoo.org/740108
- https://github.com/ARMmbed/mbedtls/releases/tag/v2.16.8
- https://github.com/ARMmbed/mbedtls/releases/tag/v2.24.0
- https://github.com/ARMmbed/mbedtls/releases/tag/v2.7.17
- https://lists.debian.org/debian-lts-announce/2022/12/msg00036.html