Skip to content
Heist/ feed
Back to feed
UnratedFix available

Fix CVE(s): CVE-2026-56131, CVE-2026-76957

Type: advisorySources: OSV

* SECURITY UPDATE: Use-after-free because the application-supplied XML_Encoding.convert and XML_Encoding.release callbacks were left outside handler call depth tracking, so a same-parser call made from inside them freed state the running parse still owned (libexpat before 2.8.4) - debian/patches/CVE-2026-76957.patch: install the trampolines callUnknownEncodingConvert() and callUnknownEncodingRelease() in handleUnknownEncoding(), passing the parser itself to XmlInitUnknownEncoding() as the converter's user data, so the reentrancy counter is bumped around the application callbacks and the existing forbidden-call rejection rules apply to them too; routing release through the trampoline also clears m_unknownEncodingRelease/m_unknownEncodingData so it runs exactly once on every path; also carries upstream's regression test into tests/runtests.c (2.2.6 has neither tests/misc_tests.c nor tests/handlers.c, so the test brings a local equivalent of forbidden_calls_character_handler()) - CVE-2026-76957 * SECURITY UPDATE: Use-after-free because handler call depth tracking was absent entirely, leaving XML_GetBuffer, XML_Parse, XML_ParseBuffer, XML_ParserFree, XML_ParserReset and XML_ResumeParser callable from inside a handler, and the XML_TOK_DATA_CHARS handler calls in doCdataSection() untracked (libexpat before 2.8.2) - debian/patches/CVE-2026-56131.patch: introduce m_handlerCallDepth with beforeHandler()/afterHandler() around every handler invocation and isCalledFromInsideHandler() gua

Products
expat, libexpat1, libexpat1-dev
Affected versions
Not specified
Fixed versions
2.2.6-2+deb10u7+tuxcare.els9
CVEs
CVE-2026-50219, CVE-2026-56131, CVE-2026-56412, CVE-2026-76957
Confirmed fixed CVEs
Not specified
Updated in this feed
1 Nov 2026, 11:50 UTC · Revision 1

Source evidence

Fix CVE(s): CVE-2026-56131, CVE-2026-76957

core-osv · Original source

Published 9 Sept 2026, 09:35 UTC

* SECURITY UPDATE: Use-after-free because the application-supplied XML_Encoding.convert and XML_Encoding.release callbacks were left outside handler call depth tracking, so a same-parser call made from inside them freed state the running parse still owned (libexpat before 2.8.4) - debian/patches/CVE-2026-76957.patch: install the trampolines callUnknownEncodingConvert() and callUnknownEncodingRelease() in handleUnknownEncoding(), passing the parser itself to XmlInitUnknownEncoding() as the converter's user data, so the reentrancy counter is bumped around the application callbacks and the existing forbidden-call rejection rules apply to them too; routing release through the trampoline also clears m_unknownEncodingRelease/m_unknownEncodingData so it runs exactly once on every path; also carries upstream's regression test into tests/runtests.c (2.2.6 has neither tests/misc_tests.c nor tests/handlers.c, so the test brings a local equivalent of forbidden_calls_character_handler()) - CVE-2026-76957 * SECURITY UPDATE: Use-after-free because handler call depth tracking was absent entirely, leaving XML_GetBuffer, XML_Parse, XML_ParseBuffer, XML_ParserFree, XML_ParserReset and XML_ResumeParser callable from inside a handler, and the XML_TOK_DATA_CHARS handler calls in doCdataSection() untracked (libexpat before 2.8.2) - debian/patches/CVE-2026-56131.patch: introduce m_handlerCallDepth with beforeHandler()/afterHandler() around every handler invocation and isCalledFromInsideHandler() gua

osv:CLSA-2026-1788369761

expat

Fixed versions: 2.2.6-2+deb10u7+tuxcare.els9

libexpat1

Fixed versions: 2.2.6-2+deb10u7+tuxcare.els9

libexpat1-dev

Fixed versions: 2.2.6-2+deb10u7+tuxcare.els9

Complete source record
{
  "id": "e366a9541d48e5f9c889e09b77976fdf49d53486080e0ce55bb8e8db5fcee4f3",
  "url": "https://osv.dev/vulnerability/CLSA-2026-1788369761",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Fix CVE(s): CVE-2026-56131, CVE-2026-76957",
    "summary": "* SECURITY UPDATE: Use-after-free because the application-supplied XML_Encoding.convert and XML_Encoding.release callbacks were left outside handler call depth tracking, so a same-parser call made from inside them freed state the running parse still owned (libexpat before 2.8.4) - debian/patches/CVE-2026-76957.patch: install the trampolines callUnknownEncodingConvert() and callUnknownEncodingRelease() in handleUnknownEncoding(), passing the parser itself to XmlInitUnknownEncoding() as the converter's user data, so the reentrancy counter is bumped around the application callbacks and the existing forbidden-call rejection rules apply to them too; routing release through the trampoline also clears m_unknownEncodingRelease/m_unknownEncodingData so it runs exactly once on every path; also carries upstream's regression test into tests/runtests.c (2.2.6 has neither tests/misc_tests.c nor tests/handlers.c, so the test brings a local equivalent of forbidden_calls_character_handler()) - CVE-2026-76957 * SECURITY UPDATE: Use-after-free because handler call depth tracking was absent entirely, leaving XML_GetBuffer, XML_Parse, XML_ParseBuffer, XML_ParserFree, XML_ParserReset and XML_ResumeParser callable from inside a handler, and the XML_TOK_DATA_CHARS handler calls in doCdataSection() untracked (libexpat before 2.8.2) - debian/patches/CVE-2026-56131.patch: introduce m_handlerCallDepth with beforeHandler()/afterHandler() around every handler invocation and isCalledFromInsideHandler() gua",
    "evidence": "osv:CLSA-2026-1788369761",
    "products": [
      {
        "name": {
          "value": "expat",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "2.2.6-2+deb10u7+tuxcare.els9",
            "evidence": "/affected/0/ranges"
          }
        ],
        "affected_versions": []
      },
      {
        "name": {
          "value": "libexpat1",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "2.2.6-2+deb10u7+tuxcare.els9",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      },
      {
        "name": {
          "value": "libexpat1-dev",
          "evidence": "/affected/2/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "2.2.6-2+deb10u7+tuxcare.els9",
            "evidence": "/affected/2/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "CLSA-2026-1788369761",
      "aliases": [
        "CLSA-2026-1788369761"
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "2.2.6-2+deb10u7+tuxcare.els9"
                }
              ]
            }
          ],
          "package": {
            "name": "expat",
            "purl": "pkg:deb/tuxcare/expat?distro=debian-10",
            "ecosystem": "TuxCare:Debian:10"
          },
          "database_specific": {
            "source": "https://github.com/cloudlinux/tuxcare-osv/tree/main/data/els_os/debian10els/CLSA-2026-1788369761.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "2.2.6-2+deb10u7+tuxcare.els9"
                }
              ]
            }
          ],
          "package": {
            "name": "libexpat1",
            "purl": "pkg:deb/tuxcare/libexpat1?distro=debian-10",
            "ecosystem": "TuxCare:Debian:10"
          },
          "database_specific": {
            "source": "https://github.com/cloudlinux/tuxcare-osv/tree/main/data/els_os/debian10els/CLSA-2026-1788369761.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "2.2.6-2+deb10u7+tuxcare.els9"
                }
              ]
            }
          ],
          "package": {
            "name": "libexpat1-dev",
            "purl": "pkg:deb/tuxcare/libexpat1-dev?distro=debian-10",
            "ecosystem": "TuxCare:Debian:10"
          },
          "database_specific": {
            "source": "https://github.com/cloudlinux/tuxcare-osv/tree/main/data/els_os/debian10els/CLSA-2026-1788369761.json"
          }
        }
      ],
      "modified": "2026-10-26T09:43:30.426674793Z",
      "provider": "osv",
      "upstream": [
        "CVE-2026-50219",
        "CVE-2026-56131",
        "CVE-2026-56412",
        "CVE-2026-76957"
      ],
      "references": [
        "https://errata.tuxcare.com/els_os/debian10els/CLSA-2026-1788369761.html",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-56131",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-76957"
      ]
    },
    "related_cves": [
      {
        "value": "CVE-2026-50219",
        "evidence": "/upstream"
      },
      {
        "value": "CVE-2026-56131",
        "evidence": "/upstream"
      },
      {
        "value": "CVE-2026-56412",
        "evidence": "/upstream"
      },
      {
        "value": "CVE-2026-76957",
        "evidence": "/upstream"
      }
    ],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-osv",
  "document_id": 449959,
  "published_at": "2026-09-09T09:35:49+00:00"
}