CVE-2022-2309: Lxml Denial of Service Vulnerability

MODERATE
Advisory Identifier: GHSA-wrxv-2j5q-m38w
CVSS 5.3
CWE-476
Published
Advisory Summary

CVE-2022-2309 is a MODERATE (CVSS 5.3) denial of service vulnerability (CWE-476: NULL Pointer Dereference) affecting Lxml libraries in the PyPI ecosystem. The issue involves lxml null pointer dereference allows attackers to cause a denial of service. Remediation is available by upgrading affected packages to version 4.9.1.

CVE-2022-2309 at a Glance

CVE Identifier CVE-2022-2309
GHSA Identifier GHSA-wrxv-2j5q-m38w
Severity MODERATE
CVSS v3.1 Base Score 5.3
CWE Classification CWE-476: NULL Pointer Dereference
Affected Product Lxml
Package Ecosystem PyPI
Published Date
Last Updated

Security Impact

CVSS: 5.3

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L).

Attack Vector Network (AV:N)
Attack Complexity Low (AC:L)
Privileges Required None (PR:N)
User Interaction None (UI:N)
Scope Unchanged (S:U)
Confidentiality None (C:N)
Integrity None (I:N)
Availability Low (A:L)

How to Fix CVE-2022-2309

To remediate this vulnerability, upgrade all affected Lxml dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

lxml fixed: 4.9.1
pip install lxml>=4.9.1
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

pip show lxml

How to Check if You Are Affected

To determine whether your Python environment is affected by CVE-2022-2309, inspect your installed packages using pip:

pip show lxml

Analyze the terminal output to locate any version of Lxml in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 4.9.1), your application is affected.

Note: The pip show lxml command checks currently installed packages in your active Python environment.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-476: NULL Pointer Dereference, where the product dereferences a pointer that it expects to be valid but is null. In Lxml, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

NULL Pointer Dereference allows attackers to cause a denial of service (or application crash). This only applies when lxml is used together with libxml2 2.9.10 through 2.9.14. libxml2 2.9.9 and earlier are not affected. It allows triggering crashes through forged input data, given a vulnerable code sequence in the application. The vulnerability is caused by the iterwalk function (also used by the canonicalize function). Such code shouldn't be in wide-spread use, given that parsing + iterwalk would usually be replaced with the more efficient iterparse function. However, an XML converter that serialises to C14N would also be vulnerable, for example, and there are legitimate use cases for this code sequence. If untrusted input is received (also remotely) and processed via iterwalk function, a crash can be triggered.

CVE-2022-2309 Affected Lxml Versions

1 component(s)
Fixed Versions:
4.9.1
Product / Package Ecosystem Affected Versions Fixed Version
lxml
PyPI
< 4.9.1
4.9.1

References

NVD — CVE-2022-2309 NVD
https://nvd.nist.gov/vuln/detail/CVE-2022-2309
Security Fix Commit FIX COMMIT
https://github.com/lxml/lxml/commit/86368e9cf70a0ad23cccd5ee32de847149af0c6f
GitHub Advisory / Wiki ADVISORY
https://github.com/advisories/GHSA-wrxv-2j5q-m38w
Lxml Source Repository REPOSITORY
https://github.com/lxml/lxml
Lxml Source Repository REPOSITORY
https://github.com/lxml/lxml/blob/master/CHANGES.txt
Lxml Source Repository REPOSITORY
https://github.com/pypa/advisory-database/tree/main/vulns/lxml/PYSEC-2022-230.yaml
huntr.dev/bounties/8264e74f-e... WEB
https://huntr.dev/bounties/8264e74f-edda-4c40-9956-49de635105ba
lists.debian.org/debian-lts-announce... WEB
https://lists.debian.org/debian-lts-announce/2024/09/msg00021.html
lists.fedoraproject.org/archives/list/packa... WEB
https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/HGYC6L7ENH5VEGN3YWFBYMGKX6WNS7HZ
lists.fedoraproject.org/archives/list/packa... WEB
https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/URHHSIBTPTALXMECRLAC2EVDNAFSR5NO
lists.fedoraproject.org/archives/list/packa... WEB
https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/HGYC6L7ENH5VEGN3YWFBYMGKX6WNS7HZ
lists.fedoraproject.org/archives/list/packa... WEB
https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/URHHSIBTPTALXMECRLAC2EVDNAFSR5NO
Lxml Security Information SECURITY
https://security.gentoo.org/glsa/202208-06
Lxml Security Information SECURITY
https://security.netapp.com/advisory/ntap-20220915-0006

