GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

FKIE_CVE-2026-49762

Vulnerability from fkie_nvd - Published: 2026-06-09 14:16 - Updated: 2026-07-23 08:10
Summary
Uncontrolled Resource Consumption vulnerability in the Elixir standard library's Version module allows an attacker who controls a version string to cause a denial of service through CPU and memory exhaustion. The version parser converts numeric version components (major, minor, patch and numeric pre-release/build identifiers) to integers without bounding their length. A single large all-digit component therefore forces a super-linear, non-yielding base-10 to arbitrary-precision integer conversion (String.to_integer/1, i.e. :erlang.binary_to_integer/1) that pins a BEAM scheduler, and a larger component raises an uncaught SystemLimitError that crashes the calling process. A single moderately sized string (around one megabyte) is enough; no authentication is required. This is reachable from the public entry points Version.parse/1, Version.parse!/1, Version.match?/3, Version.compare/2, and Version.parse_requirement/1, which applications routinely call on untrusted input such as HTTP parameters, dependency-manifest fields, and package metadata. This vulnerability is associated with program files lib/version.ex and program routines 'Elixir.Version.Parser':parse_digits/2. This issue affects Elixir: from 1.5.0 before 1.20.1.
Impacted products
Vendor Product Version

{
  "affected": [
    {
      "affectedData": [
        {
          "collectionURL": "https://github.com",
          "cpes": [
            "cpe:2.3:a:elixir-lang:elixir:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "\u0027Elixir.Version\u0027",
            "\u0027Elixir.Version.Parser\u0027"
          ],
          "packageName": "elixir-lang/elixir",
          "packageURL": "pkg:otp/elixir?repository_url=https:%2F%2Fgithub.com%2Felixir-lang%2Felixir\u0026vcs_url=git%20https:%2F%2Fgithub.com%2Felixir-lang%2Felixir.git",
          "product": "elixir",
          "programFiles": [
            "lib/version.ex"
          ],
          "programRoutines": [
            {
              "name": "\u0027Elixir.Version\u0027:parse/1"
            },
            {
              "name": "\u0027Elixir.Version\u0027:parse!/1"
            },
            {
              "name": "\u0027Elixir.Version\u0027:match?/3"
            },
            {
              "name": "\u0027Elixir.Version\u0027:compare/2"
            },
            {
              "name": "\u0027Elixir.Version\u0027:parse_requirement/1"
            },
            {
              "name": "\u0027Elixir.Version.Parser\u0027:parse_version/2"
            },
            {
              "name": "\u0027Elixir.Version.Parser\u0027:parse_digits/2"
            },
            {
              "name": "\u0027Elixir.Version.Parser\u0027:require_digits/1"
            },
            {
              "name": "\u0027Elixir.Version.Parser\u0027:convert_parts_to_integer/2"
            }
          ],
          "repo": "https://github.com/elixir-lang/elixir",
          "vendor": "elixir-lang",
          "versions": [
            {
              "lessThan": "1.20.1",
              "status": "affected",
              "version": "1.5.0",
              "versionType": "semver"
            }
          ]
        },
        {
          "collectionURL": "https://github.com",
          "cpes": [
            "cpe:2.3:a:elixir-lang:elixir:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "\u0027Elixir.Version\u0027",
            "\u0027Elixir.Version.Parser\u0027"
          ],
          "packageName": "elixir-lang/elixir",
          "packageURL": "pkg:github/elixir-lang/elixir",
          "product": "elixir",
          "programFiles": [
            "lib/elixir/lib/version.ex"
          ],
          "programRoutines": [
            {
              "name": "\u0027Elixir.Version\u0027:parse/1"
            },
            {
              "name": "\u0027Elixir.Version\u0027:parse!/1"
            },
            {
              "name": "\u0027Elixir.Version\u0027:match?/3"
            },
            {
              "name": "\u0027Elixir.Version\u0027:compare/2"
            },
            {
              "name": "\u0027Elixir.Version\u0027:parse_requirement/1"
            },
            {
              "name": "\u0027Elixir.Version.Parser\u0027:parse_version/2"
            },
            {
              "name": "\u0027Elixir.Version.Parser\u0027:parse_digits/2"
            },
            {
              "name": "\u0027Elixir.Version.Parser\u0027:require_digits/1"
            },
            {
              "name": "\u0027Elixir.Version.Parser\u0027:convert_parts_to_integer/2"
            }
          ],
          "repo": "https://github.com/elixir-lang/elixir.git",
          "vendor": "elixir-lang",
          "versions": [
            {
              "lessThan": "c64417d72fd5c7d09e963ca3ac5fa2b140978d9e",
              "status": "affected",
              "version": "63e186aea94395897dc4964d82d250130c01ec25",
              "versionType": "git"
            }
          ]
        }
      ],
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
    }
  ],
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Uncontrolled Resource Consumption vulnerability in the Elixir standard library\u0027s Version module allows an attacker who controls a version string to cause a denial of service through CPU and memory exhaustion.\n\nThe version parser converts numeric version components (major, minor, patch and numeric pre-release/build identifiers) to integers without bounding their length. A single large all-digit component therefore forces a super-linear, non-yielding base-10 to arbitrary-precision integer conversion (String.to_integer/1, i.e. :erlang.binary_to_integer/1) that pins a BEAM scheduler, and a larger component raises an uncaught SystemLimitError that crashes the calling process. A single moderately sized string (around one megabyte) is enough; no authentication is required.\n\nThis is reachable from the public entry points Version.parse/1, Version.parse!/1, Version.match?/3, Version.compare/2, and Version.parse_requirement/1, which applications routinely call on untrusted input such as HTTP parameters, dependency-manifest fields, and package metadata.\n\nThis vulnerability is associated with program files lib/version.ex and program routines \u0027Elixir.Version.Parser\u0027:parse_digits/2.\n\nThis issue affects Elixir: from 1.5.0 before 1.20.1."
    },
    {
      "lang": "es",
      "value": "Una vulnerabilidad de Consumo de Recursos No Controlado en el m\u00f3dulo Version de la biblioteca est\u00e1ndar de Elixir permite a un atacante que controla una cadena de versi\u00f3n causar una denegaci\u00f3n de servicio a trav\u00e9s del agotamiento de CPU y memoria.\n\nEl analizador de versiones convierte componentes num\u00e9ricos de versi\u00f3n (mayor, menor, parche e identificadores num\u00e9ricos de pre-lanzamiento/construcci\u00f3n) a enteros sin limitar su longitud. Un \u00fanico componente grande de solo d\u00edgitos, por lo tanto, fuerza una conversi\u00f3n superlineal, no productiva, de base-10 a entero de precisi\u00f3n arbitraria (String.to_integer/1, es decir, :erlang.binary_to_integer/1) que fija un planificador BEAM, y un componente m\u00e1s grande genera un SystemLimitError no capturado que bloquea el proceso de llamada. Una \u00fanica cadena de tama\u00f1o moderado (alrededor de un megabyte) es suficiente; no se requiere autenticaci\u00f3n.\n\nEsto es accesible desde los puntos de entrada p\u00fablicos Version.parse/1, Version.parse!/1, Version.match?/3, Version.compare/2, y Version.parse_requirement/1, que las aplicaciones llaman rutinariamente en entradas no confiables como par\u00e1metros HTTP, campos de manifiesto de dependencia y metadatos de paquete.\n\nEsta vulnerabilidad est\u00e1 asociada con los archivos de programa lib/version.ex y las rutinas de programa \u0027Elixir.Version.Parser\u0027:parse_digits/2.\n\nEste problema afecta a Elixir: desde 1.5.0 antes de 1.20.1."
    }
  ],
  "id": "CVE-2026-49762",
  "lastModified": "2026-07-23T08:10:00.137",
  "metrics": {
    "cvssMetricV40": [
      {
        "cvssData": {
          "Automatable": "NOT_DEFINED",
          "Recovery": "NOT_DEFINED",
          "Safety": "NOT_DEFINED",
          "attackComplexity": "LOW",
          "attackRequirements": "NONE",
          "attackVector": "LOCAL",
          "availabilityRequirement": "NOT_DEFINED",
          "baseScore": 5.1,
          "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:L/AC:L/AT:N/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-49762",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "timestamp": "2026-06-09T14:48:56.343391Z",
          "version": "2.0.3"
        }
      }
    ]
  },
  "published": "2026-06-09T14:16:44.317",
  "references": [
    {
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "url": "https://cna.erlef.org/cves/CVE-2026-49762.html"
    },
    {
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "url": "https://github.com/elixir-lang/elixir/commit/c64417d72fd5c7d09e963ca3ac5fa2b140978d9e"
    },
    {
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "url": "https://github.com/elixir-lang/elixir/security/advisories/GHSA-w2h8-8x3g-278p"
    },
    {
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "url": "https://osv.dev/vulnerability/EEF-CVE-2026-49762"
    }
  ],
  "sourceIdentifier": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
  "vulnStatus": "Deferred",
  "weaknesses": [
    {
      "description": [
        {
          "lang": "en",
          "value": "CWE-400"
        }
      ],
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "type": "Secondary"
    }
  ]
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

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.

Loading…

Detection rules are retrieved from Rulezet.

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.


Loading…