Every CVE Search/ Get API key

CVE-2026-58501

Zeep SSRF because Settings.forbid_external is not enforced

5.9 MediumFix available

Zeep is a Python SOAP client. From 4.0.0 before 4.3.3, Settings.forbid_external is defined but not enforced when parsing WSDL or XSD documents, allowing transitive xsd:import, xsd:include, wsdl:import, and lxml entity or DTD references to fetch attacker-chosen HTTP or HTTPS URLs. This issue is fixed in version 4.3.3.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
High
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
None
Availability
None

Exploit likelihood

0.41%Up 0.2 points since Jul 9, 2026
90%50%10%1%

What each source reports

CVE List Score used 5.9

Zeep SSRF because Settings.forbid_external is not enforced

Zeep is a Python SOAP client. From 4.0.0 before 4.3.3, Settings.forbid_external is defined but not enforced when parsing WSDL or XSD documents, allowing transitive xsd:import, xsd:include, wsdl:import, and lxml entity or DTD references to fetch attacker-chosen HTTP or HTTPS URLs. This issue is fixed in version 4.3.3.

Record
CVE-2026-58501
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918
Updated
2026-11-02
EUVDEUVD-2026-42353 5.9

Zeep is a Python SOAP client. From 4.0.0 before 4.3.3, Settings.forbid_external is defined but not enforced when parsing WSDL or XSD documents, allowing transitive xsd:import, xsd:include, wsdl:import, and lxml entity or DTD references to fetch attacker-chosen HTTP or HTTPS URLs. This issue is fixed in version 4.3.3.

Record
EUVD-2026-42353
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-4cc2-g9w2-fhf6 5.9

Zeep: Server-Side Request Forgery (SSRF)

Summary

When parsing a WSDL or XSD document, python-zeep follows transitive references — xsd:import, xsd:include, wsdl:import, and lxml entity/DTD resolution — and will fetch http/https URLs found in those references. The Settings.forbid_external option, intended to disable this transitive remote fetching, was defined but not wired to any logic from version 4.0.0 through 4.3.2 (a regression introduced when zeep moved off defusedxml in 4.0). As a result, setting forbid_external=True had no effect, and applications that processed untrusted or attacker-influenced WSDL/XSD documents could be coerced into making server-side requests to arbitrary URLs (SSRF).

Impact

Server-Side Request Forgery (SSRF), CWE-918.

An attacker who can supply or influence the contents of a WSDL/XSD that an application loads with zeep can embed an import/include reference (e.g. <xsd:import schemaLocation="http://169.254.169.254/...">) pointing at an internal or otherwise sensitive endpoint. When zeep parses the document it transitively fetches that URL using the configured transport, causing the application to issue outbound requests to attacker-chosen destinations. This can be used to reach internal-only services, cloud metadata endpoints, or other hosts not directly reachable by the attacker, and may disclose response timing/behaviour.

Impacted users are those who:

  • load WSDL/XSD documents that are untrusted or whose import targets an attacker can control, and/or
  • relied on forbid_external=True as a security control — in 4.0.0–4.3.2 that setting silently did nothing, so the protection users believed they had was not in effect.

Note the default was (and remains) forbid_external=False, i.e. transitive remote fetching is permitted by default; the security defect is specifically that the opt-out control was non-functional.

Patches

Fixed in python-zeep 4.3.3. The forbid_external setting is now enforced: when set to True, zeep refuses to transitively fetch http/https resources via xsd:import, xsd:include, wsdl:import, or lxml entity/DTD resolution, raising zeep.exceptions.ExternalReferenceForbidden. The user-supplied entry-point WSDL/schema URL is still loaded.

Affected versions: >= 4.0.0, < 4.3.3.

Upgrade to 4.3.3 (or later) and set forbid_external=True when loading documents from untrusted sources:

from zeep import Client, Settings

settings = Settings(forbid_external=True)
client = Client("https://untrusted.example/service?wsdl", settings=settings)

Workarounds

