Skip to content

chore(deps): update dependency lxml to v6 [security]#14316

Open
renovate-bot wants to merge 1 commit into
GoogleCloudPlatform:mainfrom
renovate-bot:renovate/pypi-lxml-vulnerability
Open

chore(deps): update dependency lxml to v6 [security]#14316
renovate-bot wants to merge 1 commit into
GoogleCloudPlatform:mainfrom
renovate-bot:renovate/pypi-lxml-vulnerability

Conversation

@renovate-bot

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
lxml (source, changelog) ==5.2.1==6.1.0 age confidence

lxml: Default configuration of iterparse() and ETCompatXMLParser() allows XXE to local files

CVE-2026-41066 / GHSA-vfmq-68hx-4jfw

More information

Details

Impact

Using either of the two parsers in the default configuration (with resolve_entities=True) allows untrusted XML input to read local files.

Patches

lxml 6.1.0 changes the default to resolve_entities='internal', thus disallowing local file access by default.

Workarounds

Setting the resolve_entities option explicitly to resolve_entities='internal' or resolve_entities=False disables the local file access.

Resources

Original report: https://bugs.launchpad.net/lxml/+bug/2146291

The default option was changed to resolve_entities='internal' for the normal XML and HTML parsers in lxml 5.0. The default was not changed for iterparse() and ETCompatXMLParser() at the time. lxml 6.1 makes the safe option the default for all parsers.

Severity

  • CVSS Score: 7.5 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

lxml/lxml (lxml)

v6.1.0

Compare Source

==================

This release fixes a possible external entity injection (XXE) vulnerability in
iterparse() and the ETCompatXMLParser.

Features added

  • GH#486: The HTML ARIA accessibility attributes were added to the set of safe attributes
    in lxml.html.defs. This allows lxml_html_clean to pass them through.
    Patch by oomsveta.

  • The default chunk size for reading from file-likes in iterparse() is now configurable
    with a new chunk_size argument.

Bugs fixed

  • LP#2146291: The resolve_entities option was still set to True for
    iterparse and ETCompatXMLParser, allowing for external entity injection (XXE)
    when using these parsers without setting this option explicitly.
    The default was now changed to 'internal' only (as for the normal XML and HTML parsers
    since lxml 5.0).
    Issue found by Sihao Qiu as CVE-2026-41066.

v6.0.4

Compare Source

==================

Bugs fixed

  • LP#2148019: Spurious MemoryError during namespace cleanup.

v6.0.3

Compare Source

==================

Bugs fixed

  • Several out of memory error cases now raise MemoryError that were not handled before.

  • Slicing with large step values (outside of +/- sys.maxsize) could trigger undefined C behaviour.

  • LP#2125399: Some failing tests were fixed or disabled in PyPy.

  • LP#2138421: Memory leak in error cases when setting the public_id or system_url of a document.

  • Memory leak in case of a memory allocation failure when copying document subtrees.

  • When mapping an XPath result to Python failed, the result memory could leak.

  • When preparing an XSLT transform failed, the XSLT parameter memory could leak.

Other changes

  • Built using Cython 3.2.4.

  • Binary wheels use zlib 1.3.2.

v6.0.2

Compare Source

==================

Bugs fixed

Other changes

  • Binary wheels for Py3.9-3.11 on the riscv64 architecture were added.

  • Error constants were updated to match libxml2 2.15.0.

  • Built using Cython 3.1.4.

v6.0.1

Compare Source

==================

Bugs fixed

  • LP#2116333: lxml.sax._getNsTag() could fail with an exception on malformed input.

  • GH#467: Some test adaptations were made for libxml2 2.15.
    Patch by Nick Wellnhofer.

  • LP2119510, GH#473: A Python compatibility test was fixed for Python 3.14+.
    Patch by Lumír Balhar.

  • GH#471: Wheels for "riscv64" on recent Python versions were added.
    Patch by ffgan.

  • GH#469: The wheel build no longer requires the wheel package unconditionally.
    Patch by Miro Hrončok.

  • Binary wheels use the library version libxml2 2.14.5.
    See https://gitlab.gnome.org/GNOME/libxml2/-/releases/v2.14.5

  • Windows binary wheels continue to use a security patched library version libxml2 2.11.9.

v6.0.0

Compare Source

==================

Features added

  • GH#463: lxml.html.diff is faster and provides structurally better diffs.
    Original patch by Steven Fernandez.

  • GH#405: The factories Element and ElementTree can now be used in type hints.

  • GH#448: Parsing from memoryview and other buffers is supported to allow zero-copy parsing.

  • GH#437: lxml.html.builder was missing several HTML5 tag names.
    Patch by Nick Tarleton.

  • GH#458: CDATA can now be written into the incremental xmlfile() writer.
    Original patch by Lane Shaw.

  • A new parser option decompress=False was added that controls the automatic
    input decompression when using libxml2 2.15.0 or later. Disabling this option
    by default will effectively prevent decompression bombs when handling untrusted
    input. Code that depends on automatic decompression must enable this option.
    Note that libxml2 2.15.0 was not released yet, so this option currently has no
    effect but can already be used.

  • The set of compile time / runtime supported libxml2 feature names is available as
    etree.LIBXML_COMPILED_FEATURES and etree.LIBXML_FEATURES.
    This currently includes
    catalog, ftp, html, http, iconv, icu,
    lzma, regexp, schematron, xmlschema, xpath, zlib.

