web3.py affected by SSRF via CCIP Read (EIP-3668) OffchainLookup URL handling
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
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
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| ethereum | web3.py | 6.0.0b3 to before 7.15.0; 8.0.0b1 to before 8.0.0b2 | 7.15.0, 8.0.0b2 | Patch available | CNA |
| — | web3 (PyPI) | 6.0.0b3 to before 7.15.0 | 7.15.0 | Patch available | GHSA-5hr4-253g-cpx2 |
| — | web3 (PyPI) | 8.0.0b1 to before 8.0.0b2 | 8.0.0b2 | Patch available | GHSA-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
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:apeworx:web3.py:*:*:*:*:*:python:*:* | 6.1.0 to before 7.15.0 | Vulnerable | Apeworx |
| cpe:2.3:a:apeworx:web3.py:6.0.0:-:*:*:*:python:*:* | 6.0.0 | Vulnerable | Apeworx |
| cpe:2.3:a:apeworx:web3.py:6.0.0:beta10:*:*:*:python:*:* | 6.0.0 beta10 | Vulnerable | Apeworx |
| cpe:2.3:a:apeworx:web3.py:6.0.0:beta11:*:*:*:python:*:* | 6.0.0 beta11 | Vulnerable | Apeworx |
| cpe:2.3:a:apeworx:web3.py:6.0.0:beta3:*:*:*:python:*:* | 6.0.0 beta3 | Vulnerable | Apeworx |
| cpe:2.3:a:apeworx:web3.py:6.0.0:beta4:*:*:*:python:*:* | 6.0.0 beta4 | Vulnerable | Apeworx |
| cpe:2.3:a:apeworx:web3.py:6.0.0:beta5:*:*:*:python:*:* | 6.0.0 beta5 | Vulnerable | Apeworx |
| cpe:2.3:a:apeworx:web3.py:6.0.0:beta6:*:*:*:python:*:* | 6.0.0 beta6 | Vulnerable | Apeworx |
| cpe:2.3:a:apeworx:web3.py:6.0.0:beta7:*:*:*:python:*:* | 6.0.0 beta7 | Vulnerable | Apeworx |
| cpe:2.3:a:apeworx:web3.py:6.0.0:beta8:*:*:*:python:*:* | 6.0.0 beta8 | Vulnerable | Apeworx |
- 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
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
- 2026-10-02 Threatist record created from CVE-2026-40072
- 2026-10-03 Alias added: GHSA-5hr4-253g-cpx2
References
More ethereum vulnerabilities
- 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
Sources
- CVE-2026-40072 · CVE Program
- CVE-2026-40072 · NVD
- FIRST EPSS
- GHSA-5hr4-253g-cpx2 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences