« Volver al listado

CVE-2026-104635

Estado: AplazadaAlta (8.2)—

Vulnerabilidad de Recursión Incontrolada en Protobuf.JSON.Decode en protobuf de elixir-protobuf que permite a un atacante remoto no autenticado causar un bloqueo del proceso de decodificación mediante un documento JSON profundamente anidado. Cualquier aplicación que decodifique JSON proporcionado por un atacante con Protobuf.JSON.decode/3, Protobuf.JSON.decode!/3, o Protobuf.JSON.from_decoded/3 en un esquema que contenga un tipo de mensaje autorreferencial o cíclico se ve afectada.

En lib/protobuf/json/decode.ex, la cláusula de mensaje integrado de decode_singular/3 recurre en internal_from_json_data/3 una vez por cada nivel de anidación sin incrementar ni verificar el contador de profundidad del decodificador.

Leer descripción completaMostrar menos

La protección de profundidad increase_depth_and_maybe_throw/1 cubre solo las cláusulas Google.Protobuf.ListValue y Google.Protobuf.Struct, por lo que la opción recursion_limit no tiene efecto en los tipos de mensaje definidos por el usuario. Cada nivel de anidación asigna un marco de pila y objetos del montículo, y un documento suficientemente profundo agota la memoria del proceso de decodificación. La confidencialidad e integridad no se ven afectadas.

Este problema afecta a protobuf: desde 0.8.0 anteriores a 0.17.1.

Traducción automática del texto original de NVD (en inglés).

CVSS

Probabilidad de explotación (EPSS)

EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).

🎯 Técnicas ATT&CK

Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.

Vulnerabilidad de recursión no controlada en servicio de decodificación JSON expuesto en red sin autenticación (AV:N, PR:N, UI:N). Permite DoS por agotamiento de memoria mediante documento JSON anidado profundamente.

Inferido por nuestro agente de análisis a partir de la descripción oficial, el vector CVSS y la CWE, y comprobado por un supervisor. Puede contener errores.

🛡️ Mitigaciones ATT&CK que cubren estas técnicas

Tecnologías afectadas (1)

⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.

CWE

Referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-104635",
  "cveTags": [],
  "metrics": {
    "cvssMetricV40": [
      {
        "type": "Secondary",
        "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "cvssData": {
          "Safety": "NOT_DEFINED",
          "version": "4.0",
          "Recovery": "NOT_DEFINED",
          "baseScore": 8.2,
          "Automatable": "NOT_DEFINED",
          "attackVector": "NETWORK",
          "baseSeverity": "HIGH",
          "valueDensity": "NOT_DEFINED",
          "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/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",
          "exploitMaturity": "NOT_DEFINED",
          "providerUrgency": "NOT_DEFINED",
          "userInteraction": "NONE",
          "attackComplexity": "LOW",
          "attackRequirements": "PRESENT",
          "privilegesRequired": "NONE",
          "subIntegrityImpact": "NONE",
          "vulnIntegrityImpact": "NONE",
          "integrityRequirement": "NOT_DEFINED",
          "modifiedAttackVector": "NOT_DEFINED",
          "subAvailabilityImpact": "NONE",
          "vulnAvailabilityImpact": "HIGH",
          "availabilityRequirement": "NOT_DEFINED",
          "modifiedUserInteraction": "NOT_DEFINED",
          "modifiedAttackComplexity": "NOT_DEFINED",
          "subConfidentialityImpact": "NONE",
          "vulnConfidentialityImpact": "NONE",
          "confidentialityRequirement": "NOT_DEFINED",
          "modifiedAttackRequirements": "NOT_DEFINED",
          "modifiedPrivilegesRequired": "NOT_DEFINED",
          "modifiedSubIntegrityImpact": "NOT_DEFINED",
          "modifiedVulnIntegrityImpact": "NOT_DEFINED",
          "vulnerabilityResponseEffort": "NOT_DEFINED",
          "modifiedSubAvailabilityImpact": "NOT_DEFINED",
          "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
          "modifiedSubConfidentialityImpact": "NOT_DEFINED",
          "modifiedVulnConfidentialityImpact": "NOT_DEFINED"
        }
      }
    ]
  },
  "affected": [
    {
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "affectedData": [
        {
          "cpes": [
            "cpe:2.3:a:elixir-protobuf:protobuf:*:*:*:*:*:*:*:*"
          ],
          "repo": "https://github.com/elixir-protobuf/protobuf",
          "vendor": "elixir-protobuf",
          "modules": [
            "'Elixir.Protobuf.JSON.Decode'",
            "'Elixir.Protobuf.JSON'"
          ],
          "product": "protobuf",
          "versions": [
            {
              "status": "affected",
              "version": "0.8.0",
              "lessThan": "0.17.1",
              "versionType": "semver"
            }
          ],
          "packageURL": "pkg:hex/protobuf",
          "packageName": "protobuf",
          "programFiles": [
            "lib/protobuf/json/decode.ex",
            "lib/protobuf/json.ex"
          ],
          "collectionURL": "https://repo.hex.pm",
          "defaultStatus": "unaffected",
          "programRoutines": [
            {
              "name": "'Elixir.Protobuf.JSON.Decode':from_json_data/3"
            },
            {
              "name": "'Elixir.Protobuf.JSON.Decode':decode_singular/3"
            },
            {
              "name": "'Elixir.Protobuf.JSON':decode/3"
            },
            {
              "name": "'Elixir.Protobuf.JSON':decode!/3"
            },
            {
              "name": "'Elixir.Protobuf.JSON':from_decoded/3"
            }
          ]
        },
        {
          "cpes": [
            "cpe:2.3:a:elixir-protobuf:protobuf:*:*:*:*:*:*:*:*"
          ],
          "repo": "https://github.com/elixir-protobuf/protobuf",
          "vendor": "elixir-protobuf",
          "modules": [
            "'Elixir.Protobuf.JSON.Decode'",
            "'Elixir.Protobuf.JSON'"
          ],
          "product": "protobuf",
          "versions": [
            {
              "status": "affected",
              "version": "b0a1d4eaffaf50012fa71a8e931a47cf252d0370",
              "lessThan": "e9432ad1c4099511905353cebcececa3a1f7c3ff",
              "versionType": "git"
            }
          ],
          "packageURL": "pkg:github/elixir-protobuf/protobuf",
          "packageName": "elixir-protobuf/protobuf",
          "programFiles": [
            "lib/protobuf/json/decode.ex",
            "lib/protobuf/json.ex"
          ],
          "collectionURL": "https://github.com",
          "defaultStatus": "unaffected",
          "programRoutines": [
            {
              "name": "'Elixir.Protobuf.JSON.Decode':from_json_data/3"
            },
            {
              "name": "'Elixir.Protobuf.JSON.Decode':decode_singular/3"
            },
            {
              "name": "'Elixir.Protobuf.JSON':decode/3"
            },
            {
              "name": "'Elixir.Protobuf.JSON':decode!/3"
            },
            {
              "name": "'Elixir.Protobuf.JSON':from_decoded/3"
            }
          ]
        }
      ]
    }
  ],
  "published": "2026-10-09T09:17:07.360",
  "references": [
    {
      "url": "https://cna.erlef.org/cves/CVE-2026-104635.html",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
    },
    {
      "url": "https://github.com/elixir-protobuf/protobuf/commit/b0a1d4eaffaf50012fa71a8e931a47cf252d0370",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
    },
    {
      "url": "https://github.com/elixir-protobuf/protobuf/commit/e9432ad1c4099511905353cebcececa3a1f7c3ff",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
    },
    {
      "url": "https://github.com/elixir-protobuf/protobuf/security/advisories/GHSA-m497-c2h9-rvw6",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
    },
    {
      "url": "https://osv.dev/vulnerability/EEF-CVE-2026-104635",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
    }
  ],
  "vulnStatus": "Deferred",
  "weaknesses": [
    {
      "type": "Secondary",
      "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
      "description": [
        {
          "lang": "en",
          "value": "CWE-674"
        }
      ]
    }
  ],
  "descriptions": [
    {
      "lang": "en",
      "value": "Uncontrolled Recursion vulnerability in Protobuf.JSON.Decode in elixir-protobuf protobuf allows an unauthenticated remote attacker to crash the decoding process via a deeply nested JSON document. Any application that decodes attacker-supplied JSON with Protobuf.JSON.decode/3, Protobuf.JSON.decode!/3, or Protobuf.JSON.from_decoded/3 into a schema that contains a self-referential or cyclic message type is affected.\n\nIn lib/protobuf/json/decode.ex, the embedded-message clause of decode_singular/3 recurses into internal_from_json_data/3 once per nesting level without incrementing or checking the decoder's depth counter. The depth guard increase_depth_and_maybe_throw/1 covers only the Google.Protobuf.ListValue and Google.Protobuf.Struct clauses, so the recursion_limit option has no effect on user-defined message types. Each nesting level allocates a stack frame and heap objects, and a sufficiently deep document exhausts the memory of the decoding process. Confidentiality and integrity are not affected.\n\nThis issue affects protobuf: from 0.8.0 before 0.17.1."
    }
  ],
  "lastModified": "2026-10-09T17:07:31.693",
  "sourceIdentifier": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
}