web3.py: SSRF via CCIP Read (EIP-3668) OffchainLookup URL handling
web3.py: SSRF via CCIP Read (EIP-3668) OffchainLookup URL handling. web3.py implements CCIP Read / OffchainLookup (EIP-3668) by performing HTTP requests to URLs supplied by smart contracts in offchainlookuppayload["urls"].
Vuln-watch · relayed from the GitHub Advisory Database; see Source & attribution below
Summary
web3.py implements CCIP Read / OffchainLookup (EIP-3668) by performing HTTP requests to URLs supplied by smart contracts in offchainlookuppayload["urls"]. The implementation uses these contract-supplied URLs directly (after {sender} / {data} template substitution) without any destination validation: - No restriction to https:// (and no opt-in gate for http://) - No hostname or IP allowlist - No blocking of private/reserved IP ranges (loopback, link-local, RFC1918) - No redirect target validation (both requests and aiohttp follow redirects by default) CCIP Read is enabled by default (globalccipreadenabled = True on all providers), meaning any application using web3.
Affected
- web3 (pip) >= 6.0.0b3, < 7.15.0 — fixed in 7.15.0
- web3 (pip) = 8.0.0b1 — fixed in 8.0.0b2
Severity
Medium (CVSS 6.9), as rated by the upstream advisory.
Recommended actions
- Upgrade web3 to 7.15.0 or later
- Upgrade web3 to 8.0.0b2 or later
Source & attribution
This 0xCERT advisory summarises GHSA-5hr4-253g-cpx2 / CVE-2026-40072 from the GitHub Advisory Database, credited upstream to Nadav0077: https://github.com/advisories/GHSA-5hr4-253g-cpx2. Details may change; refer to the original source for the authoritative record.
References
OpenPGP-signed. The signed text of this advisory verifies against the 0xCERT key CCC7 D9EC 9415 723D.
Published 2026-04-04 · last updated 2026-10-08
curl -s https://www.0xcert.com/pgp.asc | gpg --import && curl -s https://www.0xcert.com/advisory/0xCERT-2026-0225/signed.txt | gpg --verify