{"id":"CVE-2025-15646","aliases":["DEBIAN-CVE-2025-15646","EUVD-2025-210396","GHSA-754r-h5mg-r795","UBUNTU-CVE-2025-15646"],"status":"published","title":"HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion","description":"HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion.\n\nSupport for the \u003ctemplate\u003e 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.\n\nAny caller that runs parse() with the default format =\u003e 'string', or with format =\u003e 'tree', on input containing a \u003ctemplate\u003e element serializes the over-read bytes into the returned result, disclosing bounded heap contents. format =\u003e 'callback' reaches a croak on the unhandled node type and is unaffected.","severity":{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"adp","from":"cve"},"epss":{"day":"2026-11-10","score":0.00671,"percentile":0.52367,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-125","CWE-843"],"published":"2026-07-01T14:38:03Z","modified":"2026-10-28T02:31:13Z","fixes":[{"ecosystem":"Debian:12","package":"libhtml-gumbo-perl","fixed_in":["0.18-3+deb12u1"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"libhtml-gumbo-perl","fixed_in":["0.18-5"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"libhtml-gumbo-perl","fixed_in":["0.18-5"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Debian:12","package":"libhtml-gumbo-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.18-3+deb12u1"}]}],"versions":["0.18-3"]},{"source":"osv","ecosystem":"Debian:13","package":"libhtml-gumbo-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.18-5"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"libhtml-gumbo-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.18-5"}]}]},{"source":"osv","ecosystem":"Ubuntu:18.04:LTS","package":"libhtml-gumbo-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.17-1build1"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"libhtml-gumbo-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.18-2build1","0.18-2build2"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"libhtml-gumbo-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.18-2build3","0.18-2build4"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"libhtml-gumbo-perl","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.18-3build1","0.18-3build2","0.18-3build3","0.18-3build4","0.18-3build5"]}],"products":[{"vendor":"bps","product":"html::gumbo"}],"references":[{"url":"https://github.com/bestpractical/HTML-Gumbo/commit/15c0598909d4a64f47ef0a1abc5051f4e113c186.patch","tags":["patch","fix"]},{"url":"https://metacpan.org/release/BPS/HTML-Gumbo-0.19/changes","tags":["release-notes","advisory"]},{"url":"https://bugs.debian.org/1104789","tags":["issue-tracking","report"]},{"url":"http://www.openwall.com/lists/oss-security/2026/07/01/7","tags":["web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-15646","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-754r-h5mg-r795"},{"url":"https://cpan.org/modules","tags":["web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/15xxx/CVE-2025-15646.json","tags":["advisory"]},{"url":"https://github.com/bestpractical/HTML-Gumbo","tags":["package"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2025-15646","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2025-15646","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2025-15646","tags":["report"]},{"url":"https://github.com/ruz/HTML-Gumbo/issues/6","tags":["report"]},{"url":"https://github.com/bestpractical/html-gumbo/commit/15c0598909d4a64f47ef0a1abc5051f4e113c186","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2025-15646","title":"HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion","description":"HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion.\n\nSupport for the \u003ctemplate\u003e 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.\n\nAny caller that runs parse() with the default format =\u003e 'string', or with format =\u003e 'tree', on input containing a \u003ctemplate\u003e element serializes the over-read bytes into the returned result, disclosing bounded heap contents. format =\u003e 'callback' reaches a croak on the unhandled node type and is unaffected.","status":"published","published":"2026-07-01T14:38:03.727Z","modified":"2026-07-01T18:09:08.371Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"adp"}],"cwes":["CWE-843","CWE-125"],"updated_at":"2026-11-02T14:32:37.351404Z"}],"euvd":[{"id":"EUVD-2025-210396","description":"HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion.\n\nSupport for the \u003ctemplate\u003e 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.\n\nAny caller that runs parse() with the default format =\u003e 'string', or with format =\u003e 'tree', on input containing a \u003ctemplate\u003e element serializes the over-read bytes into the returned result, disclosing bounded heap contents. format =\u003e 'callback' reaches a croak on the unhandled node type and is unaffected.","status":"published","published":"2026-07-01T14:38:03Z","modified":"2026-07-01T18:09:08Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T18:20:19.066641Z"}],"ghsa":[{"id":"GHSA-754r-h5mg-r795","title":"HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion.\n\nSupport for...","description":"HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion.\n\nSupport for the \u003ctemplate\u003e 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.\n\nAny caller that runs parse() with the default format =\u003e 'string', or with format =\u003e 'tree', on input containing a \u003ctemplate\u003e element serializes the over-read bytes into the returned result, disclosing bounded heap contents. format =\u003e 'callback' reaches a croak on the unhandled node type and is unaffected.","status":"published","published":"2026-07-01T18:31:47Z","modified":"2026-07-01T21:36:15Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-125"],"updated_at":"2026-11-02T15:09:10.245383Z"}],"nvd":[{"id":"CVE-2025-15646","description":"HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion.\n\nSupport for the \u003ctemplate\u003e 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.\n\nAny caller that runs parse() with the default format =\u003e 'string', or with format =\u003e 'tree', on input containing a \u003ctemplate\u003e element serializes the over-read bytes into the returned result, disclosing bounded heap contents. format =\u003e 'callback' reaches a croak on the unhandled node type and is unaffected.","status":"published","published":"2026-07-01T16:16:29.657Z","modified":"2026-10-06T22:10:00.247Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"secondary"}],"cwes":["CWE-125","CWE-843"],"updated_at":"2026-11-02T14:12:02.535029Z"}],"osv":[{"id":"CVE-2025-15646","title":"HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion","description":"HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion.\n\nSupport for the \u003ctemplate\u003e 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.\n\nAny caller that runs parse() with the default format =\u003e 'string', or with format =\u003e 'tree', on input containing a \u003ctemplate\u003e element serializes the over-read bytes into the returned result, disclosing bounded heap contents. format =\u003e 'callback' reaches a croak on the unhandled node type and is unaffected.","status":"published","published":"2026-07-01T14:38:03.727Z","modified":"2026-10-28T02:31:13.661665395Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-125","CWE-843"],"updated_at":"2026-11-02T15:44:46.340268Z"},{"id":"DEBIAN-CVE-2025-15646","description":"HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion.  Support for the \u003ctemplate\u003e 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 =\u003e 'string', or with format =\u003e 'tree', on input containing a \u003ctemplate\u003e element serializes the over-read bytes into the returned result, disclosing bounded heap contents. format =\u003e 'callback' reaches a croak on the unhandled node type and is unaffected.","status":"published","published":"2026-07-01T16:16:29.657Z","modified":"2026-10-07T09:47:28.165933826Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:45:45.102284Z"},{"id":"UBUNTU-CVE-2025-15646","description":"HTML::Gumbo versions before 0.19 for Perl disclose heap memory via type confusion. Support for the \u003ctemplate\u003e 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 =\u003e 'string', or with format =\u003e 'tree', on input containing a \u003ctemplate\u003e element serializes the over-read bytes into the returned result, disclosing bounded heap contents. format =\u003e 'callback' reaches a croak on the unhandled node type and is unaffected.","status":"published","published":"2026-07-01T16:16:00Z","modified":"2026-07-09T17:15:09.394518212Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T16:55:20.144818Z"}]}}
