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 offchain_lookup_payload["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 …