CVE-2026-1677 Overview
CVE-2026-1677 affects the Zephyr real-time operating system (RTOS) TLS socket implementation. Sockets created with IPPROTO_TLS_1_3 can still negotiate a TLS 1.2 connection when both TLS versions are enabled in Kconfig. The socket-level protocol selection is not propagated to mbedTLS through APIs such as mbedtls_ssl_conf_min_tls_version. The ClientHello advertises both versions, allowing the peer to establish a TLS 1.2 session. Applications that assume IPPROTO_TLS_1_3 enforces TLS 1.3 remain exposed to TLS 1.2-specific weaknesses. The flaw is tracked as [CWE-757] Selection of Less-Secure Algorithm During Negotiation.
Critical Impact
Applications relying on IPPROTO_TLS_1_3 for TLS 1.3 enforcement may silently downgrade to TLS 1.2, exposing connections to legacy protocol weaknesses.
Affected Products
- Zephyr RTOS TLS socket subsystem with both TLS 1.2 and TLS 1.3 enabled in Kconfig
- Applications using the IPPROTO_TLS_1_3 socket protocol selector
- mbedTLS-backed Zephyr network stack configurations
Discovery Timeline
- 2026-05-11 - CVE-2026-1677 published to NVD
- 2026-05-13 - Last updated in NVD database
Technical Details for CVE-2026-1677
Vulnerability Analysis
The vulnerability stems from inconsistent state between the Zephyr socket layer and the underlying mbedTLS configuration. When an application creates a socket using the IPPROTO_TLS_1_3 protocol identifier, the socket layer records this preference but does not translate it into a corresponding mbedTLS minimum version constraint. The mbedTLS context remains configured with the Kconfig-determined version range, which includes TLS 1.2 when CONFIG_MBEDTLS_TLS_VERSION_1_2 is enabled alongside TLS 1.3.
During the handshake, the client emits a ClientHello advertising both TLS 1.2 and TLS 1.3 in the supported_versions extension. A peer that selects TLS 1.2 completes the handshake successfully, and the application receives a working session without any indication that the requested protocol was not enforced. This belongs to the class of protocol downgrade and insecure negotiation defects.
Root Cause
The root cause is missing propagation logic between the Zephyr socket option layer and mbedTLS. The IPPROTO_TLS_1_3 selector is treated as a socket creation parameter rather than as a binding constraint on the TLS configuration. No call to mbedtls_ssl_conf_min_tls_version or equivalent is issued before the handshake begins.
Attack Vector
An attacker positioned as a man-in-the-middle, or a malicious server, can force TLS 1.2 negotiation by selecting that version from the advertised list. The attacker then leverages TLS 1.2-specific weaknesses such as weaker cipher suites, RSA key exchange, or legacy signature algorithms. No authentication or user interaction is required, and the attack is remote over the network.
The vulnerability is described in prose only because no verified proof-of-concept code is available. Refer to the GitHub Security Advisory GHSA-23r2-m5wx-4rvq for upstream technical details.
Detection Methods for CVE-2026-1677
Indicators of Compromise
- TLS sessions established at version 1.2 originating from Zephyr-based devices that were configured to use IPPROTO_TLS_1_3.
- ClientHello messages from embedded devices advertising both TLS 1.2 and TLS 1.3 in the supported_versions extension when only TLS 1.3 was expected.
- Negotiated cipher suites that are not part of the TLS 1.3 cipher suite set (for example, suites containing _CBC_ or RSA key exchange).
Detection Strategies
- Inspect network traffic at egress points and flag TLS 1.2 handshakes originating from device fleets expected to use TLS 1.3 only.
- Audit Zephyr firmware Kconfig settings to identify builds where both CONFIG_MBEDTLS_TLS_VERSION_1_2 and CONFIG_MBEDTLS_TLS_VERSION_1_3 are enabled.
- Enable mbedTLS debug logging during integration testing to record the negotiated protocol version against the requested socket protocol.
Monitoring Recommendations
- Forward TLS metadata from network sensors to a centralized analytics platform and alert on protocol version mismatches per device class.
- Track cipher suite distributions over time and investigate any rise in TLS 1.2 usage from IoT segments.
- Correlate device firmware versions with observed TLS protocol versions to identify unpatched units.
How to Mitigate CVE-2026-1677
Immediate Actions Required
- Update Zephyr to a release that includes the fix referenced in the GitHub Security Advisory GHSA-23r2-m5wx-4rvq.
- Inventory all firmware images that use IPPROTO_TLS_1_3 and confirm the negotiated TLS version in lab testing.
- Disable TLS 1.2 support in Kconfig where TLS 1.3 is the only required protocol.
Patch Information
The Zephyr Project has published a security advisory for this issue. Consult GitHub Security Advisory GHSA-23r2-m5wx-4rvq for the list of fixed versions and patch commits. Rebuild affected firmware against the patched Zephyr tree and redeploy to all devices.
Workarounds
- Restrict the TLS_CIPHERSUITE_LIST socket option to TLS 1.3-only cipher suites so that TLS 1.2 handshakes cannot complete.
- Disable CONFIG_MBEDTLS_TLS_VERSION_1_2 in Kconfig and rebuild when applications do not require TLS 1.2 interoperability.
- Enforce TLS 1.3 at the peer (server) side by configuring the server to reject any handshake below TLS 1.3.
# Configuration example: enforce TLS 1.3-only build in Zephyr prj.conf
CONFIG_MBEDTLS=y
CONFIG_MBEDTLS_TLS_VERSION_1_3=y
# CONFIG_MBEDTLS_TLS_VERSION_1_2 is not set
CONFIG_NET_SOCKETS_SOCKOPT_TLS=y
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


