{"id":"CVE-2026-124317","kind":"vulnerability","aliases":["CVE-2026-124317"],"related":[],"title":"libexpat: out-of-bounds read in unknown-encoding handling leaks memory","description":"libexpat through 2.10.0 contains an out-of-bounds read vulnerability in unknown_toUtf8() and unknown_toUtf16() in xmltok.c when handling application-registered unknown encodings. Attackers can supply a document ending in a truncated multibyte sequence so the convert callback reads past the parse buffer, leaking adjacent memory or crashing applications.","summary":"libexpat through 2.10.0 reads past its parse buffer in unknown_toUtf8() and unknown_toUtf16() when an application-registered unknown encoding receives a truncated multibyte sequence. An attacker who supplies such a document can leak adjacent memory or crash the application.","severity":"medium","cvss":6.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["c","libexpat","package","xml-parsing"],"not_affected_if":["built-in-encodings-only","default-config"],"how_to_check":"- Check the installed libexpat version, for example with `pkg-config --modversion expat` on Linux or the bundled version in your dependency tree.\n- Look for applications that call XML_SetUnknownEncodingHandler to register custom encodings; only those paths are described as reachable.","fix":null,"status":"open","published_at":"2026-11-07T15:17:16+00:00","first_seen_at":"2026-11-07T15:47:57+00:00","triaged_at":"2026-11-07T15:48:14+00:00","updated_at":"2026-11-07T15:48:14+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-07T15:48:14Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"network","title":"libexpat: out-of-bounds read in unknown-encoding handling leaks memory","impact":"low","summary":"libexpat through 2.10.0 reads past its parse buffer in unknown_toUtf8() and unknown_toUtf16() when an application-registered unknown encoding receives a truncated multibyte sequence. An attacker who supplies such a document can leak adjacent memory or crash the application.","audience":"businesses","category":"package","nicknames":[],"who_cares":["libexpat","c","xml-parsing"],"confidence":0.6,"fix_status":"unknown","needs_auth":"no","worst_case":"Adjacent process memory leaks or the application crashes.","analyst_note":"Confirm the fixed libexpat version and whether the default build is affected; the sources only give the range through 2.10.0 and a VulnCheck third-party advisory.","how_to_check":"- Check the installed libexpat version, for example with `pkg-config --modversion expat` on Linux or the bundled version in your dependency tree.\n- Look for applications that call XML_SetUnknownEncodingHandler to register custom encodings; only those paths are described as reachable.","plain_action":"","needs_analyst":true,"not_affected_if":["default-config","built-in-encodings-only"],"who_is_affected":"Applications that parse untrusted XML and register their own unknown-encoding handlers with libexpat are the exposed case described in the sources. Programs that use only the built-in encodings are not described as affected. The sources do not say which fixed version to move to.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000716,"input_tokens":4287,"output_tokens":574,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-124317':16A,19A '-2026':15A,18A '2.10.0':28B,69C 'adjac':61B,114C 'applic':43B,66B,89C,118C 'application-regist':42B,88C 'attack':53B,93C 'bound':5A,75C 'buffer':33B,112C 'c':20B 'callback':107C 'contain':70C 'convert':106C 'crash':64B,117C 'cve':14A,17A 'document':58B,97C 'encod':10A,46B,92C 'end':98C 'handl':11A,87C 'leak':12A,60B,113C 'libexpat':1A,21B,26B,67C 'memori':13A,62B,115C 'multibyt':50B,102C 'out-of-bound':2A,72C 'packag':22B 'pars':25B,32B,111C 'past':30B,109C 'read':6A,29B,76C,108C 'receiv':47B 'regist':44B,90C 'sequenc':51B,103C 'suppli':55B,95C 'toutf16':39B,83C 'toutf8':36B,80C 'truncat':49B,101C 'unknown':9A,35B,38B,45B,79C,82C,91C 'unknown-encod':8A 'vulner':77C 'xml':24B 'xml-pars':23B 'xmltok.c':85C","nicknames":[],"mitigations":[],"who_affected":"Applications that parse untrusted XML and register their own unknown-encoding handlers with libexpat are the exposed case described in the sources. Programs that use only the built-in encodings are not described as affected. The sources do not say which fixed version to move to.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["c","libexpat","medium","package","xmlparsing"],"campaign_type":null,"search_a":"'-124317':16A,19A '-2026':15A,18A 'bound':5A 'cve':14A,17A 'encod':10A 'handl':11A 'leak':12A 'libexpat':1A 'memori':13A 'out-of-bound':2A 'read':6A 'unknown':9A 'unknown-encod':8A","search_b":"'2.10.0':28B 'adjac':61B 'applic':43B,66B 'application-regist':42B 'attack':53B 'buffer':33B 'c':20B 'crash':64B 'document':58B 'encod':46B 'leak':60B 'libexpat':21B,26B 'memori':62B 'multibyt':50B 'packag':22B 'pars':25B,32B 'past':30B 'read':29B 'receiv':47B 'regist':44B 'sequenc':51B 'suppli':55B 'toutf16':39B 'toutf8':36B 'truncat':49B 'unknown':35B,38B,45B 'xml':24B 'xml-pars':23B","search_c":"'2.10.0':69C 'adjac':114C 'applic':89C,118C 'application-regist':88C 'attack':93C 'bound':75C 'buffer':112C 'callback':107C 'contain':70C 'convert':106C 'crash':117C 'document':97C 'encod':92C 'end':98C 'handl':87C 'leak':113C 'libexpat':67C 'memori':115C 'multibyt':102C 'out-of-bound':72C 'pars':111C 'past':109C 'read':76C,108C 'regist':90C 'sequenc':103C 'suppli':95C 'toutf16':83C 'toutf8':80C 'truncat':101C 'unknown':79C,82C,91C 'vulner':77C 'xmltok.c':85C","first_public_at":"2026-11-07T15:17:16+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:N/VA:L/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","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-124317","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-124317","severity":null,"published_at":"2026-11-07T15:17:16+00:00","modified_at":"2026-11-07T15:17:16+00:00","first_seen_at":"2026-11-07T15:47:57+00:00","fetched_at":"2026-11-07T15:47:57+00:00","note":null}],"documents":[{"id":96384,"url":"https://www.vulncheck.com/advisories/libexpat-through-2.10.0-out-of-bounds-read-via-unknown-toutf8-and-unknown-toutf16","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}