mateclaw/mateclaw-server/src/main/java/vip/mate/tool
matevip c3da1ce817 fix(browser): actually block redirect targets in SSRF interceptor
The first cut of the per-request interceptor called route.resume() for every
request. Playwright follows server-side 3xx redirects internally on resume()
WITHOUT re-invoking the route handler, so a public page that 302s to a
metadata IP still reached it — verified via runtime E2E (the handler only ever
saw the httpbin.org URLs, never the 169.254.169.254 redirect target).

Fix: for navigation requests, fetch with maxRedirects=0 and validate the
Location of each hop through UrlSafetyChecker before fulfilling; abort when a
hop resolves to a blocked host. Subresources/fetches keep the direct per-URL
check + resume path. Non-navigation and non-http(s) requests are unaffected.

Runtime-verified: httpbin.org 302 -> 169.254.169.254 is now aborted
(net::ERR_FAILED; log "blocked redirect ... cloud-metadata endpoint"), while
example.com and wikipedia.org (rich subresources) still load with no false
blocks.
2026-07-02 10:31:35 +08:00
..
browser fix(browser): actually block redirect targets in SSRF interceptor 2026-07-02 10:31:35 +08:00
builtin feat(browser): 放开内网服务访问限制,新增局域网部署模式开关 (#472) 2026-07-02 09:25:16 +08:00
controller feat(tool,skill,ui): progressive tool/skill disclosure (load_skill + enable_tool + tier UI) 2026-05-23 09:07:45 +08:00
disclosure feat(tool,skill,ui): progressive tool/skill disclosure (load_skill + enable_tool + tier UI) 2026-05-23 09:07:45 +08:00
document feat(tool): surface execute_shell_command artifacts; fix download filename 2026-06-30 14:01:48 +08:00
guard fix(tool-guard): enforce workspace boundary for execute_code and trust spill roots (#403) 2026-06-23 10:11:54 +08:00
image feat(tool): configurable SSRF allowlist for outbound HTTP guards 2026-06-29 10:33:38 +08:00
local feat(tool): desktop local file/shell tools via WebSocket tunnel 2026-06-26 18:24:25 +08:00
mcp feat(mcp): type on-behalf-of identity by channel/trust (#459) 2026-07-01 19:02:49 +08:00
model fix(tool): show runtime names in tools admin 2026-05-23 22:54:57 +08:00
model3d feat(workspace): chat-uploads 上传目录工作空间/Agent 感知化 (#422) 2026-06-26 14:20:54 +08:00
music feat(workspace): chat-uploads 上传目录工作空间/Agent 感知化 (#422) 2026-06-26 14:20:54 +08:00
repository Initial commit: MateClaw — Java + Vue 3 AI Assistant System 2026-04-04 19:03:49 +08:00
search fix(search): bundled SearXNG sidecar actually works out of the box 2026-04-24 22:08:42 +08:00
service fix(tool): show runtime names in tools admin 2026-05-23 22:54:57 +08:00
video feat(workspace): chat-uploads 上传目录工作空间/Agent 感知化 (#422) 2026-06-26 14:20:54 +08:00
ConcurrencyUnsafe.java feat(agent): runtime efficiency — spill oversized tool results, add tool concurrency registry, collect cache metrics 2026-04-19 08:28:45 +08:00
ToolConcurrencyRegistry.java feat(agent): runtime efficiency — spill oversized tool results, add tool concurrency registry, collect cache metrics 2026-04-19 08:28:45 +08:00
ToolRegistry.java fix(tool): show runtime names in tools admin 2026-05-23 22:54:57 +08:00