Description
HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion.

Support for the <template> element was added to libgumbo 0.10.0 in 2015, but the walk_tree function in lib/HTML/Gumbo.xs was not updated to support it. The element was treated as a text-node, where strlen() over-reads the heap block that the pointer addresses.

Any caller that runs parse() with the default format => 'string', or with format => 'tree', on input containing a <template> element serializes the over-read bytes into the returned result, disclosing bounded heap contents. format => 'callback' reaches a croak on the unhandled node type and is unaffected.
Published: 2026-07-01
Score: 9.8 Critical
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

HTML::Gumbo before version 0.19 mishandles the <template> element during DOM traversal. The walk_tree function treats a <template> node as an ordinary text node and applies strlen() to a pointer that actually refers to an unsupported out‑of‑bounds read. The over‑read bytes are serialized back into the output when parse() is called with format='string' or format='tree', exposing a bounded portion of heap memory. This manifests as data leakage rather than code execution.

Affected Systems

BPS:HTML::Gumbo for Perl, all releases earlier than 0.19 are vulnerable. No other listed vendors or products are affected.

Risk and Exploitability

With a CVSS score of 9.8 the vulnerability is classified as critical. The EPSS score of less than 1% indicates a very low but non‑zero exploitation likelihood, and it is not listed in CISA’s KEV catalog. The likely attack vector involves parsing user‑supplied HTML that contains a <template> element using the 'string' or 'tree' format; the over‑read bytes are then serialized into the output, disclosing bounded heap memory. Based on the description, it is inferred that the attacker must be able to supply such input to the application.

Generated by OpenCVE AI on July 21, 2026 at 14:19 UTC.

Remediation

Vendor Solution

Upgrade to HTML-Gumbo 0.19 or later, which adds GUMBO_NODE_TEMPLATE to the container node types handled by walk_tree.


OpenCVE Recommended Actions

  • Upgrade to HTML-Gumbo 0.19 or later, which introduces proper handling for GUMBO_NODE_TEMPLATE and fixes the CWE-125 out‑of‑bounds read and CWE-843 incorrect type conversion issues.
  • If an upgrade is not possible, switch the parsing format to 'callback', which safely aborts when encountering unsupported node types and prevents the out‑of‑bounds read.
  • Before parsing, remove or escape <template> tags from incoming HTML to avoid processing unsupported node types.

Generated by OpenCVE AI on July 21, 2026 at 14:19 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 06 Jul 2026 23:15:00 +0000

Type Values Removed Values Added
First Time appeared Bps
Bps html::gumbo
Vendors & Products Bps
Bps html::gumbo

Wed, 01 Jul 2026 18:30:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'}

ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Wed, 01 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Description HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion. Support for the <template> element was added to libgumbo 0.10.0 in 2015, but the walk_tree function in lib/HTML/Gumbo.xs was not updated to support it. The element was treated as a text-node, where strlen() over-reads the heap block that the pointer addresses. Any caller that runs parse() with the default format => 'string', or with format => 'tree', on input containing a <template> element serializes the over-read bytes into the returned result, disclosing bounded heap contents. format => 'callback' reaches a croak on the unhandled node type and is unaffected.
Title HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion
Weaknesses CWE-125
CWE-843
References

cve-icon MITRE

Status: PUBLISHED

Assigner: CPANSec

Published:

Updated: 2026-07-01T18:09:08.371Z

Reserved: 2026-05-22T10:47:01.107Z

Link: CVE-2025-15646

cve-icon Vulnrichment

Updated: 2026-07-01T17:36:44.275Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-21T14:30:08Z

Weaknesses
  • CWE-125

    Out-of-bounds Read

  • CWE-843

    Access of Resource Using Incompatible Type ('Type Confusion')