Commit Graph

2 Commits

Author SHA1 Message Date
浅念 2a2485fc07 fix(site-import): BLOCKED_NETS 补 v6 未指定/组播/保留段与 NAT64
- ::/128(v6 版 0.0.0.0,此前两层防线均放行)+ 224.0.0.0/4(组播)
  + 240.0.0.0/4(保留/广播,含 255.255.255.255)+ 64:ff9b::/96(NAT64)
  + 198.18.0.0/15(基准段)
- 测试 +9:六段参数化钉位、http://[::]/x URL 层拒绝、重定向协议切换
  (302→ftp://)第二跳拦截、DNS rebinding 端到端(真实 client 仅打桩
  getaddrinfo 返 10.x,证明连接层校验先于连接发生)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-20 18:37:05 +08:00
浅念 9f556ebe95 feat(site-import): SSRF 连接层校验 fetch 原语
- ValidatingBackend:connect_tcp 处 anyio.getaddrinfo 解析→禁段校验→
  只连已验 IP 字面量(anyio 对 IP 字面量跳过 DNS,闭合 rebinding TOCTOU;
  TLS/SNI 由 httpcore 以原 hostname 包,证书校验不受影响)
- 双层防线:fetch URL 层预检(scheme/host/端口白名单+IP 字面量禁段)
  + 连接层逐跳 DNS 后校验;手动重定向 ≤5 跳每跳重校验
- 私有口(_pool 替换/AnyIOStream/异常映射)由版本探针测试钉位
- tests/test_safe_fetch.py 29 条:禁段参数化/连接层拒绝/重定向私网拦截/
  上限边界/请求真实路由经校验后端(anyio 层打桩离线全链路)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-20 18:17:19 +08:00