{"id":"PSF-2026-12","details":"When an Expat parser with a registered ElementDeclHandler parses an inline\ndocument type definition containing a deeply nested content model a C stack\noverflow occurs.","aliases":["CVE-2026-4224"],"modified":"2026-04-09T02:15:44.542917Z","published":"2026-03-16T17:52:26.639Z","database_specific":{"cwe_ids":[]},"references":[{"type":"FIX","url":"https://github.com/python/cpython/commit/eb0e8be3a7e11b87d198a2c3af1ed0eccf532768"},{"type":"ADVISORY","url":"https://mail.python.org/archives/list/security-announce@python.org/thread/5M7CGUW3XBRY7II4DK43KF7NQQ3TPZ6R/"},{"type":"REPORT","url":"https://github.com/python/cpython/issues/145986"},{"type":"WEB","url":"https://github.com/python/cpython/pull/145987"},{"type":"FIX","url":"https://github.com/python/cpython/commit/196edfb06a7458377d4d0f4b3cd41724c1f3bd4a"},{"type":"FIX","url":"https://github.com/python/cpython/commit/e0a8a6da90597a924b300debe045cdb4628ee1f3"},{"type":"FIX","url":"https://github.com/python/cpython/commit/642865ddf4b232da1f3b1f7abcfa3254c4bfe785"},{"type":"FIX","url":"https://github.com/python/cpython/commit/af856a7177326ac25d9f66cc6dd28b554d914fee"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/python/cpython","events":[{"introduced":"0"},{"fixed":"eb0e8be3a7e11b87d198a2c3af1ed0eccf532768"},{"fixed":"196edfb06a7458377d4d0f4b3cd41724c1f3bd4a"},{"fixed":"e0a8a6da90597a924b300debe045cdb4628ee1f3"},{"fixed":"642865ddf4b232da1f3b1f7abcfa3254c4bfe785"},{"fixed":"af856a7177326ac25d9f66cc6dd28b554d914fee"}]}],"versions":["2.0","2.1","2.2","2.3","2.4","2.5","2.6","2.7","3.0","3.1","3.2","3.3","3.4","3.5","3.6","3.7","3.8","3.9","legacy-trunk","v0.9.8","v0.9.9","v1.0.1","v1.0.2","v1.1","v1.1.1","v1.2","v1.2b1","v1.2b2","v1.2b3","v1.2b4","v1.3","v1.3b1","v1.4","v1.4b1","v1.4b2","v1.4b3","v1.5","v1.5.1","v1.5.2","v1.5.2a1","v1.5.2a2","v1.5.2b1","v1.5.2b2","v1.5.2c1","v1.5a1","v1.5a2","v1.5a3","v1.5a4","v1.5b1","v1.5b2","v1.6a1","v1.6a2","v2.0","v2.0.1","v2.0.1c1","v2.0b1","v2.0b2","v2.0c1","v2.1","v2.1.1","v2.1.1c1","v2.1.2","v2.1.2c1","v2.1.3","v2.1a1","v2.1a2","v2.1b1","v2.1b2","v2.1c1","v2.1c2","v2.2","v2.2.1","v2.2.1c1","v2.2.1c2","v2.2.2","v2.2.2b1","v2.2.3","v2.2.3c1","v2.2a3","v2.3.1","v2.3.2","v2.3.2c1","v2.3.3","v2.3.3c1","v2.3.4","v2.3.4c1","v2.3.5","v2.3.5c1","v2.3.6","v2.3.6c1","v2.3.7","v2.3.7c1","v2.3c1","v2.3c2","v2.4","v2.4.1","v2.4.1c1","v2.4.1c2","v2.4.2","v2.4.2c1","v2.4.3","v2.4.3c1","v2.4.4","v2.4.4c1","v2.4.5","v2.4.5c1","v2.4.6","v2.4.6c1","v2.4a1","v2.4a2","v2.4a3","v2.4b1","v2.4b2","v2.4c1","v2.5","v2.5.1","v2.5.1c1","v2.5.2","v2.5.2c1","v2.5.3","v2.5.3c1","v2.5.4","v2.5.5","v2.5.5c1","v2.5.5c2","v2.5.6","v2.5.6c1","v2.5a0","v2.5a1","v2.5a2","v2.5b1","v2.5b2","v2.5b3","v2.5c1","v2.5c2","v2.6","v2.6.1","v2.6.2","v2.6.2c1","v2.6.3","v2.6.3rc1","v2.6.4","v2.6.4rc1","v2.6.4rc2","v2.6.5","v2.6.5rc1","v2.6.5rc2","v2.6.6","v2.6.6rc1","v2.6.6rc2","v2.6.7","v2.6.8","v2.6.8rc1","v2.6.8rc2","v2.6.9","v2.6.9rc1","v2.6a1","v2.6a2","v2.6a3","v2.6b1","v2.6b2","v2.6b3","v2.6rc1","v2.6rc2","v2.7","v2.7.1","v2.7.10","v2.7.10rc1","v2.7.11","v2.7.11rc1","v2.7.12","v2.7.12rc1","v2.7.13","v2.7.13rc1","v2.7.14","v2.7.14rc1","v2.7.15","v2.7.15rc1","v2.7.16","v2.7.16rc1","v2.7.17","v2.7.17rc1","v2.7.18","v2.7.18rc1","v2.7.1rc1","v2.7.2","v2.7.2rc1","v2.7.3","v2.7.3rc1","v2.7.3rc2","v2.7.4","v2.7.4rc1","v2.7.5","v2.7.6","v2.7.6rc1","v2.7.7","v2.7.7rc1","v2.7.8","v2.7.9","v2.7.9rc1","v2.7a1","v2.7a2","v2.7a3","v2.7a4","v2.7b1","v2.7b2","v2.7rc1","v2.7rc2","v3.0","v3.0.1","v3.0a1","v3.0a2","v3.0a3","v3.0a4","v3.0a5","v3.0b1","v3.0b2","v3.0b3","v3.0rc1","v3.0rc2","v3.0rc3","v3.1","v3.1.1","v3.1.1rc1","v3.1.2","v3.1.2rc1","v3.1.3","v3.1.3rc1","v3.1.4","v3.1.4rc1","v3.1.5","v3.1.5rc1","v3.1.5rc2","v3.10.0","v3.10.0a1","v3.10.0a2","v3.10.0a3","v3.10.0a4","v3.10.0a5","v3.10.0a6","v3.10.0a7","v3.10.0b1","v3.10.0b2","v3.10.0b3","v3.10.0b4","v3.10.0rc1","v3.10.0rc2","v3.10.1","v3.10.10","v3.10.11","v3.10.12","v3.10.13","v3.10.14","v3.10.15","v3.10.16","v3.10.17","v3.10.18","v3.10.19","v3.10.2","v3.10.20","v3.10.3","v3.10.4","v3.10.5","v3.10.6","v3.10.7","v3.10.8","v3.10.9","v3.11.0","v3.11.0a1","v3.11.0a2","v3.11.0a3","v3.11.0a4","v3.11.0a5","v3.11.0a6","v3.11.0a7","v3.11.0b1","v3.11.0b2","v3.11.0b3","v3.11.0b4","v3.11.0b5","v3.11.0rc1","v3.11.0rc2","v3.11.1","v3.11.10","v3.11.11","v3.11.12","v3.11.13","v3.11.14","v3.11.15","v3.11.2","v3.11.3","v3.11.4","v3.11.5","v3.11.6","v3.11.7","v3.11.8","v3.11.9","v3.12.0","v3.12.0a1","v3.12.0a2","v3.12.0a3","v3.12.0a4","v3.12.0a5","v3.12.0a6","v3.12.0a7","v3.12.0b1","v3.12.0b2","v3.12.0b3","v3.12.0b4","v3.12.0rc1","v3.12.0rc2","v3.12.0rc3","v3.12.1","v3.12.10","v3.12.11","v3.12.12","v3.12.13","v3.12.2","v3.12.3","v3.12.4","v3.12.5","v3.12.6","v3.12.7","v3.12.8","v3.12.9","v3.13.0","v3.13.0a1","v3.13.0a2","v3.13.0a3","v3.13.0a4","v3.13.0a5","v3.13.0a6","v3.13.0b1","v3.13.0b2","v3.13.0b3","v3.13.0b4","v3.13.0rc1","v3.13.0rc2","v3.13.0rc3","v3.13.1","v3.13.10","v3.13.11","v3.13.12","v3.13.2","v3.13.3","v3.13.4","v3.13.5","v3.13.6","v3.13.7","v3.13.8","v3.13.9","v3.14.0","v3.14.0a1","v3.14.0a2","v3.14.0a3","v3.14.0a4","v3.14.0a5","v3.14.0a6","v3.14.0a7","v3.14.0b1","v3.14.0b2","v3.14.0b3","v3.14.0b4","v3.14.0rc1","v3.14.0rc2","v3.14.0rc3","v3.14.1","v3.14.2","v3.14.3","v3.15.0a1","v3.15.0a2","v3.15.0a3","v3.15.0a4","v3.15.0a5","v3.15.0a6","v3.15.0a7","v3.1a1","v3.1a2","v3.1b1","v3.1rc1","v3.1rc2","v3.2","v3.2.1","v3.2.1b1","v3.2.1rc1","v3.2.1rc2","v3.2.2","v3.2.2rc1","v3.2.3","v3.2.3rc1","v3.2.3rc2","v3.2.4","v3.2.4rc1","v3.2.5","v3.2.6","v3.2.6rc1","v3.2a1","v3.2a2","v3.2a3","v3.2a4","v3.2b1","v3.2b2","v3.2rc1","v3.2rc2","v3.2rc3","v3.3.0","v3.3.0a1","v3.3.0a2","v3.3.0a3","v3.3.0a4","v3.3.0b1","v3.3.0b2","v3.3.0rc1","v3.3.0rc2","v3.3.0rc3","v3.3.1","v3.3.1rc1","v3.3.2","v3.3.3","v3.3.3rc1","v3.3.3rc2","v3.3.4","v3.3.4rc1","v3.3.5","v3.3.5rc1","v3.3.5rc2","v3.3.6","v3.3.6rc1","v3.3.7","v3.3.7rc1","v3.4.0","v3.4.0a1","v3.4.0a2","v3.4.0a3","v3.4.0a4","v3.4.0b1","v3.4.0b2","v3.4.0b3","v3.4.0rc1","v3.4.0rc2","v3.4.0rc3","v3.4.1","v3.4.10","v3.4.10rc1","v3.4.1rc1","v3.4.2","v3.4.2rc1","v3.4.3","v3.4.3rc1","v3.4.4","v3.4.4rc1","v3.4.5","v3.4.5rc1","v3.4.6","v3.4.6rc1","v3.4.7","v3.4.7rc1","v3.4.8","v3.4.8rc1","v3.4.9","v3.4.9rc1","v3.5.0","v3.5.0a1","v3.5.0a2","v3.5.0a3","v3.5.0a4","v3.5.0b1","v3.5.0b2","v3.5.0b3","v3.5.0b4","v3.5.0rc1","v3.5.0rc2","v3.5.0rc3","v3.5.0rc4","v3.5.1","v3.5.10","v3.5.10rc1","v3.5.1rc1","v3.5.2","v3.5.2rc1","v3.5.3","v3.5.3rc1","v3.5.4","v3.5.4rc1","v3.5.5","v3.5.5rc1","v3.5.6","v3.5.6rc1","v3.5.7","v3.5.7rc1","v3.5.8","v3.5.8rc1","v3.5.8rc2","v3.5.9","v3.6.0","v3.6.0a1","v3.6.0a2","v3.6.0a3","v3.6.0a4","v3.6.0b1","v3.6.0b2","v3.6.0b3","v3.6.0b4","v3.6.0rc1","v3.6.0rc2","v3.6.1","v3.6.10","v3.6.10rc1","v3.6.11","v3.6.11rc1","v3.6.12","v3.6.13","v3.6.14","v3.6.15","v3.6.1rc1","v3.6.2","v3.6.2rc1","v3.6.2rc2","v3.6.3","v3.6.3rc1","v3.6.4","v3.6.4rc1","v3.6.5","v3.6.5rc1","v3.6.6","v3.6.6rc1","v3.6.7","v3.6.7rc1","v3.6.7rc2","v3.6.8","v3.6.8rc1","v3.6.9","v3.6.9rc1","v3.7.0","v3.7.0a1","v3.7.0a2","v3.7.0a3","v3.7.0a4","v3.7.0b1","v3.7.0b2","v3.7.0b3","v3.7.0b4","v3.7.0b5","v3.7.0rc1","v3.7.1","v3.7.10","v3.7.11","v3.7.12","v3.7.13","v3.7.14","v3.7.15","v3.7.16","v3.7.17","v3.7.1rc1","v3.7.1rc2","v3.7.2","v3.7.2rc1","v3.7.3","v3.7.3rc1","v3.7.4","v3.7.4rc1","v3.7.4rc2","v3.7.5","v3.7.5rc1","v3.7.6","v3.7.6rc1","v3.7.7","v3.7.7rc1","v3.7.8","v3.7.8rc1","v3.7.9","v3.8.0","v3.8.0a1","v3.8.0a2","v3.8.0a3","v3.8.0a4","v3.8.0b1","v3.8.0b2","v3.8.0b3","v3.8.0b4","v3.8.0rc1","v3.8.1","v3.8.10","v3.8.11","v3.8.12","v3.8.13","v3.8.14","v3.8.15","v3.8.16","v3.8.17","v3.8.18","v3.8.19","v3.8.1rc1","v3.8.2","v3.8.20","v3.8.2rc1","v3.8.2rc2","v3.8.3","v3.8.3rc1","v3.8.4","v3.8.4rc1","v3.8.5","v3.8.6","v3.8.6rc1","v3.8.7","v3.8.7rc1","v3.8.8","v3.8.8rc1","v3.8.9","v3.9.0","v3.9.0a1","v3.9.0a2","v3.9.0a3","v3.9.0a4","v3.9.0a5","v3.9.0a6","v3.9.0b1","v3.9.0b2","v3.9.0b3","v3.9.0b4","v3.9.0b5","v3.9.0rc1","v3.9.0rc2","v3.9.1","v3.9.10","v3.9.11","v3.9.12","v3.9.13","v3.9.14","v3.9.15","v3.9.16","v3.9.17","v3.9.18","v3.9.19","v3.9.1rc1","v3.9.2","v3.9.20","v3.9.21","v3.9.22","v3.9.23","v3.9.24","v3.9.25","v3.9.2rc1","v3.9.3","v3.9.4","v3.9.5","v3.9.6","v3.9.7","v3.9.8","v3.9.9"],"database_specific":{"vanir_signatures":[{"signature_type":"Line","signature_version":"v1","id":"PSF-2026-12-1145783a","deprecated":false,"digest":{"line_hashes":["188701065149302744903292699815939793812","225112604898349987932848100452221761889","315809415081504763774448517983428726485","234914540900971060388551978657761406688","334434387846354955252424964748103718253","92577595777153794298516478920240755603","220091315152752251870431644921983823692","64594070633644744458452436427253528782","317766121439223777877272278202999281929","207218985360249766238393458459053155997","332414183342212578807926701123345884195","109262523303062075784881971480718115622","185133554727397008437595184375700314015","241729027528270989764462123400629416761","87231708530024391086675116251100217789","304617511761474051284935710059506449414"],"threshold":0.9},"target":{"file":"Modules/pyexpat.c"},"source":"https://github.com/python/cpython/commit/196edfb06a7458377d4d0f4b3cd41724c1f3bd4a"},{"signature_type":"Line","signature_version":"v1","id":"PSF-2026-12-27a34095","deprecated":false,"digest":{"line_hashes":["334434387846354955252424964748103718253","92577595777153794298516478920240755603","220091315152752251870431644921983823692","64594070633644744458452436427253528782","317766121439223777877272278202999281929","207218985360249766238393458459053155997","332414183342212578807926701123345884195","109262523303062075784881971480718115622","185133554727397008437595184375700314015","241729027528270989764462123400629416761","87231708530024391086675116251100217789","304617511761474051284935710059506449414"],"threshold":0.9},"target":{"file":"Modules/pyexpat.c"},"source":"https://github.com/python/cpython/commit/af856a7177326ac25d9f66cc6dd28b554d914fee"},{"signature_type":"Line","signature_version":"v1","id":"PSF-2026-12-2927dc4a","deprecated":false,"digest":{"line_hashes":["188701065149302744903292699815939793812","104990101234447629474370288251779314633","45964732181733792050335254534549092314","175055763601073915128199888341767366186","334434387846354955252424964748103718253","92577595777153794298516478920240755603","220091315152752251870431644921983823692","64594070633644744458452436427253528782","317766121439223777877272278202999281929","207218985360249766238393458459053155997","332414183342212578807926701123345884195","109262523303062075784881971480718115622","185133554727397008437595184375700314015","241729027528270989764462123400629416761","87231708530024391086675116251100217789","304617511761474051284935710059506449414"],"threshold":0.9},"target":{"file":"Modules/pyexpat.c"},"source":"https://github.com/python/cpython/commit/642865ddf4b232da1f3b1f7abcfa3254c4bfe785"},{"signature_type":"Line","signature_version":"v1","id":"PSF-2026-12-53a4bf80","deprecated":false,"digest":{"line_hashes":["188701065149302744903292699815939793812","225112604898349987932848100452221761889","315809415081504763774448517983428726485","234914540900971060388551978657761406688","256181770944853825150391622812763691914","39371432675593491274749294336343520315","145357374662543992351282271062565055495","64594070633644744458452436427253528782","317766121439223777877272278202999281929","207218985360249766238393458459053155997","332414183342212578807926701123345884195","109262523303062075784881971480718115622","185133554727397008437595184375700314015","241729027528270989764462123400629416761","87231708530024391086675116251100217789","304617511761474051284935710059506449414"],"threshold":0.9},"target":{"file":"Modules/pyexpat.c"},"source":"https://github.com/python/cpython/commit/eb0e8be3a7e11b87d198a2c3af1ed0eccf532768"},{"signature_type":"Line","signature_version":"v1","id":"PSF-2026-12-a989f4f9","deprecated":false,"digest":{"line_hashes":["188701065149302744903292699815939793812","225112604898349987932848100452221761889","315809415081504763774448517983428726485","234914540900971060388551978657761406688","256181770944853825150391622812763691914","39371432675593491274749294336343520315","145357374662543992351282271062565055495","64594070633644744458452436427253528782","317766121439223777877272278202999281929","207218985360249766238393458459053155997","332414183342212578807926701123345884195","109262523303062075784881971480718115622","185133554727397008437595184375700314015","241729027528270989764462123400629416761","87231708530024391086675116251100217789","304617511761474051284935710059506449414"],"threshold":0.9},"target":{"file":"Modules/pyexpat.c"},"source":"https://github.com/python/cpython/commit/e0a8a6da90597a924b300debe045cdb4628ee1f3"}],"source":"https://github.com/psf/advisory-database/blob/main/advisories/python/PSF-2026-12.json"}}],"schema_version":"1.7.5"}