v0.28.2
What's Changed
Security and hardening patch release.
Security
paidAuthenticatedFetchper-invocationmaxAmountcap (#508): at most one nonzero x402 authorization is signed per call, and cumulative authorized value can never exceedmaxAmount. Closes a double-challenge bypass where a malicious tool could obtain two independently-settleable authorizations, each under the cap.verifyXPaymentAuthhardening (#509): the freepredicateGaterejects non-zero-value X-Payment authorizations,validBeforeis capped to 1h, the resolved chainId is pinned to the gate's chain, and the operator-recipient check fails closed when unset.inspectmetadataURI SSRF guard (#511): validate the registry-suppliedmetadataURIbefore fetching (http(s) + reject private/internal hosts).isPrivateHostnamenow numerically parses IP literals, closing decimal/octal/hex/partial-dotted IPv4 and IPv4-mapped IPv6 encoding bypasses, and covers 0.0.0.0/8, link-local 169.254.0.0/16, CGNAT 100.64.0.0/10, and IPv6 unique-local fc00::/7.
Fixes
- Audit findings (#510): pin EIP-712 domain name/version for canonical USDC, surface the default registry lookup-block window, cache resolved manifests in
createToolHandler, and decouple caller API-key provisioning from per-request abort signals.
Community Contributions
- Thanks to @Nexory for reporting the
inspectmetadataURI SSRF that #511 fixes (tool-sdk#12).
Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.28.1...tool-sdk-v0.28.2