Skip to content

fix(系统配置): 修复 base-path 环回地址绕过 - #776

Merged
zhou-hao merged 1 commit into
2.12from
codex/fix-ssrf-765
Aug 7, 2026
Merged

fix(系统配置): 修复 base-path 环回地址绕过#776
zhou-hao merged 1 commit into
2.12from
codex/fix-ssrf-765

Conversation

@zhou-hao

@zhou-hao zhou-hao commented Aug 6, 2026

Copy link
Copy Markdown
Member

目的

  • 修复系统 base-path 校验可通过域名变体或 DNS 解析结果访问环回地址的问题
  • 在保留普通内网部署地址能力的同时,阻止对本机环回服务的访问

核心变动

  • common-component:统一解析 base-path 目标主机,拒绝任一解析结果为 loopback 的地址
  • common-component:覆盖 localhost 尾点形式、IPv4、IPv6 及 DNS 解析到环回地址的回归测试

设计与测试目标

  • 设计稿:不适用;本次为边界明确的小范围安全修复
  • 用户确认:已确认,按独立 Issue 提交评审
  • 测试目标:覆盖普通内网地址正常路径,以及 localhost 变体、IPv4、IPv6 和 DNS 环回解析等异常与回归路径
  • 注释 / 公共契约:不适用;未新增公共 API 或 SPI,校验边界由方法命名及测试表达
  • 数据权限:不适用;未涉及资产数据访问
  • 数据库兼容与性能:不适用;未涉及 SQL 或持久化
  • 链路追踪:不适用;仅调整配置保存前校验,不新增业务链路
  • MBean 运维可观测性:不适用;未新增常驻任务、缓存、队列或后台执行器

测试结果

  • 命令:mvn -pl jetlinks-components/common-component -am -Dtest=ConfigVerificationServiceTest -Dsurefire.failIfNoSpecifiedTests=false test
  • 新增/更新测试:ConfigVerificationServiceTest 覆盖普通内网 base-path、localhost 尾点形式、IPv4/IPv6 环回地址与 DNS 环回解析
  • 单元测试:4 passed, 0 failed, 0 skipped
  • 集成测试:不适用;未涉及数据库、消息、事件、协议、跨模块边界或启动装配
  • 压力测试:不适用;不涉及批处理、SQL 或高并发数据路径
  • 覆盖率:changed class line 24/45(53.3%),branch 4/16(25.0%)

文档同步情况

  • 已同步:无需同步长期文档;安全校验行为由代码与回归测试维护
  • 未同步:无
  • 说明:README 长期总览未发生变化;测试证据仅记录在 PR / CI

风险与说明

  • 影响范围:系统 base-path 保存前校验
  • 注释 / 公共契约:不涉及公共契约变更
  • 链路追踪 / 可观测性:不涉及
  • MBean / 运维可观测性:不涉及
  • 未覆盖场景:未进行真实 DNS 服务集成测试,解析分支已通过单元测试验证
  • 已知限制:仅禁止环回地址,普通私网地址仍允许用于私有化部署

Closes #765

@zhou-hao
zhou-hao merged commit f13fb98 into 2.12 Aug 7, 2026
2 of 3 checks passed
@zhou-hao
zhou-hao deleted the codex/fix-ssrf-765 branch August 7, 2026 01:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant