华为开发者隧道 DevBridge 实测(下):关掉匿名访问后,匿名请求照样 200
上篇测完速度,隧道还开着,我顺手做了几项安全测试。不是渗透,就是一个开发者开隧道前应该自己验一遍的东西。全部在开发者空间的测试机里用 curl 完成,时间是 2026-11-10 中午 12 点前后,CLI 版本 0.2.2-release。
先交代背景:DevBridge 每个端口有一个「匿名访问」开关。官方文档写得很明白,允许匿名就是拿到地址的人直接能访问;禁止匿名的话,浏览器打开会跳登录页,管理后台、调试接口、带用户数据的服务都应该禁止匿名。默认是禁止的,我上篇为了方便测速,建端口时加了 -a 打开了匿名。
坑:关了匿名,60 秒后匿名请求还是 200
测完速度,我按文档把匿名关掉,CLI 回了一句 Port updated successfully。3 秒后用不带任何凭证的 curl 去请求,返回 200。我以为是生效有延迟,等了 60 秒再测:
3 秒后用不带任何凭证的 curl 去请求,返回 200。我以为是生效有延迟,等了 60 秒再测:
还是 200,没有 401,也没有跳转登录页。响应头里有个 x-devbridge-error-origin: service,200 的响应也带着它,看名字像是错误来源标记,不知道为什么正常响应也有。
这时候 port show 查出来的配置已经是 Allow Anonymous: false 了。配置改了,实际流量没变。
我怀疑 Host 进程在启动时把端口策略缓存了。于是把 Host 杀掉重启:
重启后同一条 curl 直接回 401。也就是说,改匿名策略只改了云端配置,正在跑的 Host 不会重新读,必须重启 Host 才生效。
这个顺序很要命。真实场景通常是:开发时为了方便开着匿名,联调完想起来要关,敲一条 --deny-anonymous,看到 successfully 就走了。结果地址还是对所有人敞开。我在文档里没找到这条说明,0.3.0 有没有修我也没验证,有条件的可以升级后再测一次。
我自己的做法现在是:改完策略,重启 Host,用一个不带凭证的 curl 确认拿到 401,再 port show 看一眼配置。四步缺一步都不算完。
目录里的日志被公开了
第二个问题是我自己挖的坑。上篇为了省事,http.server 直接在 ~/dbt 目录起,host.log 和 http.log 也写在同一个目录:
结果任何人请求 /host.log 就能拿到完整的隧道地址。这次是测试文件无所谓,但如果日志里有别的东西,比如 Connect 端的信息、调试输出,就一起送出去了。我这次目录里放了 index.html,根路径返回的是它;要是没放,python3 -m http.server 会直接把目录列出来,文件名一览无余。
解决很简单:日志写到 /tmp 或者专门的日志目录,对外的目录只放要对外的文件。另外响应头里 server: SimpleHTTP/0.6 Python/3.11.16 把后端和版本都报出来了,这是 Python 自带服务器的行为,不是隧道的问题,但隧道会原样透传。真要对外,前面套一层能改响应头的服务更稳妥。
隧道本身的几项:表现正常
剩下几项我主要想确认隧道网关会不会出幺蛾子:



- 路径穿越:
--path-as-is发/../../etc/passwd,网关返回 307,跳转到/etc/passwd,也就是先把路径规范化了,..没有透传到后端。后端就算有穿越漏洞,这条路径也打不过去。 - 未配置的端口:把地址里的 8080 换成 22,返回 404。隧道只转发配置过的端口,测试机上其他端口不会因为开了隧道就暴露。
- 隧道 ID 写错一位:返回 404,不会串到别人的隧道上。ID 只有 8 位小写字母和数字,空间不算大,但每个地址还要带端口号,靠猜去扫描成本也不低。即便如此,有敏感内容的端口还是应该禁止匿名,不能指望地址没人知道。
收尾
测完清理:杀掉 Host 和 http.server,devbridge list 确认只有这一条测试隧道后删掉,目录删除,实例关机。
总结一下给自己的清单:
- 默认禁止匿名,真需要公开的端口才
-a。 - 改了匿名策略,重启 Host,再用无凭证 curl 验证一次。
- 对外目录里别放日志。
- 用完
devbridge delete删掉,不要留着 30 天的有效期。
DevBridge 用来联调确实方便,开发者空间里装好、登录好,几条命令就通了。但「方便」和「关了就真关了」是两回事。
我的几点看法
- 关匿名后不重启 Host 就不生效,这是产品的问题,不是用户的错:命令成功返回,用户没理由怀疑它没生效。
- 官方应该二选一:改了策略立刻下发到正在跑的 Host,或者命令行明确提示「需重启 Host 生效」。
- 修好之前,我不会把有敏感数据的端口挂到 DevBridge 上;就算挂,「无凭证 curl 一次」也是必做的最后一步。
- 我这次测到的几项里,最致命的是策略下发这一环;路径穿越和未配置端口(只试了 22)没发现直接的问题,但样本太少,不敢说入口就是安全的。
- 联调场景我还会继续用它,但会把「默认禁匿名 + 用完即删」当成习惯,而不是指望平台兜底。
- 点赞
- 收藏
- 关注作者
评论(0)