If you cannot upgrade to 4.3.3:

  • Do not load untrusted WSDL/XSD documents, and avoid loading WSDLs whose import/include targets can be influenced by untrusted input.
  • Vendor the schema locally: pre-fetch and review the WSDL and all of its imported schemas, then load them from local files (e.g. file:// paths) so no remote fetching occurs at parse time.
  • Restrict egress at the network layer: block outbound traffic from the host/process to internal ranges and metadata endpoints (e.g. 169.254.169.254, RFC1918 ranges) so SSRF attempts cannot reach sensitive targets.
  • Use a restrictive custom Transport: subclass the zeep transport and reject/allow-list URLs in load() so disallowed hosts are never fetched.
Record
GHSA-4cc2-g9w2-fhf6
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918
Updated
2026-11-02
NVD 5.9

Zeep is a Python SOAP client. From 4.0.0 before 4.3.3, Settings.forbid_external is defined but not enforced when parsing WSDL or XSD documents, allowing transitive xsd:import, xsd:include, wsdl:import, and lxml entity or DTD references to fetch attacker-chosen HTTP or HTTPS URLs. This issue is fixed in version 4.3.3.

Record
CVE-2026-58501
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918
Updated
2026-11-02
OSV 5.9

Zeep SSRF because Settings.forbid_external is not enforced

Zeep is a Python SOAP client. From 4.0.0 before 4.3.3, Settings.forbid_external is defined but not enforced when parsing WSDL or XSD documents, allowing transitive xsd:import, xsd:include, wsdl:import, and lxml entity or DTD references to fetch attacker-chosen HTTP or HTTPS URLs. This issue is fixed in version 4.3.3.

Record
CVE-2026-58501
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918
Updated
2026-11-02
OSVDEBIAN-CVE-2026-58501 5.9

Zeep is a Python SOAP client. From 4.0.0 before 4.3.3, Settings.forbid_external is defined but not enforced when parsing WSDL or XSD documents, allowing transitive xsd:import, xsd:include, wsdl:import, and lxml entity or DTD references to fetch attacker-chosen HTTP or HTTPS URLs. This issue is fixed in version 4.3.3.

Record
DEBIAN-CVE-2026-58501
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Updated
2026-11-02
OSVGHSA-4cc2-g9w2-fhf6 5.9

Zeep: Server-Side Request Forgery (SSRF)

Summary

When parsing a WSDL or XSD document, python-zeep follows transitive references — xsd:import, xsd:include, wsdl:import, and lxml entity/DTD resolution — and will fetch http/https URLs found in those references. The Settings.forbid_external option, intended to disable this transitive remote fetching, was defined but not wired to any logic from version 4.0.0 through 4.3.2 (a regression introduced when zeep moved off defusedxml in 4.0). As a result, setting forbid_external=True had no effect, and applications that processed untrusted or attacker-influenced WSDL/XSD documents could be coerced into making server-side requests to arbitrary URLs (SSRF).

Impact

Server-Side Request Forgery (SSRF), CWE-918.

An attacker who can supply or influence the contents of a WSDL/XSD that an application loads with zeep can embed an import/include reference (e.g. <xsd:import schemaLocation="http://169.254.169.254/...">) pointing at an internal or otherwise sensitive endpoint. When zeep parses the document it transitively fetches that URL using the configured transport, causing the application to issue outbound requests to attacker-chosen destinations. This can be used to reach internal-only services, cloud metadata endpoints, or other hosts not directly reachable by the attacker, and may disclose response timing/behaviour.

Impacted users are those who:

  • load WSDL/XSD documents that are untrusted or whose import targets an attacker can control, and/or
  • relied on forbid_external=True as a security control — in 4.0.0–4.3.2 that setting silently did nothing, so the protection users believed they had was not in effect.

Note the default was (and remains) forbid_external=False, i.e. transitive remote fetching is permitted by default; the security defect is specifically that the opt-out control was non-functional.

Patches

Fixed in python-zeep 4.3.3. The forbid_external setting is now enforced: when set to True, zeep refuses to transitively fetch http/https resources via xsd:import, xsd:include, wsdl:import, or lxml entity/DTD resolution, raising zeep.exceptions.ExternalReferenceForbidden. The user-supplied entry-point WSDL/schema URL is still loaded.

Affected versions: >= 4.0.0, < 4.3.3.

Upgrade to 4.3.3 (or later) and set forbid_external=True when loading documents from untrusted sources:

from zeep import Client, Settings

settings = Settings(forbid_external=True)
client = Client("https://untrusted.example/service?wsdl", settings=settings)

Workarounds

If you cannot upgrade to 4.3.3:

  • Do not load untrusted WSDL/XSD documents, and avoid loading WSDLs whose import/include targets can be influenced by untrusted input.
  • Vendor the schema locally: pre-fetch and review the WSDL and all of its imported schemas, then load them from local files (e.g. file:// paths) so no remote fetching occurs at parse time.
  • Restrict egress at the network layer: block outbound traffic from the host/process to internal ranges and metadata endpoints (e.g. 169.254.169.254, RFC1918 ranges) so SSRF attempts cannot reach sensitive targets.
  • Use a restrictive custom Transport: subclass the zeep transport and reject/allow-list URLs in load() so disallowed hosts are never fetched.
Record
GHSA-4cc2-g9w2-fhf6
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Weakness
CWE-918
Updated
2026-11-02
OSVPYSEC-2026-2323 5.9

Zeep is a Python SOAP client. From 4.0.0 before 4.3.3, Settings.forbid_external is defined but not enforced when parsing WSDL or XSD documents, allowing transitive xsd:import, xsd:include, wsdl:import, and lxml entity or DTD references to fetch attacker-chosen HTTP or HTTPS URLs. This issue is fixed in version 4.3.3.

Record
PYSEC-2026-2323
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Updated
2026-11-02
OSVUBUNTU-CVE-2026-58501 5.9

Zeep is a Python SOAP client. From 4.0.0 before 4.3.3, Settings.forbid_external is defined but not enforced when parsing WSDL or XSD documents, allowing transitive xsd:import, xsd:include, wsdl:import, and lxml entity or DTD references to fetch attacker-chosen HTTP or HTTPS URLs. This issue is fixed in version 4.3.3.

Record
UBUNTU-CVE-2026-58501
CVSS 3.1
5.9 MediumCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
zeep
PyPI
4.0.0 up to 4.3.3
4.3.3
python-zeep
Debian:12
All versions, plus listed versions
4.2.1-14.2.1-24.2.1-34.3.1-14.3.1-2
Show 6 moreShow less
4.3.1-34.3.2-14.3.2-24.3.2-34.3.3-14.3.3-2
None known
python-zeep
Debian:13
All versions, plus listed versions
4.3.1-24.3.1-34.3.2-14.3.2-24.3.2-34.3.3-14.3.3-2
None known
python-zeep
Debian:14
before 4.3.3-1, plus listed versions
4.3.1-24.3.1-34.3.2-14.3.2-24.3.2-3
4.3.3-1
zeep
PyPI
4.0.0 up to 4.3.3, plus listed versions
4.1.04.2.04.2.14.3.04.3.14.3.2
4.3.3
python-zeep
Ubuntu:18.04:LTS
All versions, plus listed versions
2.1.1-12.4.0-12.5.0-1
None known
python-zeep
Ubuntu:20.04:LTS
All versions, plus listed versions
3.2.0-13.4.0-1
None known
python-zeep
Ubuntu:22.04:LTS
All versions, plus listed versions
4.0.0-14.1.0-1
None known
python-zeep
Ubuntu:24.04:LTS
All versions, plus listed versions
4.2.1-14.2.1-24.2.1-2ubuntu1
None known
python-zeep
Ubuntu:25.10
All versions, plus listed versions
4.3.1-24.3.1-2ubuntu14.3.1-3
None known
python-zeep
Ubuntu:26.10
All versions, plus listed versions
4.3.2-14.3.2-24.3.2-34.3.3-2
None known
python-zeep
Ubuntu:26.04:LTS
All versions, plus listed versions
4.3.1-34.3.2-1
None known

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-58501 is a medium vulnerability (CVSS 5.9) in Python-zeep Zeep, published June 19, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.41%, the 35th percentile. Fixed in zeep 4.3.3.

References

Show 4 moreShow less
MoveEnter Open