CVE-2026-58227 (GCVE-0-2026-58227)

Vulnerability from cvelistv5 – Published: 2026-07-27 14:39 – Updated: 2026-07-28 09:53
VLAI
Title
TLS/DTLS denial of service via unbounded recursion on cross-signed peer certificate chain
Summary
The Erlang/OTP ssl application does not detect cycles when reconstructing an incomplete peer certificate chain during a TLS or DTLS handshake. In ssl_certificate:handle_incomplete_chain/5, the received chain is passed to ssl_certificate:build_certificate_chain/5, which walks issuer relationships via ssl_certificate:do_certificate_chain/7 with no cycle detection and no depth limit. When the peer supplies two mutually cross-signed certificates in unordered form (A issues B, B issues A), the issuer lookup alternates between the two certificates and the pair of functions recurses indefinitely, growing the call stack and chain accumulator without bound. An unauthenticated remote attacker can send a crafted certificate chain in a TLS or DTLS Certificate handshake message to exhaust available memory and crash the BEAM node. Only a TCP connection and a partial handshake are required; no authentication or completed handshake is needed, and both TLS/DTLS servers and clients are affected when processing peer certificate messages. This issue affects OTP from OTP 23.2 before OTP 29.0.4, OTP 28.5.0.4 and OTP 27.3.4.15, corresponding to ssl from 10.2 before 11.7.4, 11.6.0.4 and 11.2.12.11.
SSVC
Exploitation: none Automatable: yes Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-07-27 17:25 UTC
CWE
Assigner
EEF CNA under the mitre root
CNA scorecard A 97/100 over 341 records in the last 180 days details
Impacted products
Vendor Product Version CPE status
Erlang OTP Affected: 10.2 , < * (otp)
    cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:*
