Read the docs
TI-2026-28903 Aliases CVE-2026-40072GHSA-5hr4-253g-cpx2

web3.py affected by SSRF via CCIP Read (EIP-3668) OffchainLookup URL handling

Priority MEDIUM 43CWE-918Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Attack requirements
Present
Impact type
—
Confidentiality · integrity · availability
None · None · None
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub.

Summary

web3.py allows you to interact with the Ethereum blockchain using Python. From 6.0.0b3 to before 7.15.0 and 8.0.0b2, web3.py implements CCIP Read / OffchainLookup (EIP-3668) by performing HTTP requests to URLs supplied by smart contracts in offchain_lookup_payload["urls"]. The implementation uses these contract-supplied URLs directly (after {sender} / {data} template substitution) without any destination validation. CCIP Read is enabled by default (global_ccip_read_enabled = True on all providers), meaning any application using web3.py's .call() method is exposed without explicit opt-in. This results in Server-Side Request Forgery (SSRF) when web3.py is used in backend services, indexers, APIs, or any environment that performs eth_call / .call() against untrusted or user-supplied contract addresses. A malicious contract can force the web3.py process to issue HTTP requests to arbitrary destinations, including internal network services and cloud metadata endpoints. This vulnerability is fixed in 7.15.0 and 8.0.0b2.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.00237 14th percentileScored 2026-11-07
Public exploit Yes 1 exploit referenceTagged by NVD
Fix Fixed web3.py (ethereum): 7.15.0, 8.0.0b2web3 (PyPI): 7.15.0, 8.0.0b2

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
Poc
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
ethereumweb3.py6.0.0b3 to before 7.15.0; 8.0.0b1 to before 8.0.0b27.15.0, 8.0.0b2Patch availableCNA
—web3 (PyPI)6.0.0b3 to before 7.15.07.15.0Patch availableGHSA-5hr4-253g-cpx2
—web3 (PyPI)8.0.0b1 to before 8.0.0b28.0.0b2Patch availableGHSA-5hr4-253g-cpx2
  • web3.py Vendorethereum Affected 6.0.0b3 to before 7.15.0; 8.0.0b1 to before 8.0.0b2 Fixed in 7.15.0, 8.0.0b2 Patch available CNA
  • web3 (PyPI) Vendor— Affected 6.0.0b3 to before 7.15.0 Fixed in 7.15.0 Patch available GHSA-5hr4-253g-cpx2
  • web3 (PyPI) Vendor— Affected 8.0.0b1 to before 8.0.0b2 Fixed in 8.0.0b2 Patch available GHSA-5hr4-253g-cpx2

CPE configurations NVD · 12

CPEVersionsRoleVendor
cpe:2.3:a:apeworx:web3.py:*:*:*:*:*:python:*:*6.1.0 to before 7.15.0VulnerableApeworx
cpe:2.3:a:apeworx:web3.py:6.0.0:-:*:*:*:python:*:*6.0.0VulnerableApeworx
cpe:2.3:a:apeworx:web3.py:6.0.0:beta10:*:*:*:python:*:*6.0.0 beta10VulnerableApeworx
cpe:2.3:a:apeworx:web3.py:6.0.0:beta11:*:*:*:python:*:*6.0.0 beta11VulnerableApeworx
cpe:2.3:a:apeworx:web3.py:6.0.0:beta3:*:*:*:python:*:*6.0.0 beta3VulnerableApeworx
cpe:2.3:a:apeworx:web3.py:6.0.0:beta4:*:*:*:python:*:*6.0.0 beta4VulnerableApeworx
cpe:2.3:a:apeworx:web3.py:6.0.0:beta5:*:*:*:python:*:*6.0.0 beta5VulnerableApeworx
cpe:2.3:a:apeworx:web3.py:6.0.0:beta6:*:*:*:python:*:*6.0.0 beta6VulnerableApeworx
cpe:2.3:a:apeworx:web3.py:6.0.0:beta7:*:*:*:python:*:*6.0.0 beta7VulnerableApeworx
cpe:2.3:a:apeworx:web3.py:6.0.0:beta8:*:*:*:python:*:*6.0.0 beta8VulnerableApeworx
  • cpe:2.3:a:apeworx:web3.py:*:*:*:*:*:python:*:* Versions 6.1.0 to before 7.15.0 Vulnerable ·Apeworx
  • cpe:2.3:a:apeworx:web3.py:6.0.0:-:*:*:*:python:*:* Versions 6.0.0 Vulnerable ·Apeworx
  • cpe:2.3:a:apeworx:web3.py:6.0.0:beta10:*:*:*:python:*:* Versions 6.0.0 beta10 Vulnerable ·Apeworx
  • cpe:2.3:a:apeworx:web3.py:6.0.0:beta11:*:*:*:python:*:* Versions 6.0.0 beta11 Vulnerable ·Apeworx
  • cpe:2.3:a:apeworx:web3.py:6.0.0:beta3:*:*:*:python:*:* Versions 6.0.0 beta3 Vulnerable ·Apeworx
  • cpe:2.3:a:apeworx:web3.py:6.0.0:beta4:*:*:*:python:*:* Versions 6.0.0 beta4 Vulnerable ·Apeworx
  • cpe:2.3:a:apeworx:web3.py:6.0.0:beta5:*:*:*:python:*:* Versions 6.0.0 beta5 Vulnerable ·Apeworx
  • cpe:2.3:a:apeworx:web3.py:6.0.0:beta6:*:*:*:python:*:* Versions 6.0.0 beta6 Vulnerable ·Apeworx
  • cpe:2.3:a:apeworx:web3.py:6.0.0:beta7:*:*:*:python:*:* Versions 6.0.0 beta7 Vulnerable ·Apeworx
  • cpe:2.3:a:apeworx:web3.py:6.0.0:beta8:*:*:*:python:*:* Versions 6.0.0 beta8 Vulnerable ·Apeworx
Show 2 more CPE
CPEVersionsRoleVendor
cpe:2.3:a:apeworx:web3.py:6.0.0:beta9:*:*:*:python:*:*6.0.0 beta9VulnerableApeworx
cpe:2.3:a:apeworx:web3.py:8.0.0:beta1:*:*:*:python:*:*8.0.0 beta1VulnerableApeworx
  • cpe:2.3:a:apeworx:web3.py:6.0.0:beta9:*:*:*:python:*:* Versions 6.0.0 beta9 Vulnerable ·Apeworx
  • cpe:2.3:a:apeworx:web3.py:8.0.0:beta1:*:*:*:python:*:* Versions 8.0.0 beta1 Vulnerable ·Apeworx

Remediation

  • Fix · CNA web3.py (ethereum) Fixed in 7.15.0, 8.0.0b2
  • Fix · GHSA-5hr4-253g-cpx2 web3 (PyPI) Fixed in 7.15.0 Advisory →
  • Fix · GHSA-5hr4-253g-cpx2 web3 (PyPI) Fixed in 8.0.0b2 Advisory →

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-40072
  2. 2026-10-03 Alias added: GHSA-5hr4-253g-cpx2

References

  • TI-2023-22561 Geth (aka go-ethereum) through 1.13.4, when --http --graphql is used, allows remote… CVSS 3.1HIGH 7.5
  • TI-2026-74955 Server-side request forgery in Web3.py CCIP Read URL validation CVSS 4.0MEDIUM 6.3
  • TI-2017-10558 Out-of-bounds read in CPP-Ethereum CVSS 3.1CRITICAL 10.0
  • TI-2018-11329 An issue was discovered in EthereumJ 1.8.2. CVSS 3.0CRITICAL 9.8
  • TI-2026-21270 Go Ethereum affected by DoS via malicious p2p message CVSS 4.0HIGH 8.7
  • TI-2025-18585 go-ethereum has a DoS via malicious p2p message CVSS 4.0HIGH 8.7
See all 43 →

Sources