许多网站在后台运行着一款名为 WordPress 的软件。在这类网站中,管理员拥有管理整个网站的权限,可以通过安装各种功能插件,在托管网站的服务器上运行自定义代码。如果一个完全没有账号的普通访客能够夺取管理员权限,就意味着他可以随意修改网站,并以网页服务账号的身份在服务器上运行代码。
根据安全研究机构 Searchlight Cyber 的研究员 Adam Kues 的报告,他使用人工智能模型 GPT-5.6 Sol Ultra 对完整的 WordPress 源代码树进行了安全审计。在该报告描述的实验中,模型寻找并连接出了一条攻击路线:一个没有任何账号的陌生访客,能顺着这条路径获取网站的持久管理员账号,从而以网页服务账号的权限在服务器上运行代码。研究团队将这一连串的攻击步骤命名为 WP2Shell。这是一个漏洞利用链的名称,并非某款产品或人工智能工具。
在这项研究中,比起发现单一的代码缺陷,更核心的进展在于模型将几个微弱、且分布在不同子系统的行为,按照正确的顺序连成了一条完整的控制链。虽然根据 Adam Kues 的报告,模型在庞大的代码库中搜索并勾勒出了这条路线,但整个研究过程依然高度依赖人类:人选择了研究目标、设计了实验协议、提供了测试靶场、提出了关键的递进问题,并最终验证了漏洞、完成了安全披露。
要理解这一路线,我们可以跟着一个匿名访客的请求,看看它是如何在系统内部逐步突破限制的。整条路线包含五个关键的转换:先是通过混淆子请求绕过入口检查,然后操纵参数实现数据库查询,接着借助自动更新机制将伪造数据存入数据库,再通过应用配置让系统把权限临时切换为管理员,最后在临时身份被清除前触发重新解析以创建持久管理员账号。
安全研究机构 Searchlight Cyber 的研究员 Adam Kues
策划了这次实验,以测试人工智能模型寻找漏洞的能力。为了防止模型通过对比代码差异来倒推漏洞位置,研究员在提供
WordPress 源代码时,删除了包含版本历史信息的 .git
目录,并禁止模型查阅公开的更新日志或网上的补丁对比。在安全领域,这种直接阅读全部源代码来发现安全缺陷的做法称为“白盒审计”。该方案虽然去除了最直接的补丁与历史记录提示,但由于没有公开完整的运行轨迹日志,外界仍无法独立排除所有的信息泄露途径。
实验要求模型在配备典型 MySQL
数据库的隔离部署中,找到一条能将无需登录的访客提升至远程代码执行的完整链条。实验的成功标志是读取到服务器根目录下的
/flag
文件。在资源和时间限制上,模型最多可以同时调度四个代理进行协作,且搜索过程至少持续六个小时。
从报告的细节来看,整个挖掘过程并非一蹴而就。模型首先发现并报告了一个只读的数据库漏洞。为了验证其真实性,研究员在隔离的远程服务器上部署了一个 stock WordPress 默认实例作为测试靶场,要求模型利用该漏洞读取管理员的邮箱地址。模型在几分钟内完成了任务。随后,研究员追问模型,这处只读的数据库注入是否能升级为远程代码执行。收到这个引导性的问题后,模型在大约四小时后给出了特权提升与重入代码执行的完整方案。整个实验的总耗时刚刚超过十小时。
WordPress 官方在 2026 年 7 月 17 日已经发布了相关漏洞的修复版本并公开披露,而 Searchlight Cyber 是在 7 月 20 日发表了这篇研究方法和完整链条分析。因此,7 月 20 日的发布属于研究方法和链条机制分析的公开,而非该漏洞的首次泄露。
如果将这一路线放到具体的代码组件中进行分析,就能更清楚地看到模型在组合这些零散行为时面临的复杂性。第一步的路由混淆发生在 WordPress 处理子请求的接口上。为了提高效率,系统允许在单个 HTTP 请求中打包发送多个子请求,这种机制称为 REST 批量请求(REST batching)。然而,在处理此类请求时,WordPress Core 存在一个逻辑缺陷(即 CVE-2026-63030):如果发送一个精心设计的畸形请求,系统在校验子请求权限和实际分发执行时,所认定的接口会发生错位。这导致原本需要权限验证的敏感操作,因路由判断失误直接向未登录的访客开放。
越过这层路由限制后,匿名请求得以调用用于检索数据库内容的核心类
WP_Query。正常情况下,该类会对传入的参数进行安全清理。然而,在
CVE-2026-60137 漏洞中,系统处理其中的 author__not_in
参数时,由于缺乏对输入类型的限制,访客可以通过传入非预期类型的参数来直接绕过过滤,从而向底层数据库注入控制指令。这就构成了
SQL 注入(SQLi)漏洞。
但这处 SQL
注入最初只能用来读取数据,无法直接修改数据库或服务器文件。为了获得写入能力,攻击者利用数据库查询的结果污染系统的内存对象缓存(object
cache)。这种缓存会临时存储查询结果,以提高网站加载速度。如果内存缓存数据包含伪造内容,代表文章数据的
WP_Post
对象就会带上伪造的属性。由于内存中的数据和数据库中的实际内容产生了错位,只读漏洞开始向内存层渗透。
接下来,攻击者需要把内存中伪造的 WP_Post
对象固化回数据库。这一步借用了 WordPress
自身的视频与多媒体嵌入处理流程,即 oEmbed
机制。系统尝试自动更新多媒体缓存时,会触发写回动作,顺带把内存缓存中经过伪造的文章内容写回数据库。此外,系统在修复文章循环关系时会调用另一条不覆盖文章主体的更新路径,从而使这些伪造的属性得以成功保存在数据库中。
有了固化在数据库里的伪造数据,攻击路径得以触及一种特殊的文章类型
customize_changeset。WordPress
使用它来保存网站外观设计与自定义配置的修改历史。系统加载并应用这个变更集时,会自动读取其中记录的用户身份。通过伪造变更集,系统在处理当前请求时,会临时将执行权限切换为变更集指定的管理员。但这种身份切换非常短暂,仅在当前请求处理完毕前有效。
为了阻止这个临时权限被清除,攻击者需要促使程序在身份失效前重新启动请求解析。WordPress
的事件驱动机制广泛使用各种事件节点,有些事件节点的名称是根据文章的状态和类型动态拼接生成的(dynamic
hook)。通过操控伪造的文章属性,系统在发布文章的过程中动态生成并触发了名为
parse_request 的核心钩子。一旦触发这个钩子,程序会在同一个
PHP
进程里重新解析请求。此时,系统尚未清理第一轮请求留下的管理员身份,使得第二轮请求处理完全在临时管理员权限下进行。原本在第一轮中因权限不足而失败的“创建新管理员”操作,在重入后成功完成。
构建这条路线的难点在于,没有任何一个单独的安全缺陷可以直接赋予远程执行代码的权力。其主要的挑战在于:发现一条特定的时序,将只读权限转化为内存对象污染,进而转化为数据库固化,随后换取临时管理员身份,并赶在身份失效前触发二次解析以创建持久账号。这需要在复杂的子系统交互中完成跨越多个环节的时序组合。
根据研究员 Adam Kues 的记录,开发出这条利用链的总时间刚过十小时,消耗的订阅额度折合成本仅约 25 美元。在评估人和模型的真实贡献时,我们需要分清其中的人机协作关系。
在这场实验中,研究员完成了几乎所有方向性的决策与验证:他挑选了
WordPress 作为目标,设定了读取 /flag
的成功指标,制定了禁止查阅 Git
历史和补丁差异的规则,并规定模型最多同时使用四个
agent。在验证阶段,也是由研究员亲自搭建了靶场实例,发出了获取管理员邮箱的指令,并在获得只读漏洞后追问是否能升级为远程代码执行,最后花费了一整天时间去理解整条调用链并撰写漏洞报告。
根据 Adam Kues 的描述,模型在被禁止使用历史记录和补丁提示的情况下,找到了路由混淆和 SQL 注入的路径,并将不同子系统的行为拼接成了一条完整的特权提升与代码执行链。但这仅代表研究员单方面的评估。在缺乏对照实验且没有公开完整运行记录的情况下,我们无法确切定量模型与人类在漏洞挖掘中的实际贡献占比。该过程更接近一种高效的代码辅助审计,而非独立的黑客行为。
为了客观评估这一事件,我们可以将现有的证据划分为三个清晰的边界:
首先是独立可验证的客观事实。WordPress Core 确实存在 CVE-2026-63030 与 CVE-2026-60137 两个安全漏洞,官方已于 7 月 17 日发布修复补丁,安全机构 Rapid7 也在其分析报告中证实了这些漏洞的存在。
其次是研究员个人的实验记录。这包括约 25 美元的消耗、刚过十小时的研究时间、四代理的结构,以及研究员发出的两次关键提问(要求读取邮箱和询问是否能升级为远程代码执行)。这些数据目前完全源自研究员单方面的实验记录。
最后是目前尚未公开的关键信息。这包括完整的运行与提示词轨迹、代理之间的通信记录、探索失败的尝试路径、人类研究员介入和纠偏的具体时间线,以及在相同预算下,单代理、其他模型或人工审计的对照实验数据。由于缺乏这些完整数据,外界很难独立评估模型在没有人工干预下的自主工作边界。
这一证据边界将研究范围限制在安全研究的语境下,但也带来了一个行业普遍关注的问题:主流的人工智能服务通常会限制模型协助开发攻击性代码,为什么在此次实验中,模型会配合研究员寻找漏洞并生成完整的利用链?
在公开的报告中,作者并未提及模型出现拒绝服务的情况,也没有使用对抗性的提示词或越狱技巧。根据官方公布的 GPT-5.6 System Card,该模型允许用户进行人机协作的漏洞识别与应用安全防护;但对于 Trusted Access 之外的用户,在进行规模化的智能代理漏洞研究以及链式漏洞利用开发时,会面临额外的安全限制。
为了支持安全防御与研究,服务商为通过审核的安全研究人员和防御者提供了名为 Trusted Access for Cyber 的服务配置,该配置在保留实时监控和特定领域限制的前提下,提供了不同的限制策略。由于 Searchlight Cyber 并未公开其测试账号的资质与状态,外界无法确认这次测试是使用了 Trusted Access,还是通过其他账号配置或特定的运行时路由运行的。因此,如何界定该请求的合规判定与路由逻辑,目前仍是一个未决的安全治理与实证问题。
虽然合规判定的机制尚无定论,但在评估更广泛的安全边界时,本案例得出的结论与先前的分析保持了一致。我们在早前对 GPT-5.6 的分析文章中曾指出,模型具备较强的漏洞发现和片段利用能力,但尚未证明它能在无人干预的情况下,自主攻破专门加固的安全目标。WP2Shell 确实将证据范围扩展到了在真实、高价值的项目中构建完整攻击链条,但因为这次的靶场是一套 stock WordPress 默认实例,且采用的是人类主导的研究方案与动态验证,所以它并没有打破原有的加固目标自主攻破边界。
然而,这一案例也改变了安全团队评估漏洞报告的传统方式。在人工智能辅助代码审计时代,如果安全团队只保存最终的漏洞报告和利用脚本,将很难判定漏洞的发现究竟归功于模型的智能、人类的提示纠偏,还是多代理编排工具的规则设计。
为了建立清晰的复盘和评估机制,未来的漏洞研究过程需要保留更完整的痕迹。团队不仅要保存当时的代码快照,还要归档完整的系统提示词、代理之间的通讯记录、执行的工具轨迹、探索失败的尝试路线,以及人类介入和验证的每一处证据。只有在固定代码和预算的前提下,对比单代理、多代理、不同模型以及人工审计的表现,我们才能测算出人机协作中各方的真实贡献。
安全研究人员的工作重心也将发生转移。未来的核心竞争力会转移到如何选择目标、设计沙箱靶场、制定搜索协议、明确成功与停止条件,并负责任地进行漏洞披露,而不是手写具体的利用代码。
对于使用 WordPress 的运维团队,当下的应对措施非常明确:立刻升级系统。