万圣节特惠不给糖,就修片!三档同时降价,永久授权立省 $30截至 11 月 2 日 23:59(美西时间)

查看定价

本机不等于安全:AI 助手和桌面应用之间的通道怎么设防

本机 MCP 连接为什么还要设防:只给当前用户的命名管道、首实例独占、128 位令牌、常量时间比较,以及出错就不发布的控制文件。

要点速览

  • AI 助手和桌面应用之间的本机连接,照样可能被同一台电脑上的其他用户、远程客户端,以及抢先占用通道名字的程序碰到。
  • 在 Windows 上,KwaFlux 的通道是一个只有你的账户能打开、由 KwaFlux 抢先独占、并且拒绝远程客户端的命名管道;在 Mac 上,是一个只对你的账户开放权限的 socket。
  • 每条连接都要先出示一个 128 位随机令牌,用常量时间比较,令牌不进日志,并且可以在设置里重置。
  • 把令牌交给 MCP 服务的那个文件,是以原子方式、只给属主权限写出的;权限设不上,KwaFlux 就干脆不发布它。

AI 助手通过你自己电脑上的一条通道和 KwaFlux 对话,人们很容易以为别人碰不到这条通道。其实不一定。在 Windows 上,按默认设置创建的命名管道,任何用户都能读,能从网络上连进来,谁先创建就归谁。

KwaFlux 把这几扇门一扇扇关上了,本文逐一说明怎么做的。

本文会讲本机通道被人碰到的三种途径、KwaFlux 针对每种途径的防护、令牌怎样安全地交到 MCP 服务手里,以及本机通道防不住什么。

目录

  1. 什么是本机 IPC 通道?
  2. “本机”出问题的三种途径
  3. 第一层:谁能打开管道
  4. 第二层:每条连接都要令牌
  5. 第三层:发布令牌而不泄露
  6. 第四层:给客户端设上限
  7. 通道防不住的事
  8. 我们怎么测
  9. 常见问题

什么是本机 IPC 通道?

本机 IPC(进程间通信)通道,是让同一台电脑上的两个程序不经过网络协议栈、直接互发消息的连接。Windows 上的命名管道和 macOS 上的 Unix 域套接字都是常见的例子。

在 KwaFlux 的 MCP 架构里,你的 AI 助手启动 KwaFlux 的 MCP 服务,用来处理文件修复、格式转换这类任务,这个服务再通过这样一条通道连到正在运行的 KwaFlux。它在各层中的位置,见控制面这篇。

“本机”出问题的三种途径

风险具体场景为什么要紧
同一台电脑上的其他账户家庭共用电脑、共享工作站、多人登录的远程桌面服务器微软文档写明,命名管道的默认安全描述符会“向 Everyone 组成员和匿名账户授予读取权限”
远程客户端命名管道可以按名字从网络上打开微软说明,接受远程客户端的管道只按其安全描述符来检查对方
抢注另一个程序在 KwaFlux 启动之前,先创建了同名管道MCP 服务会把请求连同令牌一起交给冒充者

这些都不需要什么高深的攻击手法,全是默认设置带来的。

第一层:谁能打开管道

KwaFlux 在 Windows 上创建管道时用了三项设置,分别对付上面三种风险:

  • 只给你的账户的安全描述符。 默认描述符会把全部控制权交给系统和管理员、把读取权限给 Everyone;KwaFlux 的管道访问列表里只写当前用户。
  • 只认首个实例。 KwaFlux 创建管道时带上 FILE_FLAG_FIRST_PIPE_INSTANCE。微软文档说,带这个标志时,“第一个实例创建成功,再创建下一个实例就会以 ERROR_ACCESS_DENIED 失败”。如果名字已经被别人占了,KwaFlux 能发现,也不会在不属于自己的管道上提供服务。
  • 不接远程客户端。 管道使用 PIPE_REJECT_REMOTE_CLIENTS,微软对它的描述很直接:“来自远程客户端的连接会被自动拒绝。”

