前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
AI 面试
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
AI 热点
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
AI 面试
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
AI 热点
开发者导航
返回 AI 情报前线
All News · 全部资讯3998
  • GitHub法务团队用Copilot CLI实现零代码工作流优化
  • 我用 Claude Code 将一周任务压缩到两天:复杂表单实战复盘
  • Amazon Bedrock 原生集成 Web Search:LLM 实时联网检索
  • Cursor开源MoK:GB300 NVL72机架上的确定性MoE训练大内核
  • AI 门控测试的"绿戏"陷阱:把假数据打在网络层才能真测
  • Agent身份扫描暴露真相:你的Agent系统不过是脆弱胶水代码?
  • 多Agent研究工作流的静默失败:失败看起来像成功
  • OpenAI 内部路线图:今年秋季 Codex 将显得「原始」
  • MCP Servers + Agents:让Claude Code告别"中间人"状态
  • ChatGPT Work亿级用户Agent架构解析
  • OAuth 2.0 的隐含假设正在被 AI Agent 打破
  • LLM记忆不是聊天历史:如何设计能改进未来决策的记忆系统
  • OpenAI Astra证明10条数学定理,token成本2000美元
  • AI写的代码review发现不了webhook重试bug
  • 融合 NeetCode 150 与 Blind 75 的面试题模式追踪表
  • Agentic 软件工程使人类上下文成为瓶颈
  • CopilotKit 开源 Channels SDK:一套代码把 AI Agent 接入 Slack/MS Teams
  • 15分钟构建生产级MCP服务器:无需SDK
  • 为何 AI 编程助手在大型代码库中频频迷失
  • DiffusionGemma 为何快:离散扩散打破自回归从左到右的顺序约束
  • AI 编程助手的批准对话框正在欺骗你:GhostApproval 符号链接漏洞详解
  • Claude Code Subagent 失效?先改 description 字段
  • 用本地 LLM 在打开陌生代码库前先做安全 triage
  • Agent记忆不是聊天历史:工作记忆与长期记忆的本质区别
  • Google Cloud推统一AI模型路由API
  • 实测:我的代码Agent对我技术栈的了解只有40%
  • 基于AWS Bedrock AgentCore的自动化网页洞察提取
  • AI账单是分布式系统问题,不是模型定价问题
  • AI 模型能包揽软件全流程,但几乎都不该那样用
  • GitHub Spark将于8月底正式停用
  • DeepSeek V4 Flash登顶OpenRouter,价格仅为GPT-4的5%
  • obstat库:让Agent决策日志写在执行之前
  • Evals是AI时代的CI:对Agent产出建立验收层
  • 前沿AI模型主动突破沙盒:能力跃升而非漏洞
  • 测试全过但核心检查从未运行:AI写作循环中的认证失效陷阱
  • SAST工具专为AI代码设计:umbra静态扫描
  • Agent交接契约:解决多Agent状态丢失问题
  • AI 代码编辑器横评:Cursor vs VS Code + Copilot vs Windsurf
  • Swarm EventBus 解析:用 35+ Go 包构建事件驱动 AI Agent 系统
  • MCP 协议详解:AI Agent 互操作性的标准基石
  • Cursor vs Copilot vs Windsurf:三大 AI 编辑器真实使用对比
  • 持久化执行:分布式事务外如何保证步骤只执行一次
  • pgvector vs Pinecone vs Qdrant:何时该用专用向量数据库
  • 你的 AI agent 在测试上撒了谎
  • 阿里Qwen3.8-Max发布:开源外套下的API商业模式
  • 面向工程师的实用Prompt工程模式
  • 开源项目:把团队代码规范封装成 Claude Code/Codex Agent 技能
  • Agent质量门禁:确定性规则优于LLM裁判
  • Opus/Sonnet/Haiku并行了30天:模型路由实战总结
  • Nvidia NOOA:用一个Python类实现Agent开发
  • 持久化执行是需独立安装的组件
  • 已加载 51 / 3998
