{"affected": [{"affectedData": [{"cpes": ["cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"], "defaultStatus": "unaffected", "modules": ["dtls_server_connection"], "packageName": "otp", "packageURL": "pkg:software-id/erlang.org/otp", "product": "OTP", "programFiles": ["lib/ssl/src/dtls_server_connection.erl"], "programRoutines": [{"name": "dtls_server_connection:initial_hello/3"}], "vendor": "Erlang", "versions": [{"changes": [{"at": "27.3.4.14", "status": "unaffected"}, {"at": "28.5.0.3", "status": "unaffected"}, {"at": "29.0.3", "status": "unaffected"}], "lessThan": "*", "status": "affected", "version": "20.0", "versionType": "otp"}]}, {"cpes": ["cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"], "defaultStatus": "unaffected", "modules": ["dtls_server_connection"], "packageName": "ssl", "packageURL": "pkg:otp/ssl?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp&vcs_url=git%2Bhttps:%2F%2Fgithub.com%2Ferlang%2Fotp.git", "product": "OTP", "programFiles": ["src/dtls_server_connection.erl"], "programRoutines": [{"name": "dtls_server_connection:initial_hello/3"}], "repo": "https://github.com/erlang/otp", "vendor": "Erlang", "versions": [{"changes": [{"at": "11.2.12.10", "status": "unaffected"}, {"at": "11.6.0.3", "status": "unaffected"}, {"at": "11.7.3", "status": "unaffected"}], "lessThan": "*", "status": "affected", "version": "8.2", "versionType": "otp"}]}, {"collectionURL": "https://github.com", "cpes": ["cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"], "defaultStatus": "unaffected", "modules": ["dtls_server_connection"], "packageName": "erlang/otp", "packageURL": "pkg:github/erlang/otp", "product": "OTP", "programFiles": ["lib/ssl/src/dtls_server_connection.erl"], "programRoutines": [{"name": "dtls_server_connection:initial_hello/3"}], "repo": "https://github.com/erlang/otp", "vendor": "Erlang", "versions": [{"lessThan": "888e3bcd72d5406016b9e0de741026bc2a6f114d", "status": "affected", "version": "e594aad2f87aab39e99fccf9e021bc94e0bbf7d4", "versionType": "git"}]}], "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"}], "configurations": [{"nodes": [{"cpeMatch": [{"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*", "matchCriteriaId": "9518F36D-1DBF-4D55-8FF3-FB98F16B46F8", "versionEndExcluding": "27.3.4.14", "versionStartIncluding": "20.0", "vulnerable": true}, {"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*", "matchCriteriaId": "230E3EE3-6A18-4848-8E3D-DB0FAA8EDFDC", "versionEndExcluding": "28.5.0.3", "versionStartIncluding": "28.0", "vulnerable": true}, {"criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*", "matchCriteriaId": "5D2D0C24-E302-48BF-9550-CCC7ABA24BED", "versionEndExcluding": "29.0.3", "versionStartIncluding": "29.0", "vulnerable": true}, {"criteria": "cpe:2.3:a:erlang:erlang\\/ssl:*:*:*:*:*:*:*:*", "matchCriteriaId": "8BC761D4-709A-4B2B-92E6-6B6E8B98E5B0", "versionEndExcluding": "11.2.12.10", "versionStartIncluding": "8.2", "vulnerable": true}, {"criteria": "cpe:2.3:a:erlang:erlang\\/ssl:*:*:*:*:*:*:*:*", "matchCriteriaId": "670E1622-32D4-45D0-A05E-9A3F76CC0F15", "versionEndExcluding": "11.6.0.3", "versionStartIncluding": "11.3", "vulnerable": true}, {"criteria": "cpe:2.3:a:erlang:erlang\\/ssl:*:*:*:*:*:*:*:*", "matchCriteriaId": "217D7CA5-49E9-4805-A2F6-32EC75F6EE91", "versionEndExcluding": "11.7.3", "versionStartIncluding": "11.7", "vulnerable": true}], "negate": false, "operator": "OR"}]}], "cveTags": [], "descriptions": [{"lang": "en", "value": "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.\n\nOn DTLS server startup, dtls_server_connection:initial_hello/3 initializes previous_cookie_secret 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 dtls_handshake:cookie(<<>>, IP, Port, Hello) and forge a valid DTLS cookie before the first rotation of the cookie secret. The DTLS cookie (RFC 6347 \u00a74.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.\n\nThis vulnerability is associated with program file lib/ssl/src/dtls_server_connection.erl and program routine dtls_server_connection:initial_hello/3.\n\nThis issue affects OTP from OTP\u00a020.0 before OTP\u00a027.3.4.14, OTP\u00a028.5.0.3, and OTP\u00a029.0.3, corresponding to ssl from 8.2 before 11.2.12.10, 11.6.0.3, and 11.7.3."}, {"lang": "es", "value": "La vulnerabilidad de uso de clave criptogr\u00e1fica predeterminada en Erlang/OTP ssl (servidor DTLS) permite el c\u00e1lculo predecible de la cookie DTLS durante la ventana de inicio, lo que permite el bypass de la verificaci\u00f3n de direcci\u00f3n de origen.\n\nAl inicio del servidor DTLS, dtls_server_connection:initial_hello/3 inicializa previous_cookie_secret al binario vac\u00edo (<<>>) en lugar de un valor aleatorio. Debido a que HMAC con una clave vac\u00eda es determinista, cualquiera que observe el ClientHello en texto plano puede calcular dtls_handshake:cookie(<<>>, IP, Puerto, Hello) y forjar una cookie DTLS v\u00e1lida antes de la primera rotaci\u00f3n del secreto de la cookie. La cookie DTLS (RFC 6347 \u00a74.2.1) es una mitigaci\u00f3n de denegaci\u00f3n de servicio que evita que las IP de origen falsificadas fuercen al servidor a asignar estado y a realizar operaciones criptogr\u00e1ficas costosas; no es un mecanismo de autenticaci\u00f3n. Durante la ventana desde el inicio del servidor hasta la primera rotaci\u00f3n del secreto (0 a 15 segundos), un atacante que puede observar el ClientHello en texto plano puede bypassar la verificaci\u00f3n de direcci\u00f3n de origen, lo que permite la amplificaci\u00f3n del handshake DTLS con direcciones de origen falsificadas.\n\nEsta vulnerabilidad est\u00e1 asociada con el archivo de programa lib/ssl/src/dtls_server_connection.erl y la rutina de programa dtls_server_connection:initial_hello/3.\n\nEste problema afecta a OTP desde OTP 20.0 antes de 29.0.3, 28.5.0.3 y 27.3.4.14 correspondiente a ssl desde 8.2 antes de 11.7.3, 11.6.0.3 y 11.2.12.10."}], "id": "CVE-2026-54887", "lastModified": "2026-11-11T19:17:41.747", "metrics": {"cvssMetricV31": [{"cvssData": {"attackComplexity": "HIGH", "attackVector": "NETWORK", "availabilityImpact": "NONE", "baseScore": 4.8, "baseSeverity": "MEDIUM", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "privilegesRequired": "NONE", "scope": "UNCHANGED", "userInteraction": "NONE", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N", "version": "3.1"}, "exploitabilityScore": 2.2, "impactScore": 2.5, "source": "nvd@nist.gov", "type": "Primary"}], "cvssMetricV40": [{"cvssData": {"Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "Safety": "NOT_DEFINED", "attackComplexity": "LOW", "attackRequirements": "PRESENT", "attackVector": "NETWORK", "availabilityRequirement": "NOT_DEFINED", "baseScore": 6.3, "baseSeverity": "MEDIUM", "confidentialityRequirement": "NOT_DEFINED", "exploitMaturity": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "privilegesRequired": "NONE", "providerUrgency": "NOT_DEFINED", "subAvailabilityImpact": "NONE", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "userInteraction": "NONE", "valueDensity": "NOT_DEFINED", "vectorString": "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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "version": "4.0", "vulnAvailabilityImpact": "LOW", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "NONE", "vulnerabilityResponseEffort": "NOT_DEFINED"}, "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db", "type": "Secondary"}], "ssvcV203": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "ssvcData": {"id": "CVE-2026-54887", "options": [{"exploitation": "none"}, {"automatable": "no"}, {"technicalImpact": "partial"}], "role": "CISA Coordinator", "timestamp": "2026-07-02T17:28:36.936306Z", "version": "2.0.3"}}]}, "published": "2026-07-02T17:17:02.570", "references": [{"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db", "tags": ["Vendor Advisory"], "url": "https://cna.erlef.org/cves/CVE-2026-54887.html"}, {"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db", "tags": ["Patch"], "url": "https://github.com/erlang/otp/commit/888e3bcd72d5406016b9e0de741026bc2a6f114d"}, {"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db", "url": "https://github.com/erlang/otp/commit/e594aad2f87aab39e99fccf9e021bc94e0bbf7d4"}, {"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db", "tags": ["Vendor Advisory"], "url": "https://github.com/erlang/otp/security/advisories/GHSA-p2m2-3c2w-8jp8"}, {"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db", "tags": ["Third Party Advisory"], "url": "https://osv.dev/vulnerability/EEF-CVE-2026-54887"}, {"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db", "tags": ["Release Notes"], "url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"}], "sourceIdentifier": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db", "vulnStatus": "Modified", "weaknesses": [{"description": [{"lang": "en", "value": "CWE-1394"}], "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db", "type": "Secondary"}]}