agents@0.11.2
cloudflare/agentsagents@0.11.2Apr 17, 2026by github-actions[bot]
AI Summary
This patch fixes a security vulnerability in the MCP client's SSRF protection where the IPv6 link-local range `fe80::/10` was not being fully blocked. The previous `startsWith("fe80")` check only matched `fe80::/16`, allowing addresses in the `fe81::`–`febf::` range to slip through. The fix uses a regex to properly match the full /10 range and factors out the IPv6 private-range logic.
Key Highlights
- Fixed SSRF check to block full IPv6 link-local range `fe80::/10` instead of just `fe80::/16`
- Addresses in `fe81::`–`febf::` range were previously leaking through the security check
- Factored IPv6 private-range logic into new `isPrivateIPv6` function
- Added regression tests for previously-leaking prefixes and boundary cases
Full Release Notes
### Patch Changes
- [#1326](https://github.com/cloudflare/agents/pull/1326) [`d5042a9`](https://github.com/cloudflare/agents/commit/d5042a90df0f863da8ce43ebacec879668ef2423) Thanks [@threepointone](https://github.com/threepointone)! - fix(mcp): block full IPv6 link-local range `fe80::/10` in SSRF check
`isBlockedUrl` in the MCP client claimed to block `fe80::/10` but the
previous `startsWith("fe80")` check only matched the narrower
`fe80::/16`, letting valid link-local addresses in the `fe81::`–`febf::`
range slip through. Replaced with a regex that matches the full /10
(first hextet `fe80` through `febf`), factored the IPv6 private-range
logic into `isPrivateIPv6`, and added regression tests for the
previously-leaking prefixes plus negative cases at the /10 boundary
(`fe7f::`, `fec0::`).
Reported in [#1325](https://github.com/cloudflare/agents/issues/1325).