在 macOS 上,应用监听的是一个文件权限为 0600 的 Unix 域套接字,只有你的账户能打开。

补充: MCP 规范的安全指南对本地服务给的建议也是这些:用 stdio 传输,把访问限制在 MCP 客户端;如果服务还用了别的传输方式,就要求授权令牌,或者使用“访问受限”的 IPC。KwaFlux 两样都做了:宿主通过 stdio 连 MCP 服务,MCP 服务再通过带令牌、访问受限的通道连应用。

第二层:每条连接都要令牌

权限决定谁能打开通道;令牌证明另一端就是 KwaFlux 亲手配好的那个程序。

  • 生成。 KwaFlux 启动时,用操作系统的密码学随机数生成器生成一个 128 位令牌。
  • 握手。 每条连接都必须先发一条带令牌的 hello 消息。握手成功之前,应用在这条连接上什么都不接。
  • 常量时间比较。 KwaFlux 逐字节比对令牌时,不管错在第一个字节还是最后一个字节,耗时都一样,所以没法通过响应时间判断猜对了多少。
  • 不进日志。 令牌不会写进 KwaFlux 的日志,也不会出现在设置里的调用记录中。
  • 重置。 设置里的 重置 Agent 访问令牌 会把它换成一个新的随机值。现有的 Agent 连接会被断开,已配置好的宿主下次调用时会用新令牌重连。如果怀疑旧令牌被别的程序读到过,就用它。

第三层:发布令牌而不泄露

MCP 服务需要拿到令牌,它从 KwaFlux 启动时写出的一个小控制文件里读取。这个文件要是处理得马虎,就是整条链上最薄弱的地方,所以对它最谨慎。

控制文件发布的五个步骤:创建控制目录;把目录访问列表限制为当前用户;确认目录属主是当前用户;以同样的限制把令牌写入临时文件;用临时文件以原子方式替换控制文件。任何一个权限步骤失败,KwaFlux 就停下,不发布这个文件
  1. 创建控制目录,放在你的用户目录下。
  2. 只开放给你的账户。 目录的访问列表只写当前用户,不从上级目录继承更宽的权限。
  3. 核对属主。 KwaFlux 确认这个目录归当前用户所有,别人事先放好的目录不会被信任。
  4. 写入临时文件,同样只开放给你。
  5. 以原子方式替换控制文件,读取方看到的要么是旧文件,要么是新文件,不会读到写了一半的。

关键在出错时怎么办。早先的版本是先写文件、再收紧权限,收紧失败也只记一条警告。现在,只要权限设不上,KwaFlux 就不发布这个文件。修好之前 MCP 用不了,这是值得的取舍:连接断了你看得见,令牌被人读走你看不见。

第四层:给客户端设上限

即使是正规通过认证的客户端也有上限,因为它背后的 AI 可能被读到的内容带偏:

限制项数值
同时连接数8 条
单条消息大小上限 64 KiB
空闲连接5 分钟后断开
新任务全局每分钟 10 个,单条连接 6 个
任务控制只能控制这条连接上的 Agent 自己提交的任务
总开关KwaFlux 里一个设置就能关掉全部 Agent 访问

这些是用来兜住一个糊涂了或被操纵了的助手的。路径与隐私这篇和 SSRF 这篇从别的角度讲了同一件事。

通道防不住的事

边界我们想说准,因为夸大的安全承诺比不说更有害。

这条通道的防护,挡的是其他用户账户、其他电脑,以及想抢占管道名字冒充 KwaFlux 的程序。它挡不住已经以你的账户身份在运行的恶意软件。以你的身份运行的程序,本来就能读你的文件、浏览器数据和你能读的一切;没有哪个本地应用能把自己和这类程序隔开。把这类软件挡在电脑外面,是操作系统和安全软件的事。

补充: 第三层的加固和令牌重置先在 Windows 上发布。Mac 版已经在用只对属主开放的 socket 和令牌握手;其余几项在 Mac 上发布后,我们会更新本文。