Frequently Asked Questions

What is CVE-2022-2309?
CVE-2022-2309 is a security vulnerability in Lxml involving lxml NULL Pointer Dereference allows attackers to cause a denial of service under CWE-476: NULL Pointer Dereference.
Which Lxml versions are affected?
Affected versions include releases prior to 4.9.1 across affected packages: lxml.
What version fixes CVE-2022-2309?
Upgrading to 4.9.1 (or the latest patched release for your respective branch) resolves the vulnerability.
Is lxml affected?
Yes, lxml is affected in releases prior to 4.9.1. Upgrade your dependency to 4.9.1 or later.
What is the CVSS score of CVE-2022-2309?
CVE-2022-2309 has a CVSS v3.1 base score of 5.3 (MODERATE) with vector string CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L.
What CWE is associated with CVE-2022-2309?
CVE-2022-2309 is classified under CWE-476: NULL Pointer Dereference (The product dereferences a pointer that it expects to be valid but is NULL.).
How can I check PyPI dependencies for CVE-2022-2309?
Run the dependency tree command: 'pip show lxml'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-wrxv-2j5q-m38w",
  "modified" : "2025-11-04T19:36:22Z",
  "published" : "2022-07-06T00:00:30Z",
  "aliases" : [ "CVE-2022-2309" ],
  "summary" : "lxml NULL Pointer Dereference allows attackers to cause a denial of service",
  "details" : "NULL Pointer Dereference allows attackers to cause a denial of service (or application crash). This only applies when lxml is used together with libxml2 2.9.10 through 2.9.14. libxml2 2.9.9 and earlier are not affected. It allows triggering crashes through forged input data, given a vulnerable code sequence in the application. The vulnerability is caused by the iterwalk function (also used by the canonicalize function). Such code shouldn't be in wide-spread use, given that parsing + iterwalk would usually be replaced with the more efficient iterparse function. However, an XML converter that serialises to C14N would also be vulnerable, for example, and there are legitimate use cases for this code sequence. If untrusted input is received (also remotely) and processed via iterwalk function, a crash can be triggered.",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L"
  }, {
    "type" : "CVSS_V4",
    "score" : "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "PyPI",
      "name" : "lxml"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "4.9.1"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2022-2309"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/lxml/lxml/commit/86368e9cf70a0ad23cccd5ee32de847149af0c6f"
  }, {
    "type" : "ADVISORY",
    "url" : "https://github.com/advisories/GHSA-wrxv-2j5q-m38w"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/lxml/lxml"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/lxml/lxml/blob/master/CHANGES.txt"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/pypa/advisory-database/tree/main/vulns/lxml/PYSEC-2022-230.yaml"
  }, {
    "type" : "WEB",
    "url" : "https://huntr.dev/bounties/8264e74f-edda-4c40-9956-49de635105ba"
  }, {
    "type" : "WEB",
    "url" : "https://lists.debian.org/debian-lts-announce/2024/09/msg00021.html"
  }, {
    "type" : "WEB",
    "url" : "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/HGYC6L7ENH5VEGN3YWFBYMGKX6WNS7HZ"
  }, {
    "type" : "WEB",
    "url" : "https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/URHHSIBTPTALXMECRLAC2EVDNAFSR5NO"
  }, {
    "type" : "WEB",
    "url" : "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/HGYC6L7ENH5VEGN3YWFBYMGKX6WNS7HZ"
  }, {
    "type" : "WEB",
    "url" : "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/URHHSIBTPTALXMECRLAC2EVDNAFSR5NO"
  }, {
    "type" : "WEB",
    "url" : "https://security.gentoo.org/glsa/202208-06"
  }, {
    "type" : "WEB",
    "url" : "https://security.netapp.com/advisory/ntap-20220915-0006"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-476" ],
    "severity" : "MODERATE",
    "github_reviewed" : true,
    "github_reviewed_at" : "2022-07-06T19:14:23Z",
    "nvd_published_at" : "2022-07-05T10:15:00Z"
  }
}