{"id":"CVE-2026-76875","aliases":["DEBIAN-CVE-2026-76875","EUVD-2026-88811","GHSA-4h3r-h8c5-46cf","UBUNTU-CVE-2026-76875"],"status":"published","title":"PyPy pyexpat ExternalEntityParserCreate Use-After-Free","description":"PyPy before versions 3.11.16 and 3.12.14 contains a use-after-free vulnerability in the pyexpat module's ExternalEntityParserCreate function that allows attackers to corrupt memory by supplying a crafted XML document to applications that create external-entity sub-parsers without retaining a reference to the parent parser. The child parser retains a raw C back-pointer to the parent parser struct while PyPy's tracing garbage collector can free the parent's C struct, causing bundled libexpat to dereference the freed pointer on every parsed token, producing memory corruption.","severity":{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.0024,"percentile":0.15201,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-416"],"published":"2026-09-29T12:45:19Z","modified":"2026-11-08T14:08:53Z","fixes":[{"ecosystem":"Debian:14","package":"pypy3","fixed_in":["8.0.0+dfsg-1"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Debian:12","package":"pypy3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["7.3.11+dfsg-2","7.3.11+dfsg-2+deb12u1","7.3.11+dfsg-2+deb12u2","7.3.11+dfsg-2+deb12u3","7.3.12+dfsg-1","7.3.12~rc1+dfsg-1","7.3.12~rc2+dfsg-1","7.3.13+dfsg-1","7.3.14+dfsg-1","7.3.15+dfsg-1","7.3.16+dfsg-1","7.3.16+dfsg-2","7.3.17+dfsg-1","7.3.17+dfsg-2","7.3.17+dfsg-3","7.3.18+dfsg-1","7.3.18+dfsg-2","7.3.19+dfsg-1","7.3.19+dfsg-2","7.3.20+dfsg-1","7.3.20+dfsg-2","7.3.20+dfsg-3","7.3.20+dfsg-4","7.3.21+dfsg-1","7.3.21+dfsg-2","7.3.21+dfsg-3","7.3.21+dfsg-4","7.3.22+dfsg-1","7.3.23+dfsg-1","7.3.23+dfsg-2","8.0.0+dfsg-1"]},{"source":"osv","ecosystem":"Debian:13","package":"pypy3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["7.3.19+dfsg-2","7.3.20+dfsg-1","7.3.20+dfsg-2","7.3.20+dfsg-3","7.3.20+dfsg-4","7.3.21+dfsg-1","7.3.21+dfsg-2","7.3.21+dfsg-3","7.3.21+dfsg-4","7.3.22+dfsg-1","7.3.23+dfsg-1","7.3.23+dfsg-2","8.0.0+dfsg-1"]},{"source":"osv","ecosystem":"Debian:14","package":"pypy3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.0.0+dfsg-1"}]}],"versions":["7.3.19+dfsg-2","7.3.20+dfsg-1","7.3.20+dfsg-2","7.3.20+dfsg-3","7.3.20+dfsg-4","7.3.21+dfsg-1","7.3.21+dfsg-2","7.3.21+dfsg-3","7.3.21+dfsg-4","7.3.22+dfsg-1","7.3.23+dfsg-1","7.3.23+dfsg-2"]},{"source":"osv","ecosystem":"Ubuntu:20.04:LTS","package":"pypy3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["7.1.1+dfsg-1","7.2.0+dfsg-1","7.3.0+dfsg-1","7.3.0+dfsg-1ubuntu2","7.3.0+dfsg-1ubuntu3","7.3.1+dfsg-4","7.3.1+dfsg-4ubuntu0.1"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"pypy3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["7.3.5+dfsg-2","7.3.7+dfsg-1","7.3.7+dfsg-4","7.3.7+dfsg-5","7.3.8+dfsg-2","7.3.9+dfsg-1","7.3.9+dfsg-1ubuntu0.1"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"pypy3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["7.3.12+dfsg-1","7.3.13+dfsg-1","7.3.14+dfsg-1","7.3.15+dfsg-1","7.3.15+dfsg-1build2","7.3.15+dfsg-1build3"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"pypy3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["7.3.20+dfsg-4","7.3.23+dfsg-1ubuntu1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"pypy3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["7.3.20+dfsg-3","7.3.20+dfsg-4"]}],"products":[{"vendor":"pypy","product":"pypy"}],"references":[{"url":"https://doc.pypy.org/release-v8.0.0.html","tags":["release-notes","advisory","report"]},{"url":"https://github.com/pypy/pypy/releases/tag/release-pypy3.12-v8.0.0","tags":["patch","release-notes","fix","report"]},{"url":"https://github.com/pypy/pypy/releases/tag/release-pypy3.11-v8.0.0","tags":["patch","release-notes","fix","report"]},{"url":"https://www.vulncheck.com/advisories/pypy-pyexpat-externalentityparsercreate-use-after-free","tags":["third-party-advisory","advisory","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-76875","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-4h3r-h8c5-46cf"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/76xxx/CVE-2026-76875.json","tags":["advisory"]},{"url":"https://github.com/pypy/pypy","tags":["package"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-76875","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-76875","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-76875","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-76875","title":"PyPy pyexpat ExternalEntityParserCreate Use-After-Free","description":"PyPy before versions 3.11.16 and 3.12.14 contains a use-after-free vulnerability in the pyexpat module's ExternalEntityParserCreate function that allows attackers to corrupt memory by supplying a crafted XML document to applications that create external-entity sub-parsers without retaining a reference to the parent parser. The child parser retains a raw C back-pointer to the parent parser struct while PyPy's tracing garbage collector can free the parent's C struct, causing bundled libexpat to dereference the freed pointer on every parsed token, producing memory corruption.","status":"published","published":"2026-09-29T12:45:19.797Z","modified":"2026-11-08T14:08:53.277Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N","level":"medium","assessor":"cna"},{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-416"],"updated_at":"2026-11-08T15:43:34.234229Z"}],"euvd":[{"id":"EUVD-2026-88811","description":"PyPy before versions 3.11.16 and 3.12.14 contains a use-after-free vulnerability in the pyexpat module's ExternalEntityParserCreate function that allows attackers to corrupt memory by supplying a crafted XML document to applications that create external-entity sub-parsers without retaining a reference to the parent parser. The child parser retains a raw C back-pointer to the parent parser struct while PyPy's tracing garbage collector can free the parent's C struct, causing bundled libexpat to dereference the freed pointer on every parsed token, producing memory corruption.","status":"published","published":"2026-09-29T12:45:19Z","modified":"2026-11-08T14:08:53Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-08T15:13:06.469155Z"}],"ghsa":[{"id":"GHSA-4h3r-h8c5-46cf","title":"PyPy before versions 3.11.16 and 3.12.14 contains a use-after-free vulnerability in the pyexpat...","description":"PyPy before versions 3.11.16 and 3.12.14 contains a use-after-free vulnerability in the pyexpat module's ExternalEntityParserCreate function that allows attackers to corrupt memory by supplying a crafted XML document to applications that create external-entity sub-parsers without retaining a reference to the parent parser. The child parser retains a raw C back-pointer to the parent parser struct while PyPy's tracing garbage collector can free the parent's C struct, causing bundled libexpat to dereference the freed pointer on every parsed token, producing memory corruption.","status":"published","published":"2026-09-29T15:31:45Z","modified":"2026-09-29T15:31:45Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","level":"medium"},{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/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","level":"medium"}],"cwes":["CWE-416"],"updated_at":"2026-11-02T15:12:33.186319Z"}],"nvd":[{"id":"CVE-2026-76875","description":"PyPy before versions 3.11.16 and 3.12.14 contains a use-after-free vulnerability in the pyexpat module's ExternalEntityParserCreate function that allows attackers to corrupt memory by supplying a crafted XML document to applications that create external-entity sub-parsers without retaining a reference to the parent parser. The child parser retains a raw C back-pointer to the parent parser struct while PyPy's tracing garbage collector can free the parent's C struct, causing bundled libexpat to dereference the freed pointer on every parsed token, producing memory corruption.","status":"published","published":"2026-09-29T13:17:52.28Z","modified":"2026-10-02T13:17:55.747Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/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","level":"medium","assessor":"secondary"},{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","level":"medium","assessor":"secondary"}],"cwes":["CWE-416"],"updated_at":"2026-11-02T14:12:52.413234Z"}],"osv":[{"id":"CVE-2026-76875","title":"PyPy pyexpat ExternalEntityParserCreate Use-After-Free","description":"PyPy before versions 3.11.16 and 3.12.14 contains a use-after-free vulnerability in the pyexpat module's ExternalEntityParserCreate function that allows attackers to corrupt memory by supplying a crafted XML document to applications that create external-entity sub-parsers without retaining a reference to the parent parser. The child parser retains a raw C back-pointer to the parent parser struct while PyPy's tracing garbage collector can free the parent's C struct, causing bundled libexpat to dereference the freed pointer on every parsed token, producing memory corruption.","status":"published","published":"2026-09-29T12:45:19.797Z","modified":"2026-11-09T02:30:52.476108159Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-416"],"updated_at":"2026-11-09T03:16:44.651171Z"},{"id":"DEBIAN-CVE-2026-76875","description":"PyPy before versions 3.11.16 and 3.12.14 contains a use-after-free vulnerability in the pyexpat module's ExternalEntityParserCreate function that allows attackers to corrupt memory by supplying a crafted XML document to applications that create external-entity sub-parsers without retaining a reference to the parent parser. The child parser retains a raw C back-pointer to the parent parser struct while PyPy's tracing garbage collector can free the parent's C struct, causing bundled libexpat to dereference the freed pointer on every parsed token, producing memory corruption.","status":"published","published":"2026-09-29T13:17:52.28Z","modified":"2026-10-03T09:00:14.221492508Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/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","level":"medium"}],"updated_at":"2026-11-02T15:46:03.502256Z"},{"id":"UBUNTU-CVE-2026-76875","description":"PyPy before versions 3.11.16 and 3.12.14 contains a use-after-free vulnerability in the pyexpat module's ExternalEntityParserCreate function that allows attackers to corrupt memory by supplying a crafted XML document to applications that create external-entity sub-parsers without retaining a reference to the parent parser. The child parser retains a raw C back-pointer to the parent parser struct while PyPy's tracing garbage collector can free the parent's C struct, causing bundled libexpat to dereference the freed pointer on every parsed token, producing memory corruption.","status":"published","published":"2026-09-29T13:17:00Z","modified":"2026-10-17T13:01:07.047091091Z","cvss":[{"version":"3.1","score":5.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","level":"medium"},{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-02T16:57:13.483205Z"}]}}
