← Back to CVE Explorer

CVE-2026-47778

Full vulnerability record from the local CVENow database.

Description

Envoy is an open source edge and service proxy designed for cloud-native applications. Prior to 1.35.11, 1.36.7, 1.37.3, and 1.38.1, a structural flaw was identified in DefaultCertValidator::verifySubjectAltName where the extracted DNS SAN string is cast to a C-style string using .c_str() before being passed to the Utility::dnsNameMatch() algorithm. If the attacker serves a certificate with a dNSName SAN containing an embedded NUL byte, the helper Utility::generalNameAsString captures the complete string including the NUL. However, when .c_str() evaluates it, implicit conversion to absl::string_view inside dnsNameMatch relies on strlen(), prematurely truncating the evaluation context. Envoy evaluates trucated string against the exact required config_san match and returns true, thereby successfully validating the string with the Nul byte for an upstream routing. This vulnerability is fixed in 1.35.11, 1.36.7, 1.37.3, and 1.38.1.

Severity
MEDIUM
CVSS score
4.4 (v3.1)
Vulnerability status
Analyzed
Source identifier
Published
2026-06-26 18:16:59.480000
Last modified
2026-10-25 17:10:00.197000
View original CVE JSON
{
  "id": "CVE-2026-47778",
  "sourceIdentifier": "[email protected]",
  "published": "2026-06-26T18:16:59.480",
  "lastModified": "2026-10-25T17:10:00.197",
  "vulnStatus": "Analyzed",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Envoy is an open source edge and service proxy designed for cloud-native applications. Prior to 1.35.11, 1.36.7, 1.37.3, and 1.38.1, a structural flaw was identified in DefaultCertValidator::verifySubjectAltName where the extracted DNS SAN string is cast to a C-style string using .c_str() before being passed to the Utility::dnsNameMatch() algorithm. If the attacker serves a certificate with a dNSName SAN containing an embedded NUL byte, the helper Utility::generalNameAsString captures the complete string including the NUL. However, when .c_str() evaluates it, implicit conversion to absl::string_view inside dnsNameMatch relies on strlen(), prematurely truncating the evaluation context. Envoy evaluates trucated string against the exact required config_san match and returns true, thereby successfully validating the string with the Nul byte for an upstream routing. This vulnerability is fixed in 1.35.11, 1.36.7, 1.37.3, and 1.38.1."
    },
    {
      "lang": "es",
      "value": "Envoy es un proxy de borde y de servicio de código abierto diseñado para aplicaciones nativas de la nube. Antes de 1.35.11, 1.36.7, 1.37.3 y 1.38.1, se identificó una falla estructural en DefaultCertValidator::verifySubjectAltName donde la cadena DNS SAN extraída se convierte a una cadena de estilo C usando .c_str() antes de ser pasada al algoritmo Utility::dnsNameMatch(). Si el atacante sirve un certificado con un dNSName SAN que contiene un byte NUL incrustado, la función auxiliar Utility::generalNameAsString captura la cadena completa incluyendo el NUL. Sin embargo, cuando .c_str() lo evalúa, la conversión implícita a absl::string_view dentro de dnsNameMatch se basa en strlen(), truncando prematuramente el contexto de evaluación. Envoy evalúa la cadena truncada contra la coincidencia exacta requerida de config_san y devuelve true, validando así exitosamente la cadena con el byte NUL para un enrutamiento ascendente. Esta vulnerabilidad se corrige en 1.35.11, 1.36.7, 1.37.3 y 1.38.1."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "envoyproxy",
          "product": "envoy",
          "versions": [
            {
              "version": ">= 1.38.0, < 1.38.1",
              "status": "affected"
            },
            {
              "version": ">= 1.37.0, < 1.37.3",
              "status": "affected"
            },
            {
              "version": ">= 1.36.0, < 1.36.7",
              "status": "affected"
            },
            {
              "version": "< 1.35.11",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N",
          "baseScore": 4.4,
          "baseSeverity": "MEDIUM",
          "attackVector": "NETWORK",
          "attackComplexity": "HIGH",
          "privilegesRequired": "HIGH",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "NONE",
          "availabilityImpact": "NONE"
        },
        "exploitabilityScore": 0.7,
        "impactScore": 3.6
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-06-27T02:52:00.418621Z",
          "id": "CVE-2026-47778",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-158"
        }
      ]
    }
  ],
  "configurations": [
    {
      "nodes": [
        {
          "operator": "OR",
          "negate": false,
          "cpeMatch": [
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:envoyproxy:envoy:*:*:*:*:*:*:*:*",
              "versionEndExcluding": "1.35.13",
              "matchCriteriaId": "3327F1D2-8A35-41E5-B720-06528D0856C0"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:envoyproxy:envoy:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "1.36.0",
              "versionEndExcluding": "1.36.9",
              "matchCriteriaId": "B1146A14-3C49-48C3-BC2A-1BBB202EBD84"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:envoyproxy:envoy:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "1.37.0",
              "versionEndExcluding": "1.37.5",
              "matchCriteriaId": "2057BF79-00D1-4154-9DC0-3F278C72F4E1"
            },
            {
              "vulnerable": true,
              "criteria": "cpe:2.3:a:envoyproxy:envoy:*:*:*:*:*:*:*:*",
              "versionStartIncluding": "1.38.0",
              "versionEndExcluding": "1.38.3",
              "matchCriteriaId": "2A218AD4-BF4B-46EA-96D7-3B25B7E71AC8"
            }
          ]
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/envoyproxy/envoy/security/advisories/GHSA-f8x4-rw5x-f3r7",
      "source": "[email protected]",
      "tags": [
        "Exploit",
        "Vendor Advisory",
        "Mitigation"
      ]
    },
    {
      "url": "https://github.com/envoyproxy/envoy/security/advisories/GHSA-f8x4-rw5x-f3r7",
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
      "tags": [
        "Exploit",
        "Vendor Advisory",
        "Mitigation"
      ]
    }
  ]
}