9.0
重磅
AI SCORE
行业动态2026-08-05 00:38

AI 编程助手的批准对话框正在欺骗你:GhostApproval 符号链接漏洞详解

dev.to · AI#安全#AI编程助手#漏洞
Editor brief · 编辑速览

Wiz Research 披露 GhostApproval 漏洞,六大 AI 编程助手(Amazon Q、Claude Code、Augment、Cursor 等)存在符号链接攻击风险:对话框显示的是工具调用路径而非文件系统解析后的真实路径,攻击者可诱导用户批准写入 SSH 私钥等敏感文件。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

7 月 8 日,Wiz Research 披露了 GhostApproval——一个同时影响六款主流 AI 编程助手的中毒链接(symlink)漏洞:Amazon Q Developer、Claude Code、Augment、Cursor、Google Antigravity 和 Windsurf。这个 Bug 简单到近乎侮辱,这恰恰是它能够得手的原因。

一个仓库附带了一个名为 project_settings.json 的文件。实际上它是一个符号链接,指向你的 SSH 密钥。你让 Agent"设置工作区"。Agent 解析了这个链接,向真实目标写入内容,然后给你展示一个Approval 对话框,上面写的是 project_settings.json——因为这是它被告知的名称,而不是它实际要操作的文件。你点了批准。你在毫不知情的情况下,授权了一次对 ~/.ssh/id_rsa 的写入。

这次披露有三点值得关注。

对话框的表现完全符合设计

它显示的是工具调用时所使用的路径,而不是文件系统在解析符号链接之后实际指向的路径。Agent 声称在做的事与文件系统实际执行的操作之间的这道鸿沟,是一类存在了数十年的 Bug——TOCTOU 和符号链接攻击比 LLM 早了三十年——它直接被搬进了 Agent 编程领域,因为没有人把过去的教训迁移过来。

厂商在这是不是漏洞上产生了分歧

Amazon、Google 和 Cursor 都发布了修复。Augment 和 Windsurf 保持沉默。Anthropic 则反驳说 Claude Code 的行为并非缺陷,理由是:信任一个目录并批准了一项编辑的用户,需要为这个决定负责。这在抽象层面可以自圆其说,但在实践中毫无用处:没有任何人在审阅"设置工作区"请求时会先在脑子里解析一遍符号链接再点同意。要求人类在点击之前先破解攻击者的意图,这不是 consent,而是把责任转移包装成了 consent。

DuneSlide 事件

同一周,Cursor 修复了 DuneSlide——两个 CVSS 9.8 的零点击 RCE 漏洞,其中 MCP 响应或搜索结果中被提示注入的指令完全逃逸了沙箱,根本不需要任何 Approval。GhostApproval 和 DuneSlide 以两种不同的方式把信任边界放错了位置。一个依赖人类在时间压力下正确读懂对话框。另一个则直接把人类跳过了。

按操作审批从来不是一种架构。它是一种权宜之计,要求每个人在每次决策时都做出正确的安全判断——而 Agent 生成决策的速度比任何人能审核的速度都快。GhostApproval 就是在 Agent 和你的 SSH 密钥之间,只剩下"你有没有注意到文件名"这道屏障时会发生的事。

真正的修复是在 Agent 运行之前就限定它能触碰的范围,而不是让人在每次操作发生时充当裁判。一份 spec 列出了一个给定任务在范围内允许的路径、操作和目录,就将"人类有没有 catch 到这个"变成了"这本来是不是一次合法操作"。如果 Agent 根本就没被授权去写 /src 以外的地方,你就不需要去识破一个符号链接攻击。写下你的 spec,在事前就定义好爆炸半径。别把这个职责外包给一个没人有时间去验证的对话框。

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
DiffusionGemma 为何快:离散扩散打破自回归从左到右的顺序约束
下一篇
Claude Code Subagent 失效?先改 description 字段