Featured image of post Claude Code、Cursor、Codex 都在触发黑客告警:企业该怎么给 AI Agent 重新做白名单?

Claude Code、Cursor、Codex 都在触发黑客告警:企业该怎么给 AI Agent 重新做白名单?

Sophos 的端点遥测显示,AI 编程 Agent 的凭据访问、下载执行与命令重试会撞上 EDR 的攻击检测规则。企业真正要解决的,不是把 Agent 一键放行,而是让任务、授权与审计进入安全策略。

如果你在公司电脑上用过 Claude Code、Cursor 或 Codex,大概见过这样的瞬间:Agent 为了把环境跑起来,先查浏览器数据,再拉一个安装包;一条命令被拦后,它换另一种系统工具继续试。开发者看到的是“它在解决问题”,EDR(端点检测与响应)看到的却是一串很像入侵者的动作。

这不是臆测。安全厂商 Sophos 在 7 月 7 日发布了一篇基于 Windows 行为遥测的分析,观察对象包括 Claude Code、Cursor、Codex 以及带有 GStack 等技能包的 Agent。报告看的不是提示词质量,而是这些工具在终端和系统里实际做了什么:解密浏览器凭据、枚举 Credential Manager、派生子进程、调用系统下载工具、在失败后换一种命令继续执行。

Sophos 的结论很克制:这些活动并不自动等于恶意,它们很多发生在正常的自动化工作流里。端点防护规则原本就是为识别同类行为而写,触发本身并不意味着规则出了问题。变化在于,企业过去对“正常开发行为”的理解,装不下会主动找工具、反复试路径的编程智能体。

这篇文章不讨论 Agent 在产品界面里该不该弹确认框。那个问题关心的是用户怎么交出任务;这里要谈的是企业电脑上,安全团队该怎样区分一段被授权的自动化工作和一条值得拦截的攻击链。

安全系统到底看见了什么

Sophos 把 2026 年 6 月一周内的阻断规则命中,按 MITRE ATT&CK(攻击战术框架)类别做了统计。与 AI Agent 相关的阻断命中里,凭据访问占 56.2%,执行占 28.8%。静默记录的命中则更多落在规避检测和命令与控制类别。

这组数字不代表“超过一半的 Agent 在偷凭据”。它只说明,端点行为引擎识别到了大量与凭据访问、脚本执行、网络调用相似的动作。安全产品并不知道屏幕前的用户是在让 Agent 整理资料,还是有人正试图从一台已失陷的电脑里拿走访问权;它只能按进程、命令行、调用链和目标位置判断风险。

报告里有几个很具体的例子。

第一个例子来自 GStack 的 /browse。这个技能会把 Agent 接到 Chromium 自动化服务上。Sophos 观测到,它经由 bash、browse.exe、Node.js 一路调用 PowerShell,再用 Windows DPAPI(数据保护 API)解密浏览器中的敏感数据。放在浏览器自动化场景里,这很可能是为了复用当前登录会话;换成攻击者上下文,却正是窃取浏览器凭据时常见的链条。

第二个例子是 Codex 下载 Python 安装器。它先尝试用 certutil.exe 下载,命中规则后又改用 bitsadmin.exe。下载地址是 python.org,目标软件也没有问题。问题在于,certutilbitsadmin 都是 LOLBins(可被滥用的系统自带工具):攻击者常用它们下载载荷,因为它们本来就存在于 Windows 中。一个 Agent 在失败后主动切换工具的韧性,恰好也是人工攻击者会表现出来的特征。

第三个例子来自 Cursor。遥测里出现了 PowerShell 将 VBScript 写入 Windows 启动目录的操作,结果被持久化规则阻断。Sophos 没有据此断言该行为恶意,脚本内容和上下文仍然需要进一步确认。但“写启动项”本来就不该因为发起者叫 AI 而失去审查价值。

这些例子共同指向一个不太舒服的事实:当 Agent 获得终端、浏览器和网络权限后,它的执行方式会越来越接近一个高效率的操作员。安全系统看到的不是“模型”,而是一次次具体的系统调用。

AI 编程 Agent 的行为为何会触发端点告警

为什么不能把 Agent 进程直接放进白名单

很多团队遇到第一轮误报后的直觉是:给 claude.exe、Cursor 或某个 IDE 进程加白名单,事情就结束了。

这在短期内很省事,长期却会把最重要的判断一起删掉。

传统白名单适合对象比较稳定的时代。一台编译服务器、一个签名安装器、一套固定版本的运维脚本,它们要访问什么位置、启动什么子进程,大致可以提前列出来。编程 Agent 不一样。它的价值正来自适应性:项目缺依赖,它会寻找安装方法;测试失败,它会读日志再改命令;网页需要登录,它会尝试接管浏览器会话;一个工具不可用,它会换另一个。

如果策略只问“是不是 Claude Code 发起的”,后面的文件访问、系统工具调用、身份使用和外发目的地都会被压扁成同一个答案。一次合理的 pip install 和一次通过 LOLBin 下载未知程序,在日志里都会挂在同一个“已放行的进程”名下,安全团队再也看不出差别。

更麻烦的是,白名单会让研发和安全团队各自误判对方的需求。研发以为安全在阻碍自动化,安全以为研发要求把风险忽略。双方真正缺的是一套能说明任务上下文的规则,而不是把同一个开关调得更松或更紧。

别再按进程名放行,先问这次任务要做什么

企业不太可能为每条 Agent 命令写一条人工规则,也没必要把所有自动化都拉回人工执行。更实际的做法,是不再只盯着单个进程,而是把一段边界明确的任务作为策略对象。

一段可治理的 Agent 任务,至少要回答几个问题。