Bugs fixed

  • GH#353: Predicates in .find*() could mishandle tag indices if a default namespace is provided.
    Original patch by Luise K.

  • GH#272: The head and body properties of lxml.html elements failed if no such element
    was found. They now return None instead.
    Original patch by FVolral.

  • Tag names provided by code (API, not data) that are longer than INT_MAX
    could be truncated or mishandled in other ways.

  • .text_content() on lxml.html elements accidentally returned a "smart string"
    without additional information. It now returns a plain string.

  • LP#2109931: When building lxml with coverage reporting, it now disables the sys.monitoring
    support due to the lack of support in nedbat/coveragepy#1790

Other changes

  • Support for Python < 3.8 was removed.

  • Parsing directly from zlib (or lzma) compressed data is now considered an optional
    feature in lxml. It may get removed from libxml2 at some point for security reasons
    (compression bombs) and is therefore no longer guaranteed to be available in lxml.

    As of this release, zlib support is still normally available in the binary wheels
    but may get disabled or removed in later (x.y.0) releases. To test the availability,
    use "zlib" in etree.LIBXML_FEATURES.

  • The Schematron class is deprecated and will become non-functional in a future lxml version.
    The feature will soon be removed from libxml2 and stop being available.

  • GH#438: Wheels include the arm7l target.

  • GH#465: Windows wheels include the arm64 target.
    Patch by Finn Womack.

  • Binary wheels use the library versions libxml2 2.14.4 and libxslt 1.1.43.
    Note that this disables direct HTTP and FTP support for parsing from URLs.
    Use Python URL request tools instead (which usually also support HTTPS).
    To test the availability, use "http" in etree.LIBXML_FEATURES.

  • Windows binary wheels use the library versions libxml2 2.11.9, libxslt 1.1.39 and libiconv 1.17.
    They are now based on VS-2022.

  • Built using Cython 3.1.2.

  • The debug methods MemDebug.dump() and MemDebug.show() were removed completely.
    libxml2 2.13.0 discarded this feature.

v5.4.0

Compare Source

==================

Bugs fixed

  • LP#2107279: Binary wheels use libxml2 2.13.8 and libxslt 1.1.43 to resolve several CVEs.
    (Binary wheels for Windows continue to use a patched libxml2 2.11.9 and libxslt 1.1.39.)
    Issue found by Anatoly Katyushin.

v5.3.2

Compare Source

==================

This release resolves CVE-2025-24928 as described in
https://gitlab.gnome.org/GNOME/libxml2/-/issues/847

Bugs fixed

  • Binary wheels use libxml2 2.12.10 and libxslt 1.1.42.

  • Binary wheels for Windows use a patched libxml2 2.11.9 and libxslt 1.1.39.

v5.3.1

Compare Source

==================

Bugs fixed

  • GH#440: Some tests were adapted for libxml2 2.14.0.
    Patch by Nick Wellnhofer.

  • LP#2097175: DTD(external_id="…") erroneously required a byte string as ID value.

  • GH#450: iterparse() internally triggered the `DeprecationWarning`` added in lxml 5.3.0 when parsing HTML.

Other changes

  • GH#442: Binary wheels for macOS no longer use the linker flag -flat_namespace.

v5.3.0

Compare Source

==================

Bugs fixed

  • GH#440: Some tests were adapted for libxml2 2.14.0.
    Patch by Nick Wellnhofer.

  • LP#2097175: DTD(external_id="…") erroneously required a byte string as ID value.

  • GH#450: iterparse() internally triggered the `DeprecationWarning`` added in lxml 5.3.0 when parsing HTML.

Other changes

  • GH#442: Binary wheels for macOS no longer use the linker flag -flat_namespace.

v5.2.2

Compare Source

==================

Bugs fixed

  • GH#417: The test_feed_parser test could fail if lxml_html_clean was not installed.
    It is now skipped in that case.

  • LP#2059910: The minimum CPU architecture for the Linux x86 binary wheels was set back to
    "core2", without SSE 4.2.

  • If libxml2 uses iconv, the compile time version is available as etree.ICONV_COMPILED_VERSION.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Never, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate-bot renovate-bot requested review from a team as code owners June 12, 2026 18:39
@product-auto-label product-auto-label Bot added the samples Issues that are directly related to samples. label Jun 12, 2026
@trusted-contributions-gcf trusted-contributions-gcf Bot added kokoro:force-run Add this label to force Kokoro to re-run the tests. owlbot:run Add this label to trigger the Owlbot post processor. labels Jun 12, 2026
@product-auto-label product-auto-label Bot added the api: cloudmedia Issues related to the Media Livestream API. label Jun 12, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the lxml dependency in cloud-media-livestream/keypublisher/requirements.txt from version 5.2.1 to 6.1.0. There are no review comments, and I have no feedback to provide.

@kokoro-team kokoro-team removed the kokoro:force-run Add this label to force Kokoro to re-run the tests. label Jun 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api: cloudmedia Issues related to the Media Livestream API. owlbot:run Add this label to trigger the Owlbot post processor. samples Issues that are directly related to samples.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants