Skip to main content

Expat 2.7.5 released, includes security fixes

For readers new to Expat:

libexpat is a fast streaming XML parser. Alongside libxml2, Expat is one of the most widely used software libre XML parsers written in C, specifically C99. It is cross-platform and licensed under the MIT license.

Expat 2.7.5 was released earlier today. The key motivation for cutting a release and doing so now is three security fixes:

The first NULL pointer dereference was reported and fixed by Francesco Bertolaccini of Trail of Bits with help from their AI tool Buttercup.

The infinite loop denial of service issue was uncovered by Google ClusterFuzz through continuesly fuzzing with xml_lpm_fuzzer that Mark Brand of Project Zero and I teamed up on in the past for Expat 2.7.0. Berkay Eren Ürün and I teamed up for analysis and a fix under a 90 day disclosure deadline.

The second NULL pointer dereference was reported by Christian Ng, and he and I teamed up on a fix.

So much for the fixed vulnerabilities. There are also three known unfixed security issues remaining in libexpat, and there is a GitHub issue listing known unfixed security issues in libexpat for anyone interested.

Thanks to everyone who contributed to this release of Expat!

For more details about this release, please check out the change log.

If you maintain Expat packaging, a bundled copy of Expat, or a pinned version of Expat, please update to version 2.7.5. Thank you!

Sebastian Pipping