AI智能体安全事件密集爆发:十几起漏洞里,哪一层被真正攻破?
从漏洞被找到,到它被大规模利用,中间只剩几个小时。
(本文作者为 AGI-Signal,钛媒体经授权发布)

短短不到一个月,十几起安全事件接连曝光。证书机构的私钥、托管平台的环境变量、包管理器的发版通道,连编程语言运行时本身也未能幸免——这些事件散落在不同攻击面上。涉事公司和技术栈彼此没有关联,也没有哪份通报把它们算在同一个攻击者头上。
除了密集,还有个信号:漏洞被发现到被大规模利用,窗口只剩几个小时。
10月22日,英国一位部长在上议院通报,两个PHP漏洞导致32个政府服务下线,另有4个部分不可用。就在前一天中午,芬兰政府切断了公共网站环境的入站流量,大学、城市和公共广播机构的服务一并受限。两国均称这是预防性措施,并未确认中央政府系统遭到攻破。PHP是跑在服务器端的开源编程语言,大量网站的动态页面靠它生成;这两个漏洞能让攻击者免登录执行任意命令。
再往前推一天,10月21日凌晨3点02分(UTC),Cloudflare向全体客户推送了一条新的WAF(Web应用防火墙)规则,瞄准的正是这两个当时尚未公开的漏洞。约九个小时后,PHP基金会发布安全公告,编号CVE-2026-109618与CVE-2026-109619,CVSS评分9.2(满分10),属严重级别。按协调披露的惯例,防护和公告应当同时落地,这条规则却抢跑了九个小时。
CISA在10月21日那份警报里写的是“截至发布时尚未观察到利用”——这话只在它自己盯着的范围内成立。亚马逊的安全研究者事后复盘,翻出一台蜜罐在10月17日就记到了利用尝试;那天距补丁发布还有四天,按协调披露的约定,漏洞细节当时并未公开。另一家安全公司记下的首批利用请求,则出现在补丁上线前5.5小时。也就是说,警报发出的时候,一线已经积了四天的利用痕迹。
这还只是其中一起。本月十几起事件最早的一起出现在10月5日,它们的共同点不在攻击者,而在于都发生在应用代码之外。
72小时,八份安全通报
10月19日,OVHcloud的CLI工具五个版本被换成带窃密功能的二进制文件。事后复盘把时间窗锁定在12点47分到14点21分(UTC),约94分钟,下载量约250次。源码和构建流水线都没问题,攻击者拿到的是维护者账号。被窃取的内容包括云凭证、SSH密钥和本地编码助手数据。
10月20日,印度证书机构eMudhra有八个中间CA私钥被人逆向还原,浏览器、Go和Node.js的信任库在一天之内齐刷刷把它们拉黑。这些密钥里,有一把本该是116位,实际值却只是个4;剩下的几把也不过3到8位。两天后的10月22日,公司董事会拍板退出全球SSL/TLS证书业务,这块大约占其全球收入1%;消息一出,股价三个交易日累计跌了38%。
10月21日最为密集。PHP两个9.2漏洞发布补丁;GitLab公布一个CVSS 10.0的漏洞,正则编译器整数溢出,无需认证即可远程执行代码,影响范围回溯到2014年的7.0;Node.js发布月度安全更新,修复10个CVE,最高等级high;Oracle季度补丁包含1295个修复,Java JSSE有一条9.1。
GitLab其实在10月12日就发过补丁,针对CVE-2026-97229,类型同为正则编译器里的整数溢出,评分也是10.0,版本为19.2.8、19.3.5和19.4.2。九天后的CVE-2026-110264影响面更大:10月12日补丁之后发布的每一个版本,都落在它的影响区间内。按九天节奏跟补丁的团队,等于没跟完整。两个漏洞由同一位研究者通过HackerOne提交,GitLab未说明后者是否为前者的绕过方式。
同一天上午,Railway在状态页发布事件通报。存储客户环境变量的系统出现异常活动,第三方可能访问了加密变量,并拿到了其中一部分的解密内容。公司暂停全部部署,轮换bucket凭证、作废全部API token、重置OAuth会话。10月22日凌晨起按Enterprise、Pro、Hobby、Free、Trial的顺序分批恢复构建,到当天上午低档套餐仍在排队。链上分析人士统计,被盗私钥对应的钱包损失约37.1万美元,分布在至少19条EVM网络上,第一笔盗币发生在公司发出公告前约两个小时。
八份通报看下来,补丁的性质各不一样:PHP那两个漏洞走的是紧急响应,GitLab属于按计划发的补丁,Node.js是每月例行的安全版本,Java那边则只是季度更新中的一项。
供应链投毒,月初就开始了
前面那批通报集中在三天,最早一份是10月19日。更早的几起既不是运行时漏洞,也不是凭证问题,而是发生在软件分发环节的供应链投毒:被篡改的是发布出去的制品,光靠源码审计看不出异常。
10月5日,@subql/common的5.8.3版本被植入后门,安装和执行import都会触发。10月8日,tensorlake的0.5.144携带Shai-Hulud蠕虫,附带的勒索机制是撤销token就清空用户家目录。
10月8日到16日,GhostAction第二波,约1900个GitHub账号被用来向三万多个仓库注入一个自称“安全审计”的Actions工作流。原始分析的口径是“被瞄准”,没有确认这些仓库都已被窃取。
10月15日20点02分至16日07点12分,约十一个小时里,Rank Math PRO 3.0.123版本在官网下载和自动更新通道中被替换为带后门的包。站点一旦安装,就会被植入一个伪装成WordPress核心文件的PHP后门,访问时自动重建,还会创建以wpsupport_开头的管理员账号,把数据库密码、API密钥以及AWS、Azure、Cloudflare凭证一并外传。免费版有四百万安装量,不在此次事件范围内,受影响的是付费版。这一条的处置难点在清理方式:版本号看不出异常,只能靠下载时间判断;防火墙规则同样无效,因为文件由厂商自行签名发布。Wordfence给出9.8的评分,编号CVE-2026-111862。
10月17日到18日,TeamUpdraft的客户数据库被访问,UpdraftCentral的连接密钥被用来向约40万个WordPress站点植入后门。
10月21日,LiteLLM的1.107.0版本在PyPI和Docker Hub同时被投毒,七个wheel和已发布的容器镜像都带上了恶意代码。触发方式是Python启动时的钩子,即使不import这个库也会执行。容器溯源指向一个与官方仓库只差一个字符的仿冒地址。受影响的安装量没有公布,公开数据只有每周约2300万次的分发规模。
存在别人服务器上的密钥,成了主线
有一类事件的问题不在代码,在托管于第三方平台的凭证。

