别让桌面应用变成内网探测器:给 AI Agent 的 SSRF 防护
AI 助手可能把一条指向你家路由器的链接交给桌面应用。KwaFlux 像浏览器一样解析主机名、再做 DNS 复核,并讲清这套防护管到哪儿为止。
要点速览
- 如果 AI 助手能让桌面应用去抓取一个链接,一条被投毒的指令就能把它指向你的路由器、本机服务或云上的元数据地址,而不是一个视频。
- 同一个地址有很多种写法:
127.1、2130706433、0x7f000001、[::ffff:127.0.0.1]指的都是这台电脑。KwaFlux 按浏览器的规则解析主机名,所以每种写法都会还原成真实地址再检查。 - 下载真要开始时,KwaFlux 还会解析主机名,指向本机或内网就拒绝;同时不误伤代理软件 fake-IP 模式所用的地址段。
- 下载过程中的跳转和 DNS 重绑定目前还不在防护范围内。这一点我们直说,相关改进已在路线图上。
AI 助手请 KwaFlux 下载一个链接时,真正发起连接的是 KwaFlux 的下载引擎。这个引擎跑在你的电脑上,也就是在你的网络里面。如果链接指向的不是视频页面,而是 http://192.168.1.1/,一个不设防的应用就会替助手去连你的路由器。
KwaFlux 会阻止助手提交的链接访问这台电脑和内网地址。下面讲怎么做到的,以及这道防护在哪儿止步。
本文会讲 SSRF 对桌面应用意味着什么、黑名单为什么挡不住地址的各种写法、KwaFlux 怎样既查写出来的主机又查解析出的地址,以及哪些情况还没覆盖。
目录
- 什么是 SSRF?
- 为什么 AI 驱动的桌面应用会暴露在风险里
- 一个地址,多种写法
- 第一层:像浏览器一样解析主机
- 第二层:看主机名解析到哪儿
- fake-IP 的例外
- 防护管到哪儿为止
- 常见问题
什么是 SSRF?
服务端请求伪造(SSRF)是一种攻击:设法让某个程序替攻击者向他指定的目标发请求,而这个目标通常是攻击者自己够不着的,比如同一台机器上的服务或内网。
这个名字来自 Web 服务器,但任何替别人抓取 URL 的程序都适用这个套路。MCP 的安全指南列出了常见目标:http://192.168.1.1/admin 这类内网 IP、http://169.254.169.254/ 上的云元数据接口,以及 http://localhost:6379/ 这类本机服务。
为什么 AI 驱动的桌面应用会暴露在风险里
三件事凑到了一起:
- 应用会抓取 URL。 KwaFlux 的文件下载功能会去连接给它的任何链接。
- 应用就在你的网络里。 从你的电脑看,
192.168.x.x是你的路由器、NAS 或打印机,127.0.0.1是你在本机跑的所有服务。 - 链接可能来自模型读到的文字。 视频简介或网页可以叫助手“先查一下这个链接”。这是怎么发生的,见网页标题里的提示词注入。
下载引擎去抓一个内网地址,响应未必会给任何人看,但哪怕一条报错信息,也能让攻击者知道那个地址上有没有设备。这就是我们说的“把桌面应用变成内网探测器”。
一个地址,多种写法
靠字符串比对挡住 127.0.0.1 和 localhost 是不够的。URL 解析器接受同一个地址的许多其他写法。下面是 Node.js 20 里 WHATWG URL 解析器对其中几种写法的解析结果:
| 链接里的写法 | 解析出的主机 |
|---|---|
标准写法 http://127.0.0.1/ | 127.0.0.1(本机) |
两段简写 http://127.1/ | 127.0.0.1(本机) |
单个十进制数 http://2130706433/ | 127.0.0.1(本机) |
单个十六进制数 http://0x7f000001/ | 127.0.0.1(本机) |
首段十六进制 http://0x7f.0.0.1/ | 127.0.0.1(本机) |
首段八进制 http://0177.0.0.1/ | 127.0.0.1(本机) |
单个八进制数 http://017700000001/ | 127.0.0.1(本机) |
末尾带点 http://127.0.0.1./ | 127.0.0.1(本机) |
IPv6 完整写法 http://[0:0:0:0:0:0:0:1]/ | [::1](本机) |
IPv4 映射的 IPv6 http://[::ffff:127.0.0.1]/ | [::ffff:7f00:1](本机) |
内网地址的两段简写 http://10.1/ | 10.0.0.1(内网) |
十六进制的元数据地址 http://0xa9fea9fe/ | 169.254.169.254(链路本地) |
除最后两行外,每一行指向的都是这台电脑。10.0.0.1 是内网地址,169.254.169.254 是云平台用来提供实例元数据的链路本地地址。
WHATWG URL 标准解释了原因:以 0x 开头的段按十六进制读,以 0 开头的段按八进制读,不足四段的地址由最后一段补满剩下的字节。OWASP 的 SSRF 防范指南也提醒了同样的“十六进制、八进制、Dword”编码;MCP 的安全指南还补了一句:“不要自己手写 IP 校验。攻击者会利用自定义解析器常常漏掉的编码技巧(八进制、十六进制、IPv4 映射的 IPv6)。”
第一层:像浏览器一样解析主机
KwaFlux 不做字符串比对。它按浏览器使用的同一套规则解析主机,再检查解析结果:
- WHATWG 主机解析会在检查之前,把简写、八进制和十六进制段、单个数字的地址以及末尾的点,统统还原成真实地址。
- IPv6 按全部 16 个字节检查,所以像
[::ffff:7f00:1]这样的 IPv4 映射写法会被认出是环回地址,而不是被当成某个陌生的 IPv6 地址放过。 - **含
%的主机一律拒收。** 这样就排除了 IPv6 区域标识和主机名里的百分号编码花招。 - 环回、内网和链路本地地址都会被拒绝,比如
127.0.0.0/8、::1、10.0.0.0/8、192.168.0.0/16和169.254.0.0/16。
这正是 OWASP 的建议:检查时“用方法或库输出的值作为 IP 地址”,而不是用户敲进来的文本。
第二层:看主机名解析到哪儿
一个主机名看着无害,照样可能指向你的内网。router.example.net 的 DNS 记录也可以写成 192.168.1.1。
所以,一个已登录用户的下载要进队列时,KwaFlux 还会解析主机名,超时时间 2 秒。只要解析结果指向本机或内网,这次下载就会被拒绝。
公网上有些主机名的 DNS 记录就指向 127.0.0.1 或内网地址,这一步检查拦的就是它们。
fake-IP 的例外
有些代理软件会用一种“fake-IP”模式:对每次 DNS 查询都回一个 198.18.0.0/15 段里的地址,再由代理自己去连真正的目标。IANA 的登记表把这个地址段列为“Benchmarking”(基准测试,RFC 2544),既不是内网段,也不是环回段。
如果 KwaFlux 把这个段当成内网,用这类代理的电脑上所有下载都会失败。所以在检查解析结果时,这个段被排除在外。
防护管到哪儿为止
这里我们要说得准确,因为 SSRF 防护最容易被说过头。
- 覆盖的:助手提交的链接本身。写出来的主机和它的主机名解析出的地址,都会检查。
- 还没覆盖的:下载过程中发生的事。一个链接可能检查时解析到公网地址,片刻之后又解析到内网地址(DNS 重绑定);一个公网页面也可能跳转到内网地址。MCP 的安全指南把前者称为“检查时与使用时”不一致的问题;OWASP 也指出,“在校验和连接之间多出一次未经检查的 DNS 查询,就能绕过这些检查”。
更周全的办法,是让下载引擎的连接都经过一个组件,在每次连接真正发生的那一刻检查它,包括每一次跳转。这已经在我们的路线图上。之所以还没做,是因为它要改三套代码库里下载引擎的联网方式,会影响每一次下载,包括你自己发起的下载,需要单独发版、单独测试。
所以准确的说法是:KwaFlux 会阻止 AI 助手让它去访问这台电脑和内网里的地址。它不承诺任何连接都到不了那里,我们也不会把它说成“只能访问公网”。
在那之前,还有两道限制帮得上忙:AI 发起的下载默认关闭;在“每次询问”档,任何东西被抓取之前,你都会先看到链接。见AI 不能替你按确认键。
结语
查地址,别查写法。像浏览器一样解析主机,下载开始前看主机名解析到哪儿,别误伤代理的 fake-IP 地址段,并且把还没覆盖的部分讲清楚。KwaFlux 就是这样防止助手的链接把它变成你内网的探测器。
让助手只抓它该抓的
KwaFlux 的本地 MCP 服务让 Codex、Claude、Cursor 等 MCP 应用处理你的文件,并检查助手提交的每一个链接。AI 处理在你自己的 GPU 上运行,媒体文件不会为了处理而上传。可在 Windows 10(64 位,1809 或更新版本)、Windows 11,以及搭载 Apple Silicon 的 macOS 12 或更新版本上运行。导入文件和浏览应用都不需要账号。仅在导出、转换、文件修复和从链接下载文件时需要登录并购买付费方案。
用你自己的素材试试效果
下载 KwaFlux,付费前先用自己的素材免费预览效果——无需注册,在你的 GPU 上处理,处理不需要上传媒体文件。 视频预览可选 1、3或5 秒;防抖预览可选 5、15或30 秒。
常见问题
SSRF 用大白话怎么说?
就是诱导一个程序替你发请求,发到你自己够不着的地方,比如路由器的管理页面或同一台电脑上的服务。任何替别人抓取链接的程序,都可能被这样利用。
为什么 127.1 等于 127.0.0.1?
因为遵循 WHATWG 标准的 URL 解析器允许 IPv4 地址少于四段,由最后一段补满剩下的字节,127.1 就成了 127.0.0.1。十六进制和八进制的段也照样接受。
屏蔽内网 IP 能防住 DNS 重绑定吗?
不能。重绑定改的是主机名在检查和连接之间解析到的地址。要防住它,必须在连接那一刻检查,比如固定解析结果,或者经过一个逐次检查连接的出网代理。
198.18.0.0/15 这个地址段是干什么用的?
它是 RFC 2544 留给网络基准测试的。有些代理软件也拿它做 fake-IP 模式,用这个段里的地址回应 DNS 查询。它不是内网段,也不是环回段。
桌面应用也要担心 SSRF 吗?
要,只要它会抓取别人能左右的 URL。桌面应用就在你的家庭或办公网络里,它抓到的内网地址,能碰到网站碰不到的设备。见怎样保护本机的 AI 通道。
参考资料
- OWASP, SSRF prevention guide (encodings; DNS rebinding; redirects) (2026-10-25 查阅)
- WHATWG, "URL Standard" (IPv4 parser; IPv4 number parser; ends-in-a-number checker) (2026-10-25 查阅)
- IANA, "IPv4 Special-Purpose Address Registry" (198.18.0.0/15 Benchmarking, RFC 2544; 127.0.0.0/8; 169.254.0.0/16; last updated 2025-10-09) (2026-10-25 查阅)
- Model Context Protocol, security guidance for implementers (2026-07-28; Server-Side Request Forgery) (2026-10-25 查阅)