还有一项改动排在后面:一种双方各自证明身份、而秘密本身不经过通道的握手。暂缓是因为它要同时改两端的协议,握手一出错,所有人的 MCP 都会用不了;而它要防的情形,大半已经被首实例独占和服务端的存活校验挡住了。

我们怎么测

控制面的请求处理有 341 项断言。另有一套端到端测试,会启动真实的控制面和真实的 MCP 进程,跑 12 组安全用例,覆盖本文讲到的通道和路径检查。两者都是 KwaFlux 自动化测试的一部分,削弱其中任何一条规则的改动,都会以测试失败的形式暴露出来。

结语

“只在本机监听”是本机通道安全的起点,不是终点。限定谁能打开,确保名字归你,每条连接都要认证,秘密要么谨慎发布、要么不发布,再把防不住的范围讲清楚。KwaFlux 就是这样守住 AI 助手和应用之间这条线的。

一个认真对待安全的本地 MCP 服务

KwaFlux 通过一条只有你的账户能打开的通道连接 Codex、Claude、Cursor 等 MCP 应用。AI 处理在你自己的 GPU 上运行,媒体文件不会为了处理而上传。可在 Windows 10(64 位,1809 或更新版本)、Windows 11,以及搭载 Apple Silicon 的 macOS 12 或更新版本上运行。导入文件和浏览应用都不需要账号。仅在导出、转换、文件修复和从链接下载文件时需要登录并购买付费方案。

下载 KwaFlux · 查看方案

用你自己的素材试试效果

下载 KwaFlux,付费前先用自己的素材免费预览效果——无需注册,在你的 GPU 上处理,处理不需要上传媒体文件。 视频预览可选 1、3或5 秒;防抖预览可选 5、15或30 秒。

常见问题

Windows 的命名管道安全吗?

要看怎么创建。用默认安全描述符创建的管道,Everyone 可读,还接受远程客户端。显式设置访问列表,再加上 PIPE_REJECT_REMOTE_CLIENTS 和 FILE_FLAG_FIRST_PIPE_INSTANCE,它就只对这台电脑上你的账户开放。

命名管道能从网络上访问吗?

能,默认就可以。Windows 允许客户端按名字打开另一台机器上的管道,而接受远程客户端的管道只按安全描述符检查对方。创建时传入 PIPE_REJECT_REMOTE_CLIENTS 就会拒收。

什么是命名管道抢注?

就是某个程序赶在另一个应用启动之前,先用对方要用的名字创建管道,让客户端连到冒充者那里去。创建管道时带上 FILE_FLAG_FIRST_PIPE_INSTANCE,真正的服务端就能发现名字已被占用。

为什么令牌要用常量时间比较?

因为普通的比较遇到第一个错字节就停,猜对的字节越多,耗时就略长一点。测量这点差别,就可能一个字节一个字节地把秘密试出来。常量时间比较不论对错,耗时都一样。

用本地 MCP 服务,我的数据就不会被别的程序碰到了吗?

部分是。做得好的本地服务能挡住其他账户、其他电脑和冒充的程序,但挡不住已经以你的身份运行的恶意软件,它能读你能读的一切。见本地应用能护住什么、护不住什么。

参考资料

  1. Microsoft Learn, "CreateNamedPipeA function" (FILE_FLAG_FIRST_PIPE_INSTANCE, PIPE_REJECT_REMOTE_CLIENTS, default security descriptor) (2026-10-25 查阅)
  2. Microsoft Learn, "Named Pipe Security and Access Rights" (2026-10-25 查阅)
  3. Model Context Protocol, security guidance for implementers (2026-07-28; Local MCP Server Compromise) (2026-07-28 查阅)
  • 教程
  • MCP 协议

KwaFlux 作者兼编辑。文章经 KwaFlux 编辑部审阅,依据产品调研记录与公开发布的规格。