本文へ移動
English version →
重大 9.8 急ぎ度: 至急

Qode Membershipの脆弱性で管理者になりすまし、修正版は未確認

WordPressの会員機能プラグインQode Membershipに、認証なしで既存アカウントにログインできる脆弱性があります。管理者アカウントも対象で、会員登録やログインのページを公開しているサイトは影響を受けます。まず導入の有無と版を確認し、修正版が確認できるまでは停止も含めて検討してください。

CVE-2026-92885 公開 生成 AI で作成
記事のイメージ(生成 AI による画像)
画像は生成 AI で作成したイメージです

急ぎ度: 至急

CVSS v3は9.8で、認証なしのネットワーク越しに管理者権限まで奪われるうえ、修正版の情報も確認できていないためです。

関係があるか

Qode Membershipを有効にしたWordPressサイトが対象です。会員のログイン画面や登録画面を一般公開している場合は、外部から誰でも到達できる状態になります。

製品影響を受ける版直った版
Qode Membership(Qode Themes) 2.0.6.2までのすべての版 未確認。ベンダーの告知で確認してください

確かめ方

  1. 1WordPressの管理画面でプラグイン一覧を開き、Qode Membershipの有無と版が2.0.6.2以下かを見ます。テーマと一緒に導入されている場合もあるため、テーマ付属のプラグインも確認してください。
  2. 2WP-CLIが使える環境では、wp plugin list | grep -i qode で、導入済みのQode系プラグインとその版を一覧できます。
  3. 3固定ページや投稿に、ショートコード [qode_user_login] か [qode_user_register] を置いたものがないかを調べます。あれば、そのページは外部から見える状態です。

何が起きたか

Qode Membershipに、認証を経ずに既存のWordPressアカウントとしてログインできる脆弱性が見つかりました。管理者アカウントも例外ではありません。

原因はFacebook経由のログイン処理にあります。本来はFacebook側でトークンを検証してからログイン状態にするはずですが、検証の要否を決める条件式で変数名が誤記されていました。その結果、検証の処理は実行されず、何も確認しないままログイン状態を作る処理に進みます。対象はAJAXアクションqode_membership_check_facebook_userで、関数はqode_membership_login_user_from_social_networkです。

この脆弱性は2026年10月27日に公表されました。識別子はCVE-2026-92885で、GHSA-hj69-4738-f2v2としても登録されています。

攻撃の流れ

  1. 1

    公開ページの確認

    会員ログインや登録のショートコードがある公開ページから、必要な使い捨ての値を取得します。

  2. 2

    ログイン名の入手

    対象サイトの管理者のログイン名を、既知の情報や列挙で把握します。

  3. 3

    検証の素通り

    Facebookのトークン検証が実行されないため、資格情報なしで認証が通ります。

  4. 4

    管理者として操作

    管理者のセッションを得て、サイトの設定や内容を自由に変更します。

公開されている情報をもとにした流れの例です。

どう悪用されるか

悪用に認証は要りません。インターネット経由で、サイトの公開ページにアクセスできれば足り、管理者や利用者に何かを操作させる必要もありません。

攻撃には、ログイン処理用の使い捨ての値(nonce)が1つ要ります。この値は、ショートコード [qode_user_login] か [qode_user_register] を置いた公開ページに出力されるため、事前の認証なしで入手できます。あとは、対象アカウントのログイン名が分かれば成立します。

管理者としてログインされると、投稿や固定ページの改ざん、ユーザー情報の閲覧、ユーザーの追加や削除、プラグインやテーマの追加ができてしまいます。プラグインの追加を通じて、サーバー上でコードを動かされるおそれもあります。サイトの機密性・完全性・可用性のすべてに影響します。

