CVE-2023-6937
Medium · 5.3CVSS
5.3
EPSS
0.5%
Published
Feb 15, 2024
CISA due date
—
Cloudanix analysis
A library used for secure network connections could accept certain handshake messages it should have rejected, but the issue is minor and does not let attackers steal keys or impersonate parties.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Data Exposure
- Component
- Library
- Class
- Cryptographic Weakness
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
wolfSSL clients prior to 5.6.6 fail to enforce that all messages within a single (D)TLS record use the same encryption keys, allowing an attacker-controlled server to place an unencrypted ServerHello followed by the remainder of the first server flight into one record that the client accepts even though TLS 1.3 requires encryption after ServerHello.
Why it matters to the business
Low-risk exposure limited to potential leakage of handshake metadata in edge-case TLS 1.3 scenarios; does not affect key negotiation or authentication and therefore carries minimal operational or compliance consequences for organizations using affected wolfSSL versions.
How an attack unfolds
An attacker positioned as a TLS server sends a single record containing both an unencrypted ServerHello and subsequent handshake messages that should have been encrypted; a vulnerable wolfSSL client accepts the record without verifying key boundaries, though the flaw cannot be leveraged to compromise session keys or authentication.
How to fix it
Upgrade wolfSSL to the version containing commit 66596ad9e1d7efa8479656872cf09c9c1870a02e (equivalent to release 5.6.6 or later) in all products and rebuild any statically linked binaries; verify the updated library is loaded at runtime.
How to confirm the fix worked
Confirm the running wolfSSL library reports version 5.6.6 or newer, or inspect the source/build for presence of commit 66596ad9e1d7efa8479656872cf09c9c1870a02e; perform a TLS 1.3 handshake test that attempts to send a mixed-key record and verify the client now rejects it.
Typical attack path
- Attacker establishes a network position able to serve TLS traffic to the target client
- Attacker constructs a TLS 1.3 ServerHello record that also contains the remainder of the first flight using the pre-ServerHello key
- Client accepts the mixed-key record and continues the handshake
- Attacker observes or influences subsequent handshake behavior without obtaining cryptographic material
How to detect it
Review TLS handshake logs or packet captures for ServerHello records that continue with additional handshake messages under the pre-ServerHello cipher; correlate with client version strings indicating wolfSSL < 5.6.6; no persistent artifacts are created on disk.
What your security team should do
- Prioritize patching any internet-facing or high-value clients that embed wolfSSL within the next maintenance window
- Inventory all products and dependencies that statically or dynamically link wolfSSL and schedule upgrades
- Add wolfSSL version checks to continuous-integration and container-scanning pipelines
- Monitor upstream wolfSSL release notes for any related follow-on fixes
The record
wolfSSL prior to 5.6.6 did not check that messages in one (D)TLS record do not span key boundaries. As a result, it was possible to combine (D)TLS messages using different keys into one (D)TLS record. The most extreme edge case is that, in (D)TLS 1.3, it was possible that an unencrypted (D)TLS 1.3 record from the server containing first a ServerHello message and then the rest of the first server flight would be accepted by a wolfSSL client. In (D)TLS 1.3 the handshake is encrypted after the ServerHello but a wolfSSL client would accept an unencrypted flight from the server. This does not compromise key negotiation and authentication so it is assigned a low severity rating.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | wolfssl | 0 | No fix |
| Debian:12 | wolfssl | 0 | No fix |
| Debian:13 | wolfssl | 0 | 5.6.6-1.2 |
| Ubuntu:16.04:LTS | wolfssl | 0 | No fix |
| Ubuntu:18.04:LTS | wolfssl | 0 | No fix |
| Ubuntu:20.04:LTS | wolfssl | 0 | No fix |
| Ubuntu:22.04:LTS | wolfssl | 0 | No fix |
| Ubuntu:24.04:LTS | wolfssl | 0 | 5.6.6-1.2 |
| Ubuntu:Pro:16.04:LTS | wolfssl | 0 | No fix |
| Ubuntu:Pro:18.04:LTS | wolfssl | 0 | No fix |
| Ubuntu:Pro:20.04:LTS | wolfssl | 0 | No fix |
Related vulnerabilities
- CVE-2024-2881 Fault Injection vulnerability in wc_ed25519_sign_msg function in… Also affects wolfssl
- CVE-2024-1545 Fault Injection vulnerability in RsaPrivateDecryption function in… Also affects wolfssl
- CVE-2024-1543 The side-channel protected T-Table implementation in wolfSSL up to version 5.6.5 protects… Also affects wolfssl
- CVE-2024-5814 A malicious TLS1.2 server can force a TLS1.3 client with downgrade capability to use a… Also affects wolfssl
- CVE-2024-1544 Generating the ECDSA nonce k samples a random number r and then truncates this randomness… Also affects wolfssl
- CVE-2024-0901 Remotely executed SEGV and out of bounds read allows malicious packet sender to crash or… Also affects wolfssl
- CVE-2023-6936 In wolfSSL prior to 5.6.6, if callback functions are enabled (via the WOLFSSL_CALLBACKS… Also affects wolfssl
- CVE-2017-13099 wolfSSL prior to version 3.12.2 provides a weak Bleichenbacher oracle when any TLS cipher… Also affects wolfssl