CVE-2020-16150
Official description Straight from the sourceThe vendor's or NVD's own wording, published unedited. Authoritative, but often terse — it says what broke, rarely what to do.
NVD · uneditedA Lucky 13 timing side channel in mbedtls_ssl_decrypt_buf in library/ssl_msg.c in Trusted Firmware Mbed TLS through 2.23.0 allows an attacker to recover secret key information. This affects CBC mode because of a computed time difference based on a padding length.
Technical summary Written by usOur analysis, written from the advisory, the CVSS vector and the affected-version data. It adds context the advisory leaves out, and never invents facts that are not in the source.
dbcve analysis · moderate confidenceA Lucky 13 timing side-channel vulnerability in mbedtls_ssl_decrypt_buf in library/ssl_msg.c allows attackers to recover secret key information through timing differences based on CBC padding length. The vulnerability affects Mbed TLS versions through 2.23.0.
Verify against the referenced sources before acting — the references below are authoritative for this CVE, this summary is not.
Affected products & versions What the vendor confirmedThe version ranges the vendor confirmed as vulnerable. If your version sits inside a range here, treat yourself as exposed until you have upgraded.
NVD · CPE data= 31= 32= 33= 10.0< 2.7.17>= 2.8.0, < 2.16.8>= 2.17.0, < 2.24.0CVSS breakdown How the score is builtThe industry scoring standard. It rates how the flaw is reached, what it takes to exploit, and what an attacker gains — the score is derived from those, not the other way round.
From the vector- Attack vector
- Local
- Complexity
- Low
- Privileges
- Low
- User interaction
- None
- Scope
- Unchanged
- Confidentiality
- High
- Integrity
- None
- Availability
- None
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Am I affected? How to checkSteps we derive from the advisory and the affected-version data, so you can decide whether this CVE reaches your setup. They are a guide, not a scan — your own configuration is the authority.
dbcve checksWork through these to decide whether this CVE applies to you.
-
Identify Mbed TLS library versionLocate and inspect the Mbed TLS library files on the system. On Debian/Ubuntu, check /usr/lib/x86_64-linux-gnu/libmbed* or run dpkg -l | grep mbedtls. On Fedora/RHEL, check /usr/lib64/libmbed* or run rpm -qa | grep mbedtls. Look for version strings in the library binary or associated package metadata.Affected if The installed version is 2.23.0 or earlier, or falls within the ranges < 2.7.17, >= 2.8.0 and < 2.16.8, or >= 2.17.0 and < 2.24.0.
-
Confirm CBC cipher suite supportReview the Mbed TLS configuration file (mbedtls_config.h) or the compiled library configuration. Look for enabled CBC-mode cipher suites (such as TLS_RSA_WITH_AES_128_CBC_SHA or similar AES-CBC suites) in the SSL/TLS configuration.Affected if CBC-mode cipher suites are enabled and available for use in SSL/TLS connections.
-
Verify vulnerable code path existsInspect the library/ssl_msg.c source file or the compiled library binary for the mbedtls_ssl_decrypt_buf function. Check whether the function contains the timing-sensitive CBC padding validation logic that compares padding length without constant-time guarantees.Affected if The mbedtls_ssl_decrypt_buf function is present and contains the non-constant-time CBC padding length handling code.
-
Check SSL/TLS service configurationIf the system runs an SSL/TLS service using Mbed TLS (such as a web server or VPN daemon), examine the service configuration to determine which cipher suites are advertised or enabled. Identify if CBC-based cipher suites are permitted.Affected if The SSL/TLS service is configured to allow CBC-mode cipher suites for client or server connections.
A system is affected if it runs a version of Mbed TLS within the vulnerable version ranges AND has CBC-mode cipher suites enabled in the library or SSL/TLS service configuration.
Generated from the published advisory. Verify against your own configuration.
Remediation Closing itWhat it takes to close this. Where a vendor fix exists we point at it; where none exists we say so plainly, and can build one. Effort estimates are scoped from the advisory, not from your codebase.
From vendor data2.7.172.16.82.24.0
Upgrade to Mbed TLS version 2.23.1 or later which contains the patch for the timing side channel, or implement constant-time decryption operations in the CBC mode handling.
- Consultation6.0 h
- Implementation12.0 h
- Testing10.0 h
- Review / QA6.0 h
An estimate, not a bill — we confirm scope with you before any work starts. Need it this week? Rush from $9,504.
Scan for this in your stack
Free · runs locallyCheck whether your project pulls in CVE-2020-16150 — or any other known-vulnerable package — straight from your lock files. Free and open source; it runs locally and uploads nothing.
References Go to the primary sourcePrimary sources — vendor advisories, patches and trackers. Where our summary and a reference disagree, the reference wins.
Primary sourcesPractitioner notes
ContributedPeer-ranked notes from engineers who’ve handled CVE-2020-16150 in production — separate from our analysis above.
The advisory tells you what broke. It rarely tells you what actually worked. If you’ve dealt with this one, that detail is what the next engineer is searching for.
- The version that genuinely resolved it — not the one the vendor claimed
- A config change or rule that shut the vector down
- A gotcha in the upgrade path that cost you an afternoon
No notes yet
Be the first to add a field note for this CVE — a mitigation you’ve verified, a version caveat, or a link to a working fix. Sign in above to contribute.
A place for practitioners to share what actually worked: a mitigation you’ve tested, a configuration change, a version- or environment-specific caveat, or a link to a verified patch. The most useful notes rise to the top as peers upvote them, so the signal stays high.
- Verified mitigations, workarounds, and config changes
- Version or environment caveats, and links to real fixes
- No weaponised exploit code, or anything meant to cause harm
- No spam, self-promotion, credentials, or personal data