Skip to content

v0.28.2

Choose a tag to compare

@ryanio ryanio released this 10 Jul 18:13
· 4 commits to main since this release

What's Changed

Security and hardening patch release.

Security

  • paidAuthenticatedFetch per-invocation maxAmount cap (#508): at most one nonzero x402 authorization is signed per call, and cumulative authorized value can never exceed maxAmount. Closes a double-challenge bypass where a malicious tool could obtain two independently-settleable authorizations, each under the cap.
  • verifyXPaymentAuth hardening (#509): the free predicateGate rejects non-zero-value X-Payment authorizations, validBefore is capped to 1h, the resolved chainId is pinned to the gate's chain, and the operator-recipient check fails closed when unset.
  • inspect metadataURI SSRF guard (#511): validate the registry-supplied metadataURI before fetching (http(s) + reject private/internal hosts). isPrivateHostname now 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 inspect metadataURI SSRF that #511 fixes (tool-sdk#12).

Full Changelog: ProjectOpenSea/opensea-devtools@tool-sdk-v0.28.1...tool-sdk-v0.28.2