今すぐやること

  1. 1

    導入の有無と版を確認する

    管理画面のプラグイン一覧か、WP-CLIで、Qode Membershipが入っているか、版が2.0.6.2以下かを調べます。複数サイトを運用している場合は、全サイトを対象にします。

    wp plugin list | grep -i qode
  2. 2

    修正版の有無をベンダーの告知で確認する

    Qode Themesの告知や、テーマの販売ページ、Wordfenceの脆弱性情報で、修正版が出ているかを確認します。出ていれば、検証のうえ速やかに更新します。

  3. 3

    修正版を当てられない間はプラグインを止める

    修正版が確認できない間は、プラグインの無効化を検討します。止めると会員のログインや登録も使えなくなるため、運用担当と調整してください。

  4. 4

    管理者アカウントとログインの履歴を点検する

    見覚えのない管理者アカウントの追加、管理者権限の付与、心当たりのないプラグインやテーマの追加がないかを見ます。アクセスログで、会員ログイン用のAJAX通信に不審な集中がないかも確認してください。

    wp user list --role=administrator
  5. 5

    不審な点があれば、認証情報を入れ替える

    侵入の形跡があれば、管理者のパスワードを変更し、既存のセッションを無効にします。あわせて、データベースやwp-config.phpの認証情報の入れ替えも検討してください。

すぐ更新できないとき

プラグインを無効化するのが最も確実です。無効化できない場合は、WAFやリバースプロキシで、qode_membership_check_facebook_userを指すAJAXリクエストを遮断する方法があります。ただし、この遮断は公開情報から考えた暫定策で、ベンダーが示した回避策ではありません。Facebookログインが使えなくなる点にも注意してください。

背景

Qode Membershipは、Qode Themesが提供するWordPress用の会員機能プラグインです。会員の登録画面とログイン画面をショートコードでサイトに置け、Facebookなど外部サービスのアカウントでのログインにも対応します。会員制のコンテンツやコミュニティを持つ企業サイトでは、ログイン画面が外部に公開されていることが前提になります。

ソーシャルログインでは、外部サービスが発行したトークンを自社サーバー側で検証する部分が、認証の要になります。この脆弱性では、その検証が条件式の変数名の誤記で、実行されない状態になっていました。製品に固有の設計ではなく、1か所の書き間違いが認証全体を無効にしている点が特徴です。

よくある質問

Q.管理者のパスワードを強くしておけば防げますか。
A.防げません。この脆弱性ではパスワードの検証を経ずにログインできるため、パスワードの強さは影響しません。パスワード変更は、侵入が疑われるときの事後対応として有効ですが、脆弱性そのものは塞がりません。
Q.管理者のログイン名を公開しなければ、攻撃されませんか。
A.安全とは言えません。WordPressでは、投稿者の表示や列挙によってログイン名が推測される場合があります。ログイン名の秘匿には頼らず、プラグインの停止か修正版への更新で対処してください。

まだ分かっていないこと

  • 修正版が出ているかどうか、出ている場合の版番号は、確認できていません。ベンダーの告知とWordfenceの脆弱性情報で確認してください。
  • 実際の攻撃で悪用されたかどうかは、分かっていません。Facebookログインの設定を無効にしていれば攻撃を受けないのかも、公表されていません。
  • 参考情報にはBridgeテーマの販売ページが挙がっていますが、このテーマとプラグインの同梱関係は分かっていません。

この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。

影響パッケージ

種類パッケージ影響を受ける版直った版
Qode Themes Qode Membership
2.0.6.2 以前
—
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

The Qode Membership plugin for WordPress is vulnerable to Authentication Bypass leading to Account Takeover in all versions up to, and including, 2.0.6.2 via the qode_membership_check_facebook_user AJAX action. This is due to a typographic error in the Facebook OAuth token verification guard within the qode_membership_login_user_from_social_network function — the guard condition tests an undefined variable ($check_social_useqoder instead of $check_social_user), causing empty() to always return true and rendering the Graph API token verification branch dead code, leaving wp_set_auth_cookie() reachable with no credential or token validation whatsoever. This makes it possible for unauthenticated attackers to log in as any existing WordPress account — including Administrator-level accounts — by supplying a known or enumerated administrator login name (rather than an email address) in the response[email] parameter, which the fallback path in get_user_by('login', $email) resolves to the matching account. Exploitation does require harvesting a valid qode_validate_facebook_login nonce, but this nonce is rendered on any public front-end page containing the [qode_user_login] or [qode_user_register] shortcode and is therefore obtainable without any prior authentication.

出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく