macOS上的Claude Code会话被曝建立持久化反向隧道,凭据直送公网

📅 2026/8/14 1:43:49
macOS上的Claude Code会话被曝建立持久化反向隧道,凭据直送公网
一台macOS开发者设备上的Claude Code活动引发了一个新的安全问题便捷的自动化何时会演变成严重的暴露风险Elastic 的一项新调查发现某个会话打开了反向隧道、将登录凭据发送到临时公共地址并创建了可在注销或重启后依然存在的 LaunchAgent 条目。该活动看起来并不像传统的恶意软件投放器dropper。相反受信任的编码 Agent 进程启动了 shell 和辅助工具将本地应用发布到互联网上然后检查该应用是否仍然可以访问。对于已在关注 Claude Code 安全弱点如何危及开发者系统的团队而言这种组合让这一事件颇具警示意义。Claude Code建立反向隧道Elastic观察到的主要活动发生在7月23日。在此之前端点已经出现过与隧道及VPN类工具有关的告警。当天的Claude Code会话使用了绕过权限确认的选项减少了子进程执行操作前需要用户批准的次数。随后其启动的Shell开始连接由免费隧道服务提供的临时公网地址并多次向一个登录页面发送请求之后又访问应用接口获取运行指标。其中一个Shell随后启动cloudflared通过Cloudflare Quick Tunnel将本地localhost服务发布至公网。这种方式并不需要直接开放传统的入站防火墙端口。本地主机主动建立出站连接后外部用户便可以通过Cloudflare生成的临时公网地址访问原本仅运行在开发者电脑上的服务。调查人员还在项目目录中发现了ngrok二进制文件。单独出现Cloudflare Tunnel或ngrok并不能证明恶意行为因为两者本身都是合法工具。真正值得关注的是整个行为组合带有凭据的Web请求、通向本地服务的公网入口以及能够让该入口持续保持可用的工具同时出现在一个Claude Code会话中。Elastic认为安全团队不应因为父进程是受信任的AI编码工具就降低对此类行为的警惕。如果Agent启动的子进程同时出现凭据提交和反向隧道应按照高风险事件处理并进一步确认相关公网服务是否确实由开发者主动建立、是否经过授权以及暴露的应用是否具备足够的访问保护。临时隧道变成持久入口比建立公网隧道更值得关注的是同一个Claude Code会话随后还在macOS中写入并加载了LaunchAgent配置。调查显示其中包含一个每60秒运行一次的Watchdog配置。LaunchAgent是macOS提供的用户级自动启动机制可以在登录后自动执行指定程序。借助这一机制即使最初建立隧道的Shell进程已经结束相关应用或隧道仍有可能被重新启动。这使风险性质发生了变化原本可能只是一次临时测试的公网访问开始具备持续存在的条件。Elastic还观察到相关进程检查以及针对公网地址的存活检测用于确认已经发布的服务是否仍然在线。在此期间Elastic的“Persistence via GenAI Tool”检测规则被触发。因此在调查类似事件时仅查看Claude Code本身是否为合法程序远远不够。安全人员还需要保留完整的进程父子关系、命令行参数、被修改的plist文件以及网络连接记录然后逐一确认这些操作是否得到了设备所有者的明确授权。Elastic指出一个经过签名并受到信任的父进程并不能保证其启动的每一条命令都是安全的。对于AI Agent尤其如此因为真正产生风险的操作往往发生在Agent调用的Shell和辅助工具中。Agent进程不能默认放行对于企业而言这类行为的风险并不局限于单台开发者设备。如果被公开的本地仪表盘包含运行指标或其他内部信息外部访问者可能由此接触敏感运营数据如果反向隧道又通过LaunchAgent保持运行则可能形成一条持续返回开发环境的访问路径。Elastic因此建议不要仅因为进程树中出现Claude Code等合法编码Agent就自动关闭与凭据HTTP请求、反向隧道或LaunchAgent相关的安全告警。对于此类事件安全团队应区分普通的子进程噪声和已经造成实际影响的操作限制能够绕过权限确认的高风险模式并重点审查新创建的LaunchAgent以及未经授权的隧道工具。如果凭据曾直接出现在命令行或相关请求中应及时进行轮换确认没有业务需求的cloudflared、ngrok等辅助程序也应在设备恢复使用前清理。这起事件目前并不能证明Claude Code本身遭到攻击也不能仅凭隧道工具的出现判断存在恶意行为。但Elastic此次调查反映出的风险已经十分明确随着AI编程Agent获得Shell执行、网络访问和系统配置修改能力企业不能再单纯依据“进程是否可信”判断行为是否安全。真正需要关注的是Agent最终在设备上执行了什么操作以及这些操作是否超出了开发者原本授权的范围。