资讯动态

Axl Web网关安全模型解析:loopback绑定、Host校验如何挡住DNS rebinding攻击

发布时间:2026/10/15 14:20:36 来源:尧图企业网站定制
【免费下载链接】Axl项目地址https://gitcode.com/gh_mirrors/axl/Axl点击查看免费下载Axl 是一个本地优先的 AI 智能体项目其 Web 客户端通过运行在本机的网关axl web提供服务。理解Axl Web 网关安全模型——尤其是loopback 绑定、Host 校验与DNS rebinding 防御——能帮你弄清一个看似只监听 localhost的 HTTP 服务是如何把恶意网站和同机其他进程挡在门外的。先搞清楚Web 网关在 Axl 架构中的位置Axl 的 Web 客户端并不是一个胖服务器而是一个薄薄的本地进程浏览器通过loopback HTTP WebSocket连接网关网关再为每个浏览器连接attachment建立一条独立的 Unix socket 连接桥接到权威的 daemon 进程。网关自己不持有任何会话、智能体、模型或工作区状态只负责两件事分发静态资源、桥接经过校验的协议消息。完整架构见 docs/architecture/web-client.md安全规范见 docs/architecture/web-gateway-security.md。 关键设计原则loopback 绑定是必要的但它本身不构成认证。威胁模型Axl 假想哪些攻击者规范文档明确列出了六类攻击者这是理解全部防御措施的出发点攻击者目标浏览器中打开的恶意网站跨站请求泄露 cookie、发起请求针对 loopback 服务器的DNS rebinding让浏览器绕过同源策略访问本地服务没有 Axl 权限的其他本地进程直连端口窃取会话控制权应用渲染的不可信仓库与工具输出内容注入超大、洪水式、慢速客户端资源耗尽通过日志、历史记录、referrer 等渠道的意外泄露凭证/内容外泄注意一个边界能检查其他进程或浏览器内存的特权进程不在这个模型的防御范围内但能发起 loopback 请求的普通同用户进程不被信任。第一道防线只绑定 loopback只用 IP 字面量 Origin在 packages/cli/src/web-gateway.ts 中网关的监听方式只有一行核心逻辑server.listen(0, 127.0.0.1, () resolvePromise());即永远只绑定操作系统的 loopback 地址端口随机0表示由系统分配绝不绑定通配地址、局域网地址或可被隐式转发的地址。绑定成功后网关选定一个IP 字面量 Origin例如http://127.0.0.1:43127并刻意不依赖任何 DNS 主机名——这一步就是 DNS rebinding 防御的根基下一节详述。核心防御Host 校验与 Origin 精确匹配DNS rebinding 是什么攻击者在自己控制的域名下先让 DNS 指向公网通过浏览器检查再偷偷把解析结果改绑到127.0.0.1。此时恶意页面与localhost服务同 IP传统基于 IP 的同源策略就可能被绕过浏览器会允许恶意 JS 携带目标服务的 cookie 发起跨站请求。Axl 的应对是双重精确匹配在 web-gateway.ts 中可以看到校验函数const validOrigin (request: IncomingMessage): boolean request.headers.host expectedHost request.headers.origin expectedOrigin;规则非常苛刻Host 必须逐字符等于启动时选定的值如127.0.0.1:43127。绝对形式的请求目标、X-Forwarded-*等转发头都不能覆盖它Host 无效时只返回固定响应不含任何受保护内容。Origin 必须逐字符等于http://127.0.0.1:端口。缺失、null、file://、扩展页面、其他端口、其他 loopback 名称如localhost、0.0.0.0、后缀匹配的来源一律拒绝。CORS 完全禁用。由于恶意域名解析出的 Host 是evil.com而非127.0.0.1:43127它在第一步就被拒绝——DNS rebinding 在 Host 校验这一关就失效了即使攻击者成功完成了 rebind。第二道防线启动令牌launch token一次性握手Host/Origin 校验解决请求来自谁启动令牌解决第一次进入的人是谁。启动时网关用平台密码学随机数生成器创建至少 256 位的启动令牌见 web-gateway.ts 中的randomBytes(32)其生命周期有严格约束✅ 单次使用、60 秒过期、兑换后立即作废✅ 网关关闭时吊销、重启即轮换❌ 绝不出现在 query string、cookie、WebSocket 子协议或普通 API 请求中❌ 绝不写入浏览器持久存储绝不写入日志当axl web自动打开浏览器时令牌被放在URL fragment#token...里——fragment 不会随 HTTP 请求或 referrer 外泄。引导页面的四步操作是读取一次 fragment立即用history.replaceState清除以同源POST /auth/exchange的body提交清除内存中的值。终端默认只打印不含令牌的 Origin只有显式使用axl web --print-url用于网关无法自行打开浏览器的环境才会打印带令牌的 URL。第三道防线浏览器凭证 cookie 的完整属性集兑换成功后返回的浏览器凭证是一个随机 cookie属性在 web-gateway.ts 中可完整看到axl_webbase64url; Path/a/进程随机前缀/; HttpOnly; SameSiteStrict; Max-Age43200至少 256 位熵、HttpOnly应用 JS 读不到、SameSiteStrict跨站请求根本不带 cookiehost-only不绑定域名防域名混淆进程随机 Path 前缀至少 128 位熵。这里有个针对Cookie 不区分端口这一浏览器行为的巧思同一 loopback 上其他端口的无关服务虽然共享这个 origin 的 cookie但猜不到那个随机路径前缀因此拿不到任何鉴权端点。规范强调路径前缀是路由隔离本身不是认证——WebSocket 升级需要cookie 精确 Host 精确 Origin 路径前缀四者同时满足。若浏览器无法在 loopback origin 上应用这些 cookie 行为网关选择启动失败而非放宽策略fail closed。第四道防线WebSocket 限额、限流与背压针对洪水、慢速客户端规范设定了一组硬上限浏览器输入无法调宽并在 web-gateway.ts 中落地限制项值握手超时 / 空闲超时5s / 60s心跳单条文本帧 / 拼装消息上限1 MiB二进制帧直接拒绝压缩禁用入站速率每滚动 10s 100 条突发 20出站队列每附件 4 MiB 或 1024 条浏览器附件总数每网关 16 个一个值得注意的细节每个 WS 帧必须是恰好一条 NDJSON 记录帧尾单换行否则直接断开——否则攻击者可以往一个帧里塞大量请求按帧计数就绕过了按条限流。当出站队列满时网关只暂停该附件的 daemon 读取其他附件不受影响若 10 秒内队列不降到一半以下才以特定原因码关闭这个慢连接。客户端随后从最后确认的游标重连事件不丢。收尾HTTP 策略、日志纪律与 19 项验收测试所有响应统一携带一组安全头web-gateway.ts 中的SECURITY_HEADERSContent-Security-Policydefault-src self、frame-ancestors none等、nosniff、no-referrer、no-store、跨源隔离头。生产 HTML 无内联脚本仓库内容、Markdown、工具输出一律按不可信文本处理未启用任何原始 HTML 渲染。日志侧则划了明确的白/黑名单可以记录 loopback 地址、端口、附件 ID、字节数绝不允许出现启动令牌、cookie、带令牌的 URL、提示词或事件内容、provider 凭证。错误页是固定模板不含堆栈和请求头。最后规范列出了19 项自动化安全验收测试第 1 条即网关只监听 loopback第 2 条即无效/歧义 Host 拿不到受保护内容实现位于 packages/cli/test/web-gateway.test.ts配套设计文档可参考 docs/architecture/web-gateway-security.md 与 docs/architecture/web-client.md。总结这套威胁模型的分层思路网络层只绑127.0.0.1 随机端口拒绝一切外部路由可能身份层IP 字面量 OriginHost/Origin 逐字符匹配 → 从根上瓦解 DNS rebinding凭证层一次性 256 位启动令牌fragment 传递→ HttpOnly SameSiteStrict 随机路径前缀 cookie资源层硬上限 单附件隔离的背压慢客户端被逐出而不连累他人泄露层固定错误页、日志黑名单、no-referrer全链路防泄露。每一层的失败模式都指向同一个答案宁可启动失败也不降级策略。这也是 Axl Web 网关安全模型最值得借鉴的地方——安全不是加在功能上的补丁而是贯穿绑定、校验、凭证、限流、日志的单一不变式。赞分享【免费下载链接】Axl项目地址https://gitcode.com/gh_mirrors/axl/Axl点击查看免费下载相关推荐autocontext 安全模型完全解析Loopback 绑定、Bearer Token 与沙箱执行边界如何守住 3 道防线autocontext 安全模型完全解析Loopback 绑定、Bearer Token 与沙箱执行边界如何守住 3 道防线 autocontext 是一个递日常时间省一半ok-ww 鸣潮自动战斗的 3 个可编程技巧日常时间省一半ok ww 鸣潮自动战斗的 3 个可编程技巧 大多数人把 ok ww 当成点一下就完事的程序装好、配好、跑起来。但它真正值钱的地方不是这个GUI 自动化计算机视觉RPA人工智能Fiber v3 Host Authorization 中间件实战指南基于 Host 白名单的 DNS 重绑定攻击防护Fiber v3 Host Authorization 中间件实战指南基于 Host 白名单的 DNS 重绑定攻击防护 导读 Host Authorizati后端Web框架创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