CVE-2026-54887

Source
https://cve.org/CVERecord?id=CVE-2026-54887
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-54887.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-54887
Aliases
Downstream
Related
Published
2026-07-02T16:06:04.156Z
Modified
2026-08-12T10:57:02.171123396Z
Severity
  • 6.3 (Medium) CVSS_V4 - CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N CVSS Calculator
Summary
DTLS server cookie bypass during startup window due to empty initial cookie secret
Details

Use of Default Cryptographic Key vulnerability in Erlang/OTP ssl (DTLS server) allows predictable DTLS cookie computation during the startup window, enabling source address verification bypass.

On DTLS server startup, dtlsserverconnection:initialhello/3 initializes previouscookiesecret to the empty binary (<<>>) instead of a random value. Because HMAC with an empty key is deterministic, anyone who observes the plaintext ClientHello can compute dtlshandshake:cookie(<<>>, IP, Port, Hello) and forge a valid DTLS cookie before the first rotation of the cookie secret. The DTLS cookie (RFC 6347 §4.2.1) is a denial-of-service mitigation that prevents spoofed source IPs from forcing the server to allocate state and perform expensive cryptographic operations; it is not an authentication mechanism. During the window from server startup until the first secret rotation (0 to 15 seconds), an attacker who can observe the plaintext ClientHello can bypass the source address verification, enabling DTLS handshake amplification with spoofed source addresses.

This vulnerability is associated with program file lib/ssl/src/dtlsserverconnection.erl and program routine dtlsserverconnection:initial_hello/3.

This issue affects OTP from OTP 20.0 before OTP 29.0.3, OTP 28.5.0.3 and OTP 27.3.4.14, corresponding to ssl from 8.2 before 11.7.3, 11.6.0.3 and 11.2.12.10.

Database specific
{
    "cwe_ids": [
        "CWE-1394"
    ],
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54887.json",
    "cna_assigner": "EEF",
    "unresolved_ranges": [
        {
            "extracted_events": [
                {
                    "introduced": "8.2"
                },
                {
                    "fixed": "*"
                },
                {
                    "introduced": "20.0"
                },
                {
                    "fixed": "*"
                },
                {
                    "introduced": "e594aad2f87aab39e99fccf9e021bc94e0bbf7d4"
                },
                {
                    "fixed": "888e3bcd72d5406016b9e0de741026bc2a6f114d"
                }
            ],
            "source": "AFFECTED_FIELD"
        }
    ]
}
References

Affected packages

Git / github.com/erlang/otp

Affected ranges

Type
GIT
Repo
https://github.com/erlang/otp
Events
Database specific
Show details
{
    "cpe": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
    "source": [
        "CPE_RANGE",
        "REFERENCES"
    ],
    "extracted_events": [
        {
            "introduced": "20.0"
        },
        {
            "fixed": "27.3.4.14"
        },
        {
            "introduced": "28.0"
        },
        {
            "fixed": "28.5.0.3"
        },
        {
            "introduced": "29.0"
        },
        {
            "fixed": "29.0.3"
        }
    ]
}

Affected versions

OTP-20.*
OTP-20.0
OTP-21.*
OTP-21.0
OTP-21.0-rc1
OTP-21.0-rc2
OTP-22.*
OTP-22.0
OTP-22.0-rc1
OTP-22.0-rc2
OTP-22.0-rc3
OTP-23.*
OTP-23.0
OTP-23.0-rc1
OTP-23.0-rc2
OTP-23.0-rc3
OTP-24.*
OTP-24.0
OTP-24.0-rc1
OTP-24.0-rc2
OTP-24.0-rc3
OTP-25.*
OTP-25.0
OTP-25.0-rc1
OTP-25.0-rc2
OTP-25.0-rc3
OTP-26.*
OTP-26.0
OTP-26.0-rc1
OTP-26.0-rc2
OTP-26.0-rc3
OTP-27.*
OTP-27.0
OTP-27.0-rc1
OTP-27.0-rc2
OTP-27.0-rc3
OTP-27.1
OTP-27.2
OTP-27.3
OTP-27.3.1
OTP-27.3.2
OTP-27.3.3
OTP-27.3.4
OTP-27.3.4.1
OTP-27.3.4.10
OTP-27.3.4.11
OTP-27.3.4.12
OTP-27.3.4.13
OTP-27.3.4.2
OTP-27.3.4.3
OTP-27.3.4.4
OTP-27.3.4.5
OTP-27.3.4.6
OTP-27.3.4.7
OTP-27.3.4.8
OTP-27.3.4.9
OTP-28.*
OTP-28.0
OTP-28.1
OTP-28.4
OTP-28.5
OTP-28.5.0.1
OTP-28.5.0.2
OTP-29.*
OTP-29.0
OTP-29.0.1
OTP-29.0.2
Other
patch-base-27
patch-base-28

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-54887.json"