它是谁发起的。 是某位开发者在本地终端启动,还是 CI 里的服务账号定时运行?不同身份应有不同默认权限。人机共享同一个高权限账号,会让后续审计几乎失去意义。

它在做什么。 “修复测试”“整理依赖”“登录网页收集资料”并不只是自然语言描述。系统需要把任务关联到工作目录、代码仓库、工单或变更单,至少让安全人员能在告警出现后理解这段行为的业务目的。

它可以碰什么。 读取当前项目目录、访问一个测试环境、下载经过允许的软件包,和解密所有浏览器 Profile、枚举全机凭据、写启动项,不该落在同一个权限包里。权限范围越接近任务所需,误报排查和真实风险判断就越容易。

它用什么方式完成。 对高风险行为,不必假装完全禁止或完全信任。可以规定:允许从官方源安装依赖,但不能通过任意系统下载工具执行未知二进制;允许访问测试浏览器 Profile,但不能读取日常工作 Profile;允许在沙箱中修改配置,但写入启动目录必须转为明确审批。

出了问题如何还原。 Agent 会重试,这正是它容易越过预期边界的地方。每次工具切换、权限提升、外部下载和不可逆写入,应该保留可关联的记录。对文件修改可用 diff,对配置变更保留快照,对网络调用保留目的地和任务 ID。这样安全告警不是一段孤立命令,而能回到完整的任务链中。

这套做法听起来像给 Agent 增加了很多约束,但它其实也在保护研发。今天被安全软件拦住后,开发者最痛苦的往往不是“不能执行”,而是不知道哪一步触发了什么规则、该换命令还是该申请权限。把任务上下文带进策略,才能让拦截给出可操作的下一步。

以任务边界治理 AI Agent 的安全策略

EDR 不必给 Agent 让路,但得看懂上下文

Sophos 的报告透露出一个很朴素的判断:现有行为防护仍在做它该做的事。PowerShell 解密浏览器凭据、列出凭据管理器、写入启动目录、通过系统工具反复下载文件,都值得被看见。若把这些规则全部调低,攻击者也会顺手得到同样的通道。

需要调整的是处置逻辑。

例如,检测到 Agent 访问凭据时,安全平台应先核对:这是不是受管理的浏览器自动化任务,是否只触及隔离 Profile,任务有没有用户授权,结果有没有离开本地。条件不齐,告警就该升级;条件具备,则记录为一次受控例外,无须把整个 Agent 进程永久放行。

再比如,检测到下载和执行时,策略可以区分软件源、文件类型和运行位置。来自公司制品库或经过验证的官方源、在临时沙箱里执行、与某个构建任务关联的下载,风险与从未知域名获取可执行文件完全不同。这里的关键不是把“Agent”当成可信身份,而是让它继承任务的边界。

安全团队也需要接受一个现实:部分告警会继续存在。因为有些行为无论是不是 Agent 发起,都不应该静默通过。一个被提示词注入、插件依赖或错误配置带偏的 Agent,同样可能访问不该访问的数据。保留高风险告警,不是拒绝 AI 工具,而是给自动化保留刹车。

给安全和研发团队的一份共同清单

如果团队准备让编程 Agent 进入日常开发环境,最先做的不是挑一份“全局白名单”,而是坐下来确定哪些边界能被系统执行。

  • 为 Agent 使用独立身份或受限服务账号,避免复用开发者的全量浏览器和系统凭据。
  • 把项目目录、测试环境、制品源和允许访问的网络目的地写进策略,不要只按应用进程名授权。
  • 把凭据解密、启动项写入、未知二进制执行、外部数据上传列为高风险动作;它们应触发审批、沙箱或更高等级审计。
  • 给 Agent 的重试设上限。连续换工具、换参数、换下载方式不该无限进行,超过阈值应暂停并留下原因。
  • 让 EDR 告警能关联到任务 ID、操作者、仓库和变更记录。安全人员不需要看见一千条命令,他们需要知道这一千条命令属于哪件工作。
  • 先在隔离开发环境里收集行为基线,再逐步扩展到更多团队。没有基线就直接大范围放行,最后只会在生产事故后重新补日志。

这份清单没有给出一个万能配置,因为不同公司对代码、数据和设备的敏感度差异很大。它更像一套讨论框架:每开放一种 Agent 能力,就同步说明它会产生什么端点行为、由谁批准、在哪里留下证据、失败时怎么停。

Agent 会执行,安全策略得让人能信任它

前几天写 ChatGPT Work 时,我关心的是用户能不能看见任务边界,并在真正有后果的动作前保留决定权。端点遥测把问题推到企业环境:用户点了允许之后,安全系统是否还知道这次允许具体覆盖了什么。

Agent 会根据目标拆任务、找工具、处理失败。安全策略没必要替它写代码,也不能假装每一步都能预先预测。它该做的是划出环境边界,标出高风险动作,把一次执行和发起者、数据范围、授权记录连起来;触线时,系统能把任务停下并留下足够线索。

没有执行能力,Agent 只是一段回答;边界若无法被验证,执行能力越强,企业越不敢交给它。Sophos 这次看到的“像攻击者的行为”,说明 AI 编程工具已经进到真正的系统层。企业现在该补的,不是一张更长的白名单,而是一套能让自动化继续跑、也能说明它为什么在跑的运行规则。


参考来源

以上来源主要用于核验 Sophos 对端点遥测的观察和厂商公开信息。该报告基于一周 Windows 遥测,不能替代针对具体企业环境的安全评估,也不等同于对任何 AI 编程工具恶意性的判定。

RSS Feed 使用 Hugo 构建
主题 StackJimmy 设计