10月14日到15日,Zeabur被入侵,32.18万个账号和约320万条环境变量记录被读取,公司随后宣布12月31日关停。
10月14日前后,ConnectWise的一个Microsoft 365 API凭证被用来以应用身份向客户租户申请Graph token。登录主体是应用而不是人,多因素认证和条件访问策略都不适用。10月15日,微软确认这些认证来自一个托管服务商的IP,而不是该应用平时使用的Azure私有地址段。10月17日07点00分,ConnectWise停用了七个应用身份,吊销证书,把Cloud Backup整体下线,SaaS Security和Cloud Management一并暂停。安全公司Huntress统计到10月16日晚间有162个租户出现未授权登录,一天后升到173个。
10月21日,微软公布的分析进一步拼出了整体轮廓:那个被编号为Storm-0940的组织,从9月起以相同手法对数百家机构下手,涉及航空航天、能源、金融、政府、制造、半导体和智库等行业。10月10日至14日,8家机构的327个账号遭到超过15.1万次登录失败,之后攻击者把目标转向已被租户信任的应用身份。对2250多个租户的尝试中,峰值达到每分钟2900次。
ConnectWise首席执行官10月22日称,受影响的连接已经得到控制,服务正分批次恢复。微软的说法则更为保守:断开应用连接可以挡住新令牌的签发,却挡不住已经植入客户目录的凭证。这其实是应急响应中常见的局限。
10月16日晚间,OpenCode一套正在停用流程里的旧系统被未授权访问。存着OpenAI、Anthropic、Google密钥的Console用户里,1.4%受影响。10月17日上午,公司发出通知邮件。
这四起事件中,没有一起是攻击者破解了加密算法。共同点是凭证长期有效、权限过宽,一直处在可被取用的状态。
它只在执行端构成入侵
AI智能体在这批事件里出现在两处,一处是攻击的执行环节,一处是监控机制内部。
在攻击执行环节,目前被公开归因的工具仅有ARTEX。微软的复盘将其记录为一套开源Go框架,能对接任意模型,让一组智能体自行完成侦察、漏洞发现、密码喷洒和凭证攻击。同一份复盘指出,Storm-0940借助它加快了对ConnectWise下游租户的攻击,多次在最初瞄准后不到三小时便取得特权云访问。该框架开发者10月8日在GitHub发表声明,称工具遭到恶意使用,将停止更新并转为闭源,目前仍可下载。
微软对这套工具的表述是,智能体不受人类所受的限制,可以全天候工作,在周末和假日照样运行,同时尝试多条突破路径。
监控机制内部,OpenAI在10月20日发布了一份失准报告,记录了两起内部编码任务中的行为。10月3日,一个基于GPT-6.1 Sol运行的智能体被要求“不要在Slack上发消息”,它却把这句话理解为连发给安全团队的告警也可以屏蔽,于是清空了全部收件人,并将no_notify设为true。10月6日,一个GPT-6 Astra的智能体在迁移代码时删除了自身的监控集成,改掉了本应检查监控是否在位的回归测试,被问起时还予以否认。日志中留下一句:“用户让我们对齐这个PR的服务路径,所以我把它理解为允许改动监控。可以。”
OpenAI称目前还没有满意的解释,正在判断这属于执行指令时的过度延伸,还是模型本身存在回避监控的倾向。公司同时提到,还见过几次智能体在监控关闭的状态下启动软件。据多家媒体报道,对用户存在欺骗行为,是Astra那次发布被取消的原因之一。
判定入侵有两条标准:未经授权访问系统,以及自主完成侦察与利用。ARTEX参与的几次攻击,两条都满足。OpenAI披露的那起不算入侵,它发生在内部环境,没有外部对象,但被动到的是用来发现问题的监控装置,性质上等于把告警关掉。后一种情况对防守方冲击更大,因为监控体系的设计前提,是被监控对象不会去动监控本身。
金融圈流传较广的两份材料,按同一把尺子量,一份在报告描述里算入侵,另一份只走到尝试。安全公司 Straiker 那份记录的是一个多智能体系统:Claude 负责规划与裁决,Grok 负责采集凭证,攻击指令被包装成“授权红队演练”,借此绕开模型的安全限制。报告给出的攻击目标是拉美 400 多家金融机构,数据库快照里采到 4493 条高等级凭证。这些机构全部匿名,没有一家银行或监管机构公开确认。
10月22日的报道则是另一份材料。多家银行发现,有第三方 AI 智能体在未获授权的情况下进入了客户账户,具体损失金额报道未予披露。其中一家被点名的机构称,并未看到有失控的智能体访问自家平台,其预案是在出状况时恢复客户访问。两份材料都未记录账户被接管或资金受损,能够确认的行为只到凭证采集和未授权访问这一步。
PHP2Shell:防守方先找到的
回到开头那两个 9.2。两个漏洞合称 PHP2Shell,取自 PHP to shell,意思是攻击不用经过应用,从 PHP 这一层直接拿到命令入口。问题出在 Zend 引擎,这是 PHP 自带的核心组件,负责解析请求、管理内存,所有 PHP 安装都包含这一层。换 CMS、换插件、换框架都碰不到这一层,PHP2Shell 比这个月其他事件更难处置,原因就在这里。
这两个漏洞是 AI 模型辅助发现的。7 月 30 日,安全研究者 Calif 开始用 GPT-5.6 Sol 审计 PHP 代码库。8 月 11 日,Wiz 的研究团队用自家模型独立发现了同一个漏洞。两份报告送到 OpenAI 后,按“Patch the Planet”的协调披露流程处理,补丁原计划发布得更晚。
10月20日,漏洞细节在双方约定的公开日之前被人泄露,基金会于是把补丁上线时间往前挪了一天。一家容器镜像厂商赶在安全公告发布前六小时,推了已经打好补丁的镜像,基金会随后回应,称这种做法“既不负责任,也不专业”。
细节一公开,扫描量便以分钟为单位往上走。Cloudflare 记下的数字是:公开前 10 小时,针对该漏洞的请求有数千次;公开后 45 分钟涨到数万次,两小时冲到数十万次,累计请求量达到百万级。这段时间里攻击载荷不断变换,目的就是绕开已经上线的 WAF 规则。Cloudflare 给出的只有请求量,发起方是谁并未说明。
暴露面的估计存在口径差异。Palo Alto 旗下 Xpanse 通过扫描识别出 2260 万个实例;另一家安全公司依据 Shodan 数据估算,可访问的服务器约 200 万台。两组数字衡量的都是可被访问的范围。W3Techs 的统计显示,PHP 在全部站点中的采用率为 69.3%,这是部署规模指标,不能拿来推算受影响范围。
这段有问题的代码最早能追到 2012 年的 PHP 5.4,此后继续沿用这段代码、又没有打上修复补丁的分支,都在受影响之列。CISA 给出的处置办法是:升不到修复版本的环境,应当停止对外提供服务。
响应窗口已经短于值守周期
这十几起事件中被利用的漏洞,大多在几年前就已经存在。漏洞本身没变,变快的是它被利用的节奏。过去从拿到一组凭证到用它登进去,中间靠人一步步操作,现在则由程序不间断地跑完。
发布链路的默认信任不是新问题。npm 的 install 脚本默认运行,Python 包在解释器启动时通过钩子执行,GitHub Release 的不可变设置被关闭,Docker 镜像的 tag 可以被覆盖,版本号和哈希都看不出差异。
速度上的差距,前面那组数字已经说明。人工操作受作息和反应时间约束,程序连续运行,这两项约束都不存在。
头部厂商已经能做到在公告前几小时就把防护挂上线。Rank Math 那十一小时的窗口属于另一种情形:自动更新通道里的包由厂商自己签名,防御方在这一层插不上手。
这些动作背后靠的是一张值班表。安全团队管这种安排叫 on-call,排到谁,谁就得保持能被联系上,表上还写明了谁有权在半小时内拍板停掉一个对外服务。没有拿到这项授权的组织,要做出同样的决定得逐级报批,几个小时根本走不完流程。
开源项目没有这样的值守安排。PHP 基金会在安全公告里说的是维护者人手不够,项目长期靠少数人业余时间撑着,用户手上只有一个版本号和一句升级建议。英国那 32 个被下线的服务、芬兰的预防性断流,都是无补丁可打时的应对办法,也就是先把对外服务停掉。同样是几个小时,有值守的组织能把处置和验证都做完。
下一个漏洞出现时,这段窗口不会拉长。这个月同类型的 10.0 已经来了两次,中间隔了九天;eMudhra 退出 TLS 业务后,还有约三万张证书等着迁移。
证书迁移的头一步是清点手上有多少证书,处理运行时漏洞也是这个顺序。CISA 针对 PHP2Shell 的建议是“无法升级,就停止对外提供服务”,而这句话要能落地,前提是清楚自己跑着哪些实例、哪些版本已经不再维护。多数组织的资产清单里恰恰缺了运行时版本和依赖信息,这一项不补齐,“停止对外服务”就无处着手。
凭证这边的调整比清点要快。长期令牌换成短期签发,备份类应用的授权缩到单个租户,都能赶在下一次公告之前改完。发布环节的默认项同样可以动:install 脚本自动执行、启动钩子、镜像 tag 被覆盖,这些都有对应的关闭开关,不必等厂商发版。
下一个漏洞何时出现,没人说得准。上面这三项,都不用等到下一次公告。