Create a notification for this product.
Erlang OTP Affected: 23.2 , < * (otp)
Affected: addc42df113f8f15fc20e9dff45490b3ce0d3d6b , < * (git)
    cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:*
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-58227",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "yes"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-07-27T17:25:16.012380Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-07-27T17:25:26.884Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "cpes": [
            "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "ssl_certificate"
          ],
          "packageName": "ssl",
          "packageURL": "pkg:otp/ssl?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%20https:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
          "product": "OTP",
          "programFiles": [
            "src/ssl_certificate.erl"
          ],
          "programRoutines": [
            {
              "name": "ssl_certificate:handle_incomplete_chain/5"
            },
            {
              "name": "ssl_certificate:build_certificate_chain/5"
            },
            {
              "name": "ssl_certificate:do_certificate_chain/7"
            }
          ],
          "repo": "https://github.com/erlang/otp",
          "vendor": "Erlang",
          "versions": [
            {
              "changes": [
                {
                  "at": "11.7.4",
                  "status": "unaffected"
                },
                {
                  "at": "11.6.0.4",
                  "status": "unaffected"
                },
                {
                  "at": "11.2.12.11",
                  "status": "unaffected"
                }
              ],
              "lessThan": "*",
              "status": "affected",
              "version": "10.2",
              "versionType": "otp"
            }
          ]
        },
        {
          "collectionURL": "https://github.com",
          "cpes": [
            "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "ssl_certificate"
          ],
          "packageName": "erlang/otp",
          "packageURL": "pkg:github/erlang/otp",
          "product": "OTP",
          "programFiles": [
            "lib/ssl/src/ssl_certificate.erl"
          ],
          "programRoutines": [
            {
              "name": "ssl_certificate:handle_incomplete_chain/5"
            },
            {
              "name": "ssl_certificate:build_certificate_chain/5"
            },
            {
              "name": "ssl_certificate:do_certificate_chain/7"
            }
          ],
          "repo": "https://github.com/erlang/otp",
          "vendor": "Erlang",
          "versions": [
            {
              "changes": [
                {
                  "at": "29.0.4",
                  "status": "unaffected"
                },
                {
                  "at": "28.5.0.4",
                  "status": "unaffected"
                },
                {
                  "at": "27.3.4.15",
                  "status": "unaffected"
                }
              ],
              "lessThan": "*",
              "status": "affected",
              "version": "23.2",
              "versionType": "otp"
            },
            {
              "changes": [
                {
                  "at": "7db64720177961e04545681480d691c4be81c54d",
                  "status": "unaffected"
                },
                {
                  "at": "241d43703989fec4b6bf637beaeb366d92dcc4c2",
                  "status": "unaffected"
                },
                {
                  "at": "0307bff2c72b685c6bd952daaac6bd661c247d62",
                  "status": "unaffected"
                }
              ],
              "lessThan": "*",
              "status": "affected",
              "version": "addc42df113f8f15fc20e9dff45490b3ce0d3d6b",
              "versionType": "git"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "27.3.4.15",
                  "versionStartIncluding": "23.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "28.5.0.4",
                  "versionStartIncluding": "28.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "29.0.4",
                  "versionStartIncluding": "29.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ],
          "operator": "AND"
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Lukas Backstr\u00f6m"
        },
        {
          "lang": "en",
          "type": "remediation developer",
          "value": "Ingela Anderton Andin"
        },
        {
          "lang": "en",
          "type": "remediation reviewer",
          "value": "Dan Gudmundsson"
        },
        {
          "lang": "en",
          "type": "remediation reviewer",
          "value": "Jakub Witczak"
        },
        {
          "lang": "en",
          "type": "remediation reviewer",
          "value": "John H\u00f6gberg"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eThe Erlang/OTP \u003ctt\u003essl\u003c/tt\u003e application does not detect cycles when reconstructing an incomplete peer certificate chain during a TLS or DTLS handshake. In \u003ctt\u003essl_certificate:handle_incomplete_chain/5\u003c/tt\u003e, the received chain is passed to \u003ctt\u003essl_certificate:build_certificate_chain/5\u003c/tt\u003e, which walks issuer relationships via \u003ctt\u003essl_certificate:do_certificate_chain/7\u003c/tt\u003e with no cycle detection and no depth limit. When the peer supplies two mutually cross-signed certificates in unordered form (A issues B, B issues A), the issuer lookup alternates between the two certificates and the pair of functions recurses indefinitely, growing the call stack and chain accumulator without bound.\u003c/p\u003e\u003cp\u003eAn unauthenticated remote attacker can send a crafted certificate chain in a TLS or DTLS \u003ctt\u003eCertificate\u003c/tt\u003e handshake message to exhaust available memory and crash the BEAM node. Only a TCP connection and a partial handshake are required; no authentication or completed handshake is needed, and both TLS/DTLS servers and clients are affected when processing peer certificate messages.\u003c/p\u003e\u003cp\u003eThis issue affects OTP from OTP 23.2 before OTP\u0026nbsp;29.0.4, OTP\u0026nbsp;28.5.0.4 and OTP\u0026nbsp;27.3.4.15, corresponding to ssl from 10.2 before 11.7.4, 11.6.0.4 and 11.2.12.11.\u003c/p\u003e"
            }
          ],
          "value": "The Erlang/OTP ssl application does not detect cycles when reconstructing an incomplete peer certificate chain during a TLS or DTLS handshake. In ssl_certificate:handle_incomplete_chain/5, the received chain is passed to ssl_certificate:build_certificate_chain/5, which walks issuer relationships via ssl_certificate:do_certificate_chain/7 with no cycle detection and no depth limit. When the peer supplies two mutually cross-signed certificates in unordered form (A issues B, B issues A), the issuer lookup alternates between the two certificates and the pair of functions recurses indefinitely, growing the call stack and chain accumulator without bound.\n\nAn unauthenticated remote attacker can send a crafted certificate chain in a TLS or DTLS Certificate handshake message to exhaust available memory and crash the BEAM node. Only a TCP connection and a partial handshake are required; no authentication or completed handshake is needed, and both TLS/DTLS servers and clients are affected when processing peer certificate messages.\n\nThis issue affects OTP from OTP 23.2 before OTP\u00a029.0.4, OTP\u00a028.5.0.4 and OTP\u00a027.3.4.15, corresponding to ssl from 10.2 before 11.7.4, 11.6.0.4 and 11.2.12.11."
        }
      ],
      "impacts": [
        {
          "capecId": "CAPEC-130",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-130 Excessive Allocation"
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "attackComplexity": "LOW",
            "attackRequirements": "NONE",
            "attackVector": "NETWORK",
            "baseScore": 8.7,
            "baseSeverity": "HIGH",
            "privilegesRequired": "NONE",
            "subAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "NONE",
            "subIntegrityImpact": "NONE",
            "userInteraction": "NONE",
            "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N",
            "version": "4.0",
            "vulnAvailabilityImpact": "HIGH",
            "vulnConfidentialityImpact": "NONE",
            "vulnIntegrityImpact": "NONE"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-674",
              "description": "CWE-674 Uncontrolled Recursion",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-07-28T09:53:23.614Z",
        "orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "shortName": "EEF"
      },
      "references": [
        {
          "tags": [
            "vendor-advisory",
            "related"
          ],
          "url": "https://github.com/erlang/otp/security/advisories/GHSA-r5jr-mq46-vmhw"
        },
        {
          "tags": [
            "related"
          ],
          "url": "https://cna.erlef.org/cves/CVE-2026-58227.html"
        },
        {
          "tags": [
            "related"
          ],
          "url": "https://osv.dev/vulnerability/EEF-CVE-2026-58227"
        },
        {
          "tags": [
            "x_version-scheme"
          ],
          "url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
        },
        {
          "tags": [
            "patch"
          ],
          "url": "https://github.com/erlang/otp/commit/0307bff2c72b685c6bd952daaac6bd661c247d62"
        },
        {
          "tags": [
            "patch"
          ],
          "url": "https://github.com/erlang/otp/commit/241d43703989fec4b6bf637beaeb366d92dcc4c2"
        },
        {
          "tags": [
            "patch"
          ],
          "url": "https://github.com/erlang/otp/commit/7db64720177961e04545681480d691c4be81c54d"
        }
      ],
      "source": {
        "discovery": "INTERNAL"
      },
      "title": "TLS/DTLS denial of service via unbounded recursion on cross-signed peer certificate chain",
      "x_generator": {
        "engine": "cvelib 1.8.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
    "assignerShortName": "EEF",
    "cveId": "CVE-2026-58227",
    "datePublished": "2026-07-27T14:39:44.609Z",
    "dateReserved": "2026-06-29T18:54:08.633Z",
    "dateUpdated": "2026-07-28T09:53:23.614Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-58227",
      "date": "2026-10-29",
      "epss": "0.00387",
      "percentile": "0.32762"
    },
    "microsoft_vex": {
      "current_release_date": "2026-10-22T01:16:30.000Z",
      "cve": "CVE-2026-58227",
      "id": "msrc_CVE-2026-58227",
      "initial_release_date": "2026-08-07T00:41:26.000Z",
      "product_status:fixed": "2",
      "product_status:known_affected": "2",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "TLS/DTLS denial of service via unbounded recursion on cross-signed peer certificate chain",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-58227.json",
      "version": "2"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "cpes": [
                  "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
                ],
                "defaultStatus": "unaffected",
                "modules": [
                  "ssl_certificate"
                ],
                "packageName": "ssl",
                "packageURL": "pkg:otp/ssl?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%20https:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
                "product": "OTP",
                "programFiles": [
                  "src/ssl_certificate.erl"
                ],
                "programRoutines": [
                  {
                    "name": "ssl_certificate:handle_incomplete_chain/5"
                  },
                  {
                    "name": "ssl_certificate:build_certificate_chain/5"
                  },
                  {
                    "name": "ssl_certificate:do_certificate_chain/7"
                  }
                ],
                "repo": "https://github.com/erlang/otp",
                "vendor": "Erlang",
                "versions": [
                  {
                    "changes": [
                      {
                        "at": "11.7.4",
                        "status": "unaffected"
                      },
                      {
                        "at": "11.6.0.4",
                        "status": "unaffected"
                      },
                      {
                        "at": "11.2.12.11",
                        "status": "unaffected"
                      }
                    ],
                    "lessThan": "*",
                    "status": "affected",
                    "version": "10.2",
                    "versionType": "otp"
                  }
                ]
              },
              {
                "collectionURL": "https://github.com",
                "cpes": [
                  "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
                ],
                "defaultStatus": "unaffected",
                "modules": [
                  "ssl_certificate"
                ],
                "packageName": "erlang/otp",
                "packageURL": "pkg:github/erlang/otp",
                "product": "OTP",
                "programFiles": [
                  "lib/ssl/src/ssl_certificate.erl"
                ],
                "programRoutines": [
                  {
                    "name": "ssl_certificate:handle_incomplete_chain/5"
                  },
                  {
                    "name": "ssl_certificate:build_certificate_chain/5"
                  },
                  {
                    "name": "ssl_certificate:do_certificate_chain/7"
                  }
                ],
                "repo": "https://github.com/erlang/otp",
                "vendor": "Erlang",
                "versions": [
                  {
                    "changes": [
                      {
                        "at": "29.0.4",
                        "status": "unaffected"
                      },
                      {
                        "at": "28.5.0.4",
                        "status": "unaffected"
                      },
                      {
                        "at": "27.3.4.15",
                        "status": "unaffected"
                      }
                    ],
                    "lessThan": "*",
                    "status": "affected",
                    "version": "23.2",
                    "versionType": "otp"
                  },
                  {
                    "changes": [
                      {
                        "at": "7db64720177961e04545681480d691c4be81c54d",
                        "status": "unaffected"
                      },
                      {
                        "at": "241d43703989fec4b6bf637beaeb366d92dcc4c2",
                        "status": "unaffected"
                      },
                      {
                        "at": "0307bff2c72b685c6bd952daaac6bd661c247d62",
                        "status": "unaffected"
                      }
                    ],
                    "lessThan": "*",
                    "status": "affected",
                    "version": "addc42df113f8f15fc20e9dff45490b3ce0d3d6b",
                    "versionType": "git"
                  }
                ]
              }
            ],
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
          }
        ],
        "configurations": [
          {
            "nodes": [
              {
                "cpeMatch": [
                  {
                    "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "CF06E49D-ED0A-4961-839E-15EB0E1EDC3B",
                    "versionEndExcluding": "27.3.4.15",
                    "versionStartIncluding": "23.2",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "E5A403B9-F8C0-42F9-9CDD-AE95FBBA58BC",
                    "versionEndExcluding": "28.5.0.4",
                    "versionStartIncluding": "28.0",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "4325E198-43FA-4DD1-99A5-66705CF21615",
                    "versionEndExcluding": "29.0.4",
                    "versionStartIncluding": "29.0",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:erlang:erlang\\/ssl:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "A1C5B925-A63B-4C55-AE0D-868DC457E448",
                    "versionEndExcluding": "11.2.12.11",
                    "versionStartIncluding": "10.2",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:erlang:erlang\\/ssl:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "00A0557D-8DF6-4DD2-AE3A-6F732454D8B8",
                    "versionEndExcluding": "11.6.0.4",
                    "versionStartIncluding": "11.3",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:erlang:erlang\\/ssl:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "50DDEF08-5FC7-40C5-B9C5-4791B0EC7595",
                    "versionEndExcluding": "11.7.4",
                    "versionStartIncluding": "11.7",
                    "vulnerable": true
                  }
                ],
                "negate": false,
                "operator": "OR"
              }
            ]
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "The Erlang/OTP ssl application does not detect cycles when reconstructing an incomplete peer certificate chain during a TLS or DTLS handshake. In ssl_certificate:handle_incomplete_chain/5, the received chain is passed to ssl_certificate:build_certificate_chain/5, which walks issuer relationships via ssl_certificate:do_certificate_chain/7 with no cycle detection and no depth limit. When the peer supplies two mutually cross-signed certificates in unordered form (A issues B, B issues A), the issuer lookup alternates between the two certificates and the pair of functions recurses indefinitely, growing the call stack and chain accumulator without bound.\n\nAn unauthenticated remote attacker can send a crafted certificate chain in a TLS or DTLS Certificate handshake message to exhaust available memory and crash the BEAM node. Only a TCP connection and a partial handshake are required; no authentication or completed handshake is needed, and both TLS/DTLS servers and clients are affected when processing peer certificate messages.\n\nThis issue affects OTP from OTP 23.2 before OTP\u00a029.0.4, OTP\u00a028.5.0.4 and OTP\u00a027.3.4.15, corresponding to ssl from 10.2 before 11.7.4, 11.6.0.4 and 11.2.12.11."
          },
          {
            "lang": "es",
            "value": "La aplicaci\u00f3n ssl de Erlang/OTP no detecta ciclos al reconstruir una cadena de certificados de pares incompleta durante un handshake TLS o DTLS. En ssl_certificate:handle_incomplete_chain/5, la cadena recibida se pasa a ssl_certificate:build_certificate_chain/5, que recorre las relaciones de emisor a trav\u00e9s de ssl_certificate:do_certificate_chain/7 sin detecci\u00f3n de ciclos y sin l\u00edmite de profundidad. Cuando el par suministra dos certificados mutuamente firmados de forma cruzada en formato desordenado (A emite B, B emite A), la b\u00fasqueda del emisor alterna entre los dos certificados y el par de funciones recurre indefinidamente, haciendo crecer la pila de llamadas y el acumulador de la cadena sin l\u00edmite.\n\nUn atacante remoto no autenticado puede enviar una cadena de certificados manipulada en un mensaje de handshake de certificado TLS o DTLS para agotar la memoria disponible y bloquear el nodo BEAM. Solo se requiere una conexi\u00f3n TCP y un handshake parcial; no se necesita autenticaci\u00f3n ni un handshake completado, y tanto los servidores como los clientes TLS/DTLS se ven afectados al procesar mensajes de certificados de pares.\n\nEste problema afecta a OTP desde OTP 23.2 antes de OTP 29.0.4, OTP 28.5.0.4 y OTP 27.3.4.15, lo que corresponde a ssl desde 10.2 antes de 11.7.4, 11.6.0.4 y 11.2.12.11."
          }
        ],
        "id": "CVE-2026-58227",
        "lastModified": "2026-10-24T13:10:00.147",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "NETWORK",
                "availabilityImpact": "HIGH",
                "baseScore": 7.5,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "NONE",
                "integrityImpact": "NONE",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 3.9,
              "impactScore": 3.6,
              "source": "nvd@nist.gov",
              "type": "Primary"
            }
          ],
          "cvssMetricV40": [
            {
              "cvssData": {
                "Automatable": "NOT_DEFINED",
                "Recovery": "NOT_DEFINED",
                "Safety": "NOT_DEFINED",
                "attackComplexity": "LOW",
                "attackRequirements": "NONE",
                "attackVector": "NETWORK",
                "availabilityRequirement": "NOT_DEFINED",
                "baseScore": 8.7,
                "baseSeverity": "HIGH",
                "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:N/PR:N/UI:N/VC:N/VI:N/VA:H/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": "HIGH",
                "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-58227",
                "options": [
                  {
                    "exploitation": "none"
                  },
                  {
                    "automatable": "yes"
                  },
                  {
                    "technicalImpact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-07-27T17:25:16.012380Z",
                "version": "2.0.3"
              }
            }
          ]
        },
        "published": "2026-07-27T16:17:56.953",
        "references": [
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "tags": [
              "Patch",
              "Third Party Advisory"
            ],
            "url": "https://cna.erlef.org/cves/CVE-2026-58227.html"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "tags": [
              "Patch"
            ],
            "url": "https://github.com/erlang/otp/commit/0307bff2c72b685c6bd952daaac6bd661c247d62"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "tags": [
              "Patch"
            ],
            "url": "https://github.com/erlang/otp/commit/241d43703989fec4b6bf637beaeb366d92dcc4c2"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "tags": [
              "Patch"
            ],
            "url": "https://github.com/erlang/otp/commit/7db64720177961e04545681480d691c4be81c54d"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "tags": [
              "Vendor Advisory"
            ],
            "url": "https://github.com/erlang/otp/security/advisories/GHSA-r5jr-mq46-vmhw"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "tags": [
              "Patch",
              "Third Party Advisory"
            ],
            "url": "https://osv.dev/vulnerability/EEF-CVE-2026-58227"
          },
          {
            "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": "Analyzed",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "CWE-674"
              }
            ],
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "type": "Secondary"
          }
        ]
      }
    },
    "vulnrichment": {
      "containers": {
        "adp": [
          {
            "metrics": [
              {
                "other": {
                  "content": {
                    "id": "CVE-2026-58227",
                    "options": [
                      {
                        "Exploitation": "none"
                      },
                      {
                        "Automatable": "yes"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "role": "CISA Coordinator",
                    "timestamp": "2026-07-27T17:25:16.012380Z",
                    "version": "2.0.3"
                  },
                  "type": "ssvc"
                }
              }
            ],
            "providerMetadata": {
              "dateUpdated": "2026-07-27T17:25:22.859Z",
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP"
            },
            "title": "CISA ADP Vulnrichment"
          }
        ],
        "cna": {
          "affected": [
            {
              "cpes": [
                "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
              ],
              "defaultStatus": "unaffected",
              "modules": [
                "ssl_certificate"
              ],
              "packageName": "ssl",
              "packageURL": "pkg:otp/ssl?repository_url=https:%2F%2Fgithub.com%2Ferlang%2Fotp\u0026vcs_url=git%20https:%2F%2Fgithub.com%2Ferlang%2Fotp.git",
              "product": "OTP",
              "programFiles": [
                "src/ssl_certificate.erl"
              ],
              "programRoutines": [
                {
                  "name": "ssl_certificate:handle_incomplete_chain/5"
                },
                {
                  "name": "ssl_certificate:build_certificate_chain/5"
                },
                {
                  "name": "ssl_certificate:do_certificate_chain/7"
                }
              ],
              "repo": "https://github.com/erlang/otp",
              "vendor": "Erlang",
              "versions": [
                {
                  "changes": [
                    {
                      "at": "11.7.4",
                      "status": "unaffected"
                    },
                    {
                      "at": "11.6.0.4",
                      "status": "unaffected"
                    },
                    {
                      "at": "11.2.12.11",
                      "status": "unaffected"
                    }
                  ],
                  "lessThan": "*",
                  "status": "affected",
                  "version": "10.2",
                  "versionType": "otp"
                }
              ]
            },
            {
              "collectionURL": "https://github.com",
              "cpes": [
                "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*"
              ],
              "defaultStatus": "unaffected",
              "modules": [
                "ssl_certificate"
              ],
              "packageName": "erlang/otp",
              "packageURL": "pkg:github/erlang/otp",
              "product": "OTP",
              "programFiles": [
                "lib/ssl/src/ssl_certificate.erl"
              ],
              "programRoutines": [
                {
                  "name": "ssl_certificate:handle_incomplete_chain/5"
                },
                {
                  "name": "ssl_certificate:build_certificate_chain/5"
                },
                {
                  "name": "ssl_certificate:do_certificate_chain/7"
                }
              ],
              "repo": "https://github.com/erlang/otp",
              "vendor": "Erlang",
              "versions": [
                {
                  "changes": [
                    {
                      "at": "29.0.4",
                      "status": "unaffected"
                    },
                    {
                      "at": "28.5.0.4",
                      "status": "unaffected"
                    },
                    {
                      "at": "27.3.4.15",
                      "status": "unaffected"
                    }
                  ],
                  "lessThan": "*",
                  "status": "affected",
                  "version": "23.2",
                  "versionType": "otp"
                },
                {
                  "changes": [
                    {
                      "at": "7db64720177961e04545681480d691c4be81c54d",
                      "status": "unaffected"
                    },
                    {
                      "at": "241d43703989fec4b6bf637beaeb366d92dcc4c2",
                      "status": "unaffected"
                    },
                    {
                      "at": "0307bff2c72b685c6bd952daaac6bd661c247d62",
                      "status": "unaffected"
                    }
                  ],
                  "lessThan": "*",
                  "status": "affected",
                  "version": "addc42df113f8f15fc20e9dff45490b3ce0d3d6b",
                  "versionType": "git"
                }
              ]
            }
          ],
          "cpeApplicability": [
            {
              "nodes": [
                {
                  "cpeMatch": [
                    {
                      "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "27.3.4.15",
                      "versionStartIncluding": "23.2",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "28.5.0.4",
                      "versionStartIncluding": "28.0",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:a:erlang:erlang\\/otp:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "29.0.4",
                      "versionStartIncluding": "29.0",
                      "vulnerable": true
                    }
                  ],
                  "negate": false,
                  "operator": "OR"
                }
              ],
              "operator": "AND"
            }
          ],
          "credits": [
            {
              "lang": "en",
              "type": "finder",
              "value": "Lukas Backstr\u00f6m"
            },
            {
              "lang": "en",
              "type": "remediation developer",
              "value": "Ingela Anderton Andin"
            },
            {
              "lang": "en",
              "type": "remediation reviewer",
              "value": "Dan Gudmundsson"
            },
            {
              "lang": "en",
              "type": "remediation reviewer",
              "value": "Jakub Witczak"
            },
            {
              "lang": "en",
              "type": "remediation reviewer",
              "value": "John H\u00f6gberg"
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003eThe Erlang/OTP \u003ctt\u003essl\u003c/tt\u003e application does not detect cycles when reconstructing an incomplete peer certificate chain during a TLS or DTLS handshake. In \u003ctt\u003essl_certificate:handle_incomplete_chain/5\u003c/tt\u003e, the received chain is passed to \u003ctt\u003essl_certificate:build_certificate_chain/5\u003c/tt\u003e, which walks issuer relationships via \u003ctt\u003essl_certificate:do_certificate_chain/7\u003c/tt\u003e with no cycle detection and no depth limit. When the peer supplies two mutually cross-signed certificates in unordered form (A issues B, B issues A), the issuer lookup alternates between the two certificates and the pair of functions recurses indefinitely, growing the call stack and chain accumulator without bound.\u003c/p\u003e\u003cp\u003eAn unauthenticated remote attacker can send a crafted certificate chain in a TLS or DTLS \u003ctt\u003eCertificate\u003c/tt\u003e handshake message to exhaust available memory and crash the BEAM node. Only a TCP connection and a partial handshake are required; no authentication or completed handshake is needed, and both TLS/DTLS servers and clients are affected when processing peer certificate messages.\u003c/p\u003e\u003cp\u003eThis issue affects OTP from OTP 23.2 before OTP\u0026nbsp;29.0.4, OTP\u0026nbsp;28.5.0.4 and OTP\u0026nbsp;27.3.4.15, corresponding to ssl from 10.2 before 11.7.4, 11.6.0.4 and 11.2.12.11.\u003c/p\u003e"
                }
              ],
              "value": "The Erlang/OTP ssl application does not detect cycles when reconstructing an incomplete peer certificate chain during a TLS or DTLS handshake. In ssl_certificate:handle_incomplete_chain/5, the received chain is passed to ssl_certificate:build_certificate_chain/5, which walks issuer relationships via ssl_certificate:do_certificate_chain/7 with no cycle detection and no depth limit. When the peer supplies two mutually cross-signed certificates in unordered form (A issues B, B issues A), the issuer lookup alternates between the two certificates and the pair of functions recurses indefinitely, growing the call stack and chain accumulator without bound.\n\nAn unauthenticated remote attacker can send a crafted certificate chain in a TLS or DTLS Certificate handshake message to exhaust available memory and crash the BEAM node. Only a TCP connection and a partial handshake are required; no authentication or completed handshake is needed, and both TLS/DTLS servers and clients are affected when processing peer certificate messages.\n\nThis issue affects OTP from OTP 23.2 before OTP\u00a029.0.4, OTP\u00a028.5.0.4 and OTP\u00a027.3.4.15, corresponding to ssl from 10.2 before 11.7.4, 11.6.0.4 and 11.2.12.11."
            }
          ],
          "impacts": [
            {
              "capecId": "CAPEC-130",
              "descriptions": [
                {
                  "lang": "en",
                  "value": "CAPEC-130 Excessive Allocation"
                }
              ]
            }
          ],
          "metrics": [
            {
              "cvssV4_0": {
                "attackComplexity": "LOW",
                "attackRequirements": "NONE",
                "attackVector": "NETWORK",
                "baseScore": 8.7,
                "baseSeverity": "HIGH",
                "privilegesRequired": "NONE",
                "subAvailabilityImpact": "NONE",
                "subConfidentialityImpact": "NONE",
                "subIntegrityImpact": "NONE",
                "userInteraction": "NONE",
                "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N",
                "version": "4.0",
                "vulnAvailabilityImpact": "HIGH",
                "vulnConfidentialityImpact": "NONE",
                "vulnIntegrityImpact": "NONE"
              },
              "format": "CVSS",
              "scenarios": [
                {
                  "lang": "en",
                  "value": "GENERAL"
                }
              ]
            }
          ],
          "problemTypes": [
            {
              "descriptions": [
                {
                  "cweId": "CWE-674",
                  "description": "CWE-674 Uncontrolled Recursion",
                  "lang": "en",
                  "type": "CWE"
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-07-28T09:53:23.614Z",
            "orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "shortName": "EEF"
          },
          "references": [
            {
              "tags": [
                "vendor-advisory",
                "related"
              ],
              "url": "https://github.com/erlang/otp/security/advisories/GHSA-r5jr-mq46-vmhw"
            },
            {
              "tags": [
                "related"
              ],
              "url": "https://cna.erlef.org/cves/CVE-2026-58227.html"
            },
            {
              "tags": [
                "related"
              ],
              "url": "https://osv.dev/vulnerability/EEF-CVE-2026-58227"
            },
            {
              "tags": [
                "x_version-scheme"
              ],
              "url": "https://www.erlang.org/doc/system/versions.html#order-of-versions"
            },
            {
              "tags": [
                "patch"
              ],
              "url": "https://github.com/erlang/otp/commit/0307bff2c72b685c6bd952daaac6bd661c247d62"
            },
            {
              "tags": [
                "patch"
              ],
              "url": "https://github.com/erlang/otp/commit/241d43703989fec4b6bf637beaeb366d92dcc4c2"
            },
            {
              "tags": [
                "patch"
              ],
              "url": "https://github.com/erlang/otp/commit/7db64720177961e04545681480d691c4be81c54d"
            }
          ],
          "source": {
            "discovery": "INTERNAL"
          },
          "title": "TLS/DTLS denial of service via unbounded recursion on cross-signed peer certificate chain",
          "x_generator": {
            "engine": "cvelib 1.8.0"
          }
        }
      },
      "cveMetadata": {
        "assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "assignerShortName": "EEF",
        "cveId": "CVE-2026-58227",
        "datePublished": "2026-07-27T14:39:44.609Z",
        "dateReserved": "2026-06-29T18:54:08.633Z",
        "dateUpdated": "2026-07-28T09:53:23.614Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
Events included in the timeline

Loading timeline…


    Loading…

    Loading…

    Loading…

    Related by attack behaviour

    Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.