← Back to CVE Explorer

CVE-2026-15534

Full vulnerability record from the local CVENow database.

Description

Perl versions through 5.45.1 have out-of-bounds heap reads and writes during regular expression matching via an undersized superlinear cache in S_regmatch. The regex engine's superlinear cache holds one bit per subject position for each participating WHILEM node, so the bit count is the subject length plus one times the number of nodes. Nothing checks that product for positive overflow of the signed 32-bit count: a 286331153 byte subject matched against a pattern with 15 participating nodes stores the count as 14, leaving a two byte cache. The cache is then indexed from the real match position and node number, so reads go past the end of the allocation, and on failure CACHEsayNO sets a bit past it. A caller that matches an attacker controlled subject of this size against a pattern of this shape can crash the process or corrupt heap memory.

Severity
MEDIUM
CVSS score
5.7 (v3.1)
Vulnerability status
Awaiting Analysis
Source identifier
9b29abf9-4ab0-4765-b253-1875cd9b441e
Published
2026-08-09 18:16:42.800000
Last modified
2026-10-23 20:10:00.160000
View original CVE JSON
{
  "id": "CVE-2026-15534",
  "sourceIdentifier": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
  "published": "2026-08-09T18:16:42.800",
  "lastModified": "2026-10-23T20:10:00.160",
  "vulnStatus": "Awaiting Analysis",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "Perl versions through 5.45.1 have out-of-bounds heap reads and writes during regular expression matching via an undersized superlinear cache in S_regmatch.\n\nThe regex engine's superlinear cache holds one bit per subject position for each participating WHILEM node, so the bit count is the subject length plus one times the number of nodes. Nothing checks that product for positive overflow of the signed 32-bit count: a 286331153 byte subject matched against a pattern with 15 participating nodes stores the count as 14, leaving a two byte cache. The cache is then indexed from the real match position and node number, so reads go past the end of the allocation, and on failure CACHEsayNO sets a bit past it.\n\nA caller that matches an attacker controlled subject of this size against a pattern of this shape can crash the process or corrupt heap memory."
    },
    {
      "lang": "es",
      "value": "Las versiones de Perl hasta la 5.45.1 tienen lecturas y escrituras de montón fuera de límites durante la coincidencia de expresiones regulares a través de una caché superlineal de tamaño insuficiente en S_regmatch.\n\nLa caché superlineal del motor de expresiones regulares contiene un bit por posición del sujeto para cada nodo WHILEM participante, por lo que el recuento de bits es la longitud del sujeto más uno multiplicado por el número de nodos. Nada verifica ese producto para un desbordamiento positivo del recuento firmado de 32 bits: un sujeto de 286331153 bytes emparejado contra un patrón con 15 nodos participantes almacena el recuento como 14, dejando una caché de dos bytes. La caché es entonces indexada desde la posición de coincidencia real y el número de nodo, por lo que las lecturas van más allá del final de la asignación, y en caso de fallo CACHEsayNO establece un bit más allá de ella.\n\nUn llamador que empareja un sujeto de este tamaño controlado por el atacante contra un patrón de esta forma puede bloquear el proceso o corromper la memoria del montón."
    }
  ],
  "affected": [
    {
      "source": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
      "affectedData": [
        {
          "defaultStatus": "unaffected",
          "collectionURL": "https://cpan.org/modules",
          "packageName": "perl",
          "modules": [
            "perl"
          ],
          "programFiles": [
            "regexec.c"
          ],
          "programRoutines": [
            {
              "name": "S_regmatch"
            }
          ],
          "repo": "https://github.com/Perl/perl5",
          "packageURL": "pkg:cpan/perl",
          "versions": [
            {
              "version": "0",
              "lessThanOrEqual": "5.45.1",
              "versionType": "custom",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:H",
          "baseScore": 5.7,
          "baseSeverity": "MEDIUM",
          "attackVector": "LOCAL",
          "attackComplexity": "HIGH",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "NONE",
          "integrityImpact": "LOW",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 1.4,
        "impactScore": 4.2
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-08-12T17:38:23.129391Z",
          "id": "CVE-2026-15534",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-125"
        },
        {
          "lang": "en",
          "value": "CWE-190"
        },
        {
          "lang": "en",
          "value": "CWE-787"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/Perl/perl5/commit/54cf3d44cbbedd17d774e9a37921963e8fd5d0cb.patch",
      "source": "9b29abf9-4ab0-4765-b253-1875cd9b441e"
    },
    {
      "url": "https://github.com/Perl/perl5/commit/568e6fd238867bb9e99fa3f47cba3169009239e0.patch",
      "source": "9b29abf9-4ab0-4765-b253-1875cd9b441e"
    },
    {
      "url": "http://www.openwall.com/lists/oss-security/2026/08/09/12",
      "source": "af854a3a-2127-422b-91ae-364da2661108"
    },
    {
      "url": "http://www.openwall.com/lists/oss-security/2026/08/09/13",
      "source": "af854a3a-2127-422b-91ae-364da2661108"
    }
  ]
}