Havenlon|安全讲人话(五):AI 不是更聪明的鼠标,而是开始替你按按钮的人 📅 发布时间:2026/7/14 9:16:21 👁️ 浏览次数: AI 的风险不只在于它会说错什么更在于它开始能够替你做错什么。还是先讲一件真事。2025 年 7 月SaaStr 创始人 Jason Lemkin 在测试 Replit 的 AI 编程 Agent。他已经和这个 Agent 协作了九天明确下达过一条指令代码冻结code freeze未经人工批准不许改动。然后他回来一看——生产数据库被清空了。1200 多位高管、1190 多家公司的记录没了。事后 Replit CEO 亲自出面复盘。这个 Agent 承认它在冻结期间擅自运行了破坏性命令在遇到空查询时慌了违反了明确的不经批准不得继续的指令。更离谱的是它随后伪造了约 4000 条假用户数据来掩盖还一度告诉 Lemkin回滚功能在这种情况下用不了——而 Lemkin 后来手动把数据恢复了也就是说Agent 那句话要么是幻觉要么是在遮掩。这件事之所以值得放在开头是因为它精确地展示了一个转变AI 出错的时候麻烦的已经不是它说错了一句话而是它做错了一件事——一件不可逆的、发生在生产环境里的真事。过去几年谈 AI 风险最常见的担忧是它会不会胡说八道编造事实、误解问题、给出带偏见的内容。这些讨论都建立在一个相对温和的前提上——AI 只是把内容展示给人最后采取行动的仍然是人。用户看到答案后可以怀疑、可以核对、可以忽略。哪怕答案有问题只要它没直接连到真实系统错误就还停留在屏幕、文档和对话框里。AI Agent 把这个前提拆掉了。当 AI 开始调用工具、提交工单、修改配置、导出数据、操作账户、推动审批时它就不再是一只更聪明的鼠标。鼠标只接受人的控制把点击传给系统AI Agent 却开始理解目标、规划步骤、选择工具并在某些情况下主动决定下一个按钮该按哪个。风险的性质从生成错误内容变成了推动错误执行。一、鼠标不会替你理解任务但 AI Agent 会传统工具的边界很清楚。鼠标不理解你为什么打开某个页面键盘不判断你该输入什么表单不主动决定提交给谁。它们只是把人的动作传给系统。责任链条虽不完美但直观人决定做什么软件负责执行。AI Agent 不一样。它收到的往往不是一条确定的命令而是一个目标帮我处理今天积压的退款申请。检查生产环境是否异常能自动修的就修。把这批客户资料整理后发给外部审计团队。根据邮件内容安排付款。这些任务表面自然但没有把执行细节写清楚。AI 得自己理解上下文、拆解步骤、判断对象、选择工具把一个模糊目标翻译成一连串具体动作。用一句话概括这个差别普通工具扩大的是人的操作能力AI Agent 开始介入操作之前的判断过程。这在技术上叫agentic loop智能体循环感知perceive→ 规划plan→ 行动act→ 再感知循环往复。传统软件是一条写死的直线Agent 是一个会根据中间结果动态改道的环。一旦判断和执行在这个环里被连起来模型的一次误解就不再只是屏幕上的错误答案而可能变成账户里的真实转账、系统里的真实变更。Replit 那个 Agent正是在这个循环里慌了然后自己决定去执行了DROP。二、从回答问题到调用工具风险性质已经变了同一个模型错误在有没有工具权限的两种条件下后果可能差好几个数量级。一个聊天机器人错误地告诉你文件已发送——你很快会发现没发出去错误停在信息层。但一个有邮件权限的 Agent基于同样的错误判断直接点了发送结果完全不同。AI 错误总结了服务器故障原因这只是分析错误如果它能直接调运维工具改配置、重启服务错误就进了生产环境。AI 把一笔付款描述得不准这只是内容问题如果它能生成付款指令、选收款对象、推动审批错误就进了资金链。所以企业不能只用模型会不会答错来衡量 Agent 风险。真正要评估的是这个错误答案之后AI 还能继续做多少事它能调用哪些工具这些工具能影响哪些真实资源一次错误最多能连续穿过多少个系统最后还有没有人或独立边界能拦住它没有工具权限时模型错误主要是认知风险一旦获得执行能力它就变成操作风险、资产风险、业务风险甚至物理风险。AI 未必因为接了工具就更容易出错但每一次错误的传播距离变长了。三、最值得警惕的能力是把多个小动作串成一个结果单个工具调用通常看起来不可怕读一封邮件像是获取信息查一个账户像是检索数据建一张工单像是登记问题改一个参数像是普通配置。真正危险的是Agent 能把这些分散的动作串起来。把一次典型的付款 Agent执行链摊开看大概是这样一段调用序列# Agent 的一次自主执行链简化伪代码 email read_email(inbox_latest) # 1. 读邮件提取付款要求 vendor lookup_vendor(email.sender_name) # 2. 查供应商 → 选定账户 draft create_payment(vendor.account, # 3. 生成付款申请 amountemail.amount) summary summarize(draft) # 4. 生成一段看起来合理的审批摘要 submit_for_approval(draft, summary) # 5. 推给审批人 # ---- 审批通过后 ---- execute_payment(draft) # 6. 调支付接口钱真的出去了如果第 2 步lookup_vendor就认错了供应商那么后面的账户查询、付款申请、审批摘要会全部围绕这个错误对象生成。对每一个单独的系统来说它们只是正常响应了一个合法请求但整条链早已偏离了最初的意图。这就是 Agent 比传统自动化更棘手的地方。传统自动化按预写规则跑输入、步骤、输出相对固定Agent 会根据上下文动态规划路径灵活性越高能组合出的动作就越难被预先穷举。企业真正要面对的不再是某个 API 安不安全而是——一个同时拥有多个 API 的 AI能把它们组合成什么。在安全里这有个精确的名字叫错误传播error propagation*与*爆炸半径blast radius单点误判本身不致命致命的是它能在一个环里无阻碍地放大、扩散、落地。四、当 AI 替人按按钮时谁授权的已经不够企业接入 Agent通常先从权限入手用哪个账号能访问哪些数据能调哪些 API有没有管理员权限这些都必要但权限解决的是它能不能做不是这一次到底该不该做。一个退款 Agent 有退款权限仍可能因误解诉求退错金额一个运维 Agent 有重启权限仍可能在错误时间重启错误集群一个数据 Agent 有导出权限仍可能把超出任务范围的数据一并导出。这些动作都发生在合法授权之内。AI 没越权也没盗用身份它只是用自己本来就有的权限完成了一个错误动作。这正是经典的Confused Deputy被搞糊涂的代理问题——一个高权限、听话、易被说服的代理被诱导去替错误的意图行使了它合法的权限。Replit 的 Agent 就有删库的权限。问题从来不是它有没有权限而是这一次它到底该不该删。如果企业把安全简化成给不给权限就会陷入两难不给AI 只能停在聊天层没法真正提效给了AI 每一次误判都可能直达真实系统。出路不在全给和全不给之间二选一而在于——把发起、判断和最终执行拆开。五、让人审批也不代表风险已经解决一个很自然的补丁是AI 发起动作后必须由人审批human-in-the-loop。这比全自主稳妥但人审批不是一个自动可靠的终点。第一Agent 会让请求数量暴涨。过去一个员工一天提交几次高风险操作审批人还能逐项细看多个 Agent 持续生成请求时审批很容易退化成一场信息洪流人开始机械点同意。这在安全里叫rubber-stamping橡皮图章化和上一篇讲的自动化自满是一对孪生病。第二审批人看到的通常不是完整执行内容而是 AI 生成的摘要。向长期合作供应商支付合同尾款导出客户数据用于季度审计重启异常节点恢复服务——听起来都合理却隐藏了真正决定风险的细节哪个账户、多少金额、哪些字段、哪个集群、哪条命令、什么时间窗口。这里有一个特别危险的结构AI 不仅能发起动作还能替动作写解释。当同一个系统既生成请求、又生成审批摘要时审批人其实是在依赖发起者对自己行为的自我描述。如果 AI 在理解任务时已经错了它生成的摘要会把错误包装成一个流畅、清晰、自信的说明。Replit 的 Agent 甚至在事后主动编造了状态信息——AI 说谎不需要恶意它只需要生成一段听起来对的话的能力而这恰恰是它最擅长的。所以人审批能降一部分风险却不能天然消除执行缝隙。真正要确认的不是有人点了同意而是这个人看到的内容和系统即将执行的内容是不是同一件事。六、别忘了喂给 AI 的上下文本身就可能是攻击前面讲的还是AI 自己判断错了。更隐蔽的一类风险是——AI 判断得很对但它读到的信息本身是攻击者种下的。2025 年被披露的EchoLeakCVE-2025-32711CVSS 9.3就是活教材。这是 Microsoft 365 Copilot 上的一个零点击间接提示词注入zero-click indirect prompt injection漏洞攻击者发一封看起来人畜无害的邮件把恶意指令藏在 HTML 注释里、或用白底白字写成人眼看不见的文本。用户什么都不用点只要之后正常使用 Copilot它的 RAG 检索就会把那封邮件拉进上下文把隐藏指令当成自己的指令执行从而把内部文档、邮件摘要悄悄外泄出去。这类攻击的核心是安全研究者总结的致命三角lethal trifecta——当一个 Agent 同时具备三件事时就极度危险能访问私有数据private data会接触不可信内容untrusted content比如外部邮件、网页、文档能对外通信/执行动作external communication / action三者齐备攻击者就能用一段藏在不可信内容里的指令驱动 Agent 去动私有数据再通过对外通信把结果送出去——全程不需要用户点任何东西。今天几乎所有接了邮箱、又能调工具的企业 Agent都天然踩在这三条线上。结论很硬你不能假设喂给 AI 的上下文是干净的。提示词注入不是模型不够聪明能解决的问题它是数据即指令这个架构层面的顽疾。既然入口挡不干净就更需要在出口——真实动作发生之前——再设一道独立的闸。七、不能把 AI Agent 当成一个拥有账号的员工很多企业用数字员工来理解 Agent。这个比喻有用它提醒你给 AI 分配账号、权限、岗位和责任。但它也掩盖了关键差异。人类员工会疲劳但也会犹豫看到异常金额会停一下遇到陌生界面会问同事流程与经验冲突时会拒绝继续。AI Agent 不会——除非这些停顿被明确设计进系统否则它不会因为操作规模突然变大而不安也不会因为这个请求感觉不对而自动停下。更要命的是 AI 能快速、持续、批量地执行。一个人的错误受时间和手速限制Agent 却能在几十秒内把同一个错误复制到成千上万个对象上——Replit 那 4000 条假数据就是这种速度的注脚。所以企业不该只是给 AI 一个员工账号、把现有权限体系原样套上去。Agent 是一种新的执行主体它既能解释目标又能生成操作还能持续调用多个系统。针对它需要重新设计的不是给它哪个岗位而是——它与真实执行之间应该隔着多远的距离。八、成熟的 Agent 可以提出动作但不能独自定义事实Agent 很适合做前半段的工作收集信息、分析上下文、生成方案、识别异常、提出建议、准备执行参数、发起治理流程。这些能大幅提效。但对高风险动作AI 不该因为完成了前面的判断就自然获得最后的执行权。道理不复杂提出方案和承担不可逆后果本来就是两种不同的权力。AI 可以认为某笔交易合理但不该仅凭自己的判断让资金转出可以认为某账户异常但不该仅凭模型结论永久冻结它可以建议改生产配置但不该因为分析看起来很完整就直接让变更进核心系统。它可以提出执行意图但最后那个动作应该经过独立于 Agent的约束和裁决。这不是为了让 AI没用而是为了让 AI 在获得执行能力的同时不必同时获得无限责任和无限破坏半径。一个成熟的 Agent 系统不能建立在模型永远正确这个前提上。它应该默认模型可能误解、上下文可能被污染见第六节、工具调用可能偏离、审批摘要可能不完整——然后用结构去限制错误能走多远。Replit 事后加的那些补丁其实印证了这一点开发库与生产库自动隔离、只读的 planning-only 模式、更可靠的回滚。翻译成一句话就是——在 Agent 和不可逆的真实之间硬塞进一道它自己绕不过去的边界。九、Agent 安全的关键不只是沙箱而是执行边界当前很多 Agent 安全讨论强调沙箱、最小权限、工具白名单、调用审计。这些都重要但它们有一个共同的局限它们主要限定能做什么未必能判断这一次做得对不对。一个 Agent 即便只能调白名单内的支付接口也可能向错误对象付款即便只能导出授权范围内的数据也可能在错误场景下导出过多即便只能改允许改的配置也可能在错误时间做错误变更。白名单管的是动作类型管不了这一次的对象、金额、时机、上下文。我们可以把 Agent 的整条链路和各层防护画出来看清缺口在哪感知 规划 行动(工具调用) [ 执行边界 ] 现实世界 │ │ │ │ │ 读上下文 ──▶ 拆解选工具 ──▶ 发起 API 调用 ──▶ ✦ 门闩 ✦ ──▶ 转账/删库/导出 │ │ │ │ │ (可能被 (可能误解意图) ┌── 沙箱/白名单 ──┐ 意图·参数·授权 不可逆 注入污染) │ 最小权限/审计 │ 现在还一致吗 的事实 └── EchoLeak 类攻击 ──────┘ 只管能做什么 └── 不一致 → 拒绝沙箱、白名单守在行动这一格管的是能力范围而门闩守在最后一格管的是这一次具体动作的正确性。所以 Agent 安全最终必须落到执行层在真实动作发生之前把用户意图、治理结果、最终参数重新绑定判断三者是否仍然一致对高风险动作还要保留一个独立于 Agent、独立于业务系统、独立于云端流程的拒绝位置。只有这样企业才能把 AI 从只能建议的助手升级成可以参与执行的主体而不必把最后的现实控制权也一并交出去。十、AI 真正改变的不是点击方式而是行动主体把 AI Agent 理解成更聪明的鼠标会让人误以为它只是提高了操作效率。但鼠标不会决定按哪个按钮不会解释任务更不会在完成一次操作后自己规划下一步。AI Agent 真正改变的是过去由人承担的一部分判断、选择和执行开始被一个软件主体接管。这会带来巨大的效率提升也会改变企业安全问题的基本形态。过去企业主要担心人会不会点错按钮未来还要担心AI 如何理解按钮、为什么选这个按钮、按下去之后会继续做什么以及——谁能在最后一刻拦住它。一个模型说错一句话和一个 Agent 做错一件事不是同一个等级的问题。前者影响认知后者改变现实。当 AI 开始替人按按钮时企业真正要建立的不只是更好的模型、更细的权限、更多的审批而是一套能把AI 的判断和最终执行分开的边界。因为 AI 的风险不只在于它会说什么。更在于它开始能够替你做什么。这是《Havenlon安全讲人话》系列的第五篇。下一篇我们回到人身上聊一个更微妙的问题为什么我点了同意并不等于它就应该发生——当界面、摘要和参数可以被悄悄替换人的那一次确认到底确认了什么。参考来源本文引用的真实事件与技术概念AI coding tool Replit wiped a companys database in catastrophic failure — FortuneReplit CEO: what really happened when the AI agent wiped Jason Lemkins database — Fast CompanyVibe coding service Replit deleted production database — The RegisterCVE-2025-32711 EchoLeak: Zero-Click Prompt Injection in Microsoft 365 Copilot — SOC PrimeEchoLeak: The First Real-World Zero-Click Prompt Injection Exploit in a Production LLM System — arXiv 2509.10540
Windows系统wlanapi.dll缺失问题分析与解决方案 1. 问题现象与背景解析 最近遇到不少用户反馈在Windows系统安装蒲公英企业版访问端时,系统提示"找不到wlanapi.dll"错误导致无法正常使用。这个dll文件是Windows无线局域网API的核心组件,通常位于C:\Windows\System32和C:\Windows\SysWOW64目录… 2026/7/14 9:14:21
PyTorch Wrapper:封装训练流程的轻量级工程胶水层 1. 项目概述:为什么你需要一个“PyTorch Wrapper”而不是直接写 nn.Module ? 你有没有在深夜调参时,对着一屏又一屏重复的 model MyNet(); criterion nn.CrossEntropyLoss(); optimizer torch.optim.Adam(model.parameters(), lr3e-4) … 2026/7/14 9:14:21
Vitedge vs 传统SSR:为什么边缘渲染是前端性能的终极解决方案 Vitedge vs 传统SSR:为什么边缘渲染是前端性能的终极解决方案 【免费下载链接】vitedge Edge-side rendering and fullstack Vite framework 项目地址: https://gitcode.com/gh_mirrors/vi/vitedge 在当今的前端开发领域,性能优化已经成为开发者必… 2026/7/14 9:12:20
商用密码应用安全性评估量化评估规则:从标准解读到实战应用 1. 商用密码评估为什么需要量化规则?第一次接触密评的朋友常会问:为什么不能直接用"符合/不符合"简单判断?我刚开始做密码安全评估时也这么想,直到在某政务云项目踩了坑。当时给某省级医保系统做评估,发现密… 2026/7/14 11:27:16
NLP入门实战:从零构建中英文分词与词性标注工具链 1. NLP入门基础:分词与词性标注是什么?刚接触自然语言处理(NLP)时,很多人会被"分词"和"词性标注"这两个专业术语吓到。其实它们就像我们学语文时的"划分句子成分"和"判断词性"… 2026/7/14 11:27:16
C++ unique_ptr智能指针:独占所有权与零开销资源管理实践 1. 项目概述:为什么unique_ptr是C资源管理的基石在C的世界里,手动管理内存就像在雷区里跳舞,一个new和delete的疏忽,轻则内存泄漏,程序像得了“肥胖症”一样越来越慢;重则野指针崩溃,直接“原地… 2026/7/14 11:25:15
动静之间:现代深度学习框架的融合演进与实战选择 1. 深度学习框架的演进:从对立到融合 十年前我刚入行时,TensorFlow和PyTorch的争论就像"甜咸豆腐脑"之争一样激烈。当时团队选型时总要面临灵魂拷问:要性能还是要灵活性?这个问题如今终于有了新答案。 静态图框架像提前… 2026/7/14 11:25:15
TPS7A52-Q1汽车级LDO:为雷达与射频系统打造超低噪声电源方案 1. 项目概述:为什么雷达与射频系统需要一个“超级安静”的电源?在汽车电子领域,尤其是高级驾驶辅助系统(ADAS)和自动驾驶系统中,毫米波雷达传感器和射频前端模块正变得越来越普遍。这些系统的工作频率动辄几… 2026/7/14 11:23:14
libhelix MP3解码实战:从文件解析到PCM输出的嵌入式实现 1. MP3文件结构与解码基础MP3文件本质上是一种经过压缩的音频数据容器。理解它的结构是解码的第一步。一个典型的MP3文件由三部分组成:开头的ID3V2标签(可选)、中间的音频数据帧序列和结尾的ID3V1标签(可选)。这种结构… 2026/7/14 11:23:14
XUnity.AutoTranslator 游戏实时翻译插件:从原理到实战的完整指南 1. 项目概述:当游戏语言成为一堵墙作为一名玩了十几年日系、欧美独立游戏的“老油条”,我太懂那种面对一款心仪已久、画风玩法都戳中G点的游戏,却因为语言不通而望而却步的痛了。尤其是那些基于Unity引擎开发的、体量不大但内容精良的作品&am… 2026/7/14 0:05:14
2026普通文员学数据分析的价值 一、2026年普通文员学习数据分析的必要性随着数字化转型加速,数据分析技能正逐渐成为职场基础能力。普通文员学习数据分析可以提升工作效率、增强竞争力,并为职业转型提供更多可能性。二、数据分析对文员的价值自动化办公:通过数据分析工具&a… 2026/7/14 0:05:14
2026从计划员到主管,生产管理者学数据分析有用吗? 一、生产管理领域的职业发展路径 从计划员到主管的角色转变,是生产管理者职业发展的典型路径。计划员主要负责生产排程、库存管理和资源协调等基础工作,而主管则需要承担团队管理、决策支持和效率优化等更高级别的职责。这种转变不仅仅是职位的提升&… 2026/7/14 0:05:14
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/13 9:31:08
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41