Qode Membershipの脆弱性で管理者になりすまし、修正版は未確認
WordPressの会員機能プラグインQode Membershipに、認証なしで既存アカウントにログインできる脆弱性があります。管理者アカウントも対象で、会員登録やログインのページを公開しているサイトは影響を受けます。まず導入の有無と版を確認し、修正版が確認できるまでは停止も含めて検討してください。
急ぎ度: 至急
CVSS v3は9.8で、認証なしのネットワーク越しに管理者権限まで奪われるうえ、修正版の情報も確認できていないためです。
関係があるか
Qode Membershipを有効にしたWordPressサイトが対象です。会員のログイン画面や登録画面を一般公開している場合は、外部から誰でも到達できる状態になります。
| 製品 | 影響を受ける版 | 直った版 |
|---|---|---|
| Qode Membership(Qode Themes) | 2.0.6.2までのすべての版 | 未確認。ベンダーの告知で確認してください |
確かめ方
- 1WordPressの管理画面でプラグイン一覧を開き、Qode Membershipの有無と版が2.0.6.2以下かを見ます。テーマと一緒に導入されている場合もあるため、テーマ付属のプラグインも確認してください。
- 2WP-CLIが使える環境では、
wp plugin list | grep -i qodeで、導入済みのQode系プラグインとその版を一覧できます。 - 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
公開ページの確認
会員ログインや登録のショートコードがある公開ページから、必要な使い捨ての値を取得します。
-
2
ログイン名の入手
対象サイトの管理者のログイン名を、既知の情報や列挙で把握します。
-
3
検証の素通り
Facebookのトークン検証が実行されないため、資格情報なしで認証が通ります。
-
4
管理者として操作
管理者のセッションを得て、サイトの設定や内容を自由に変更します。
どう悪用されるか
悪用に認証は要りません。インターネット経由で、サイトの公開ページにアクセスできれば足り、管理者や利用者に何かを操作させる必要もありません。
攻撃には、ログイン処理用の使い捨ての値(nonce)が1つ要ります。この値は、ショートコード [qode_user_login] か [qode_user_register] を置いた公開ページに出力されるため、事前の認証なしで入手できます。あとは、対象アカウントのログイン名が分かれば成立します。
管理者としてログインされると、投稿や固定ページの改ざん、ユーザー情報の閲覧、ユーザーの追加や削除、プラグインやテーマの追加ができてしまいます。プラグインの追加を通じて、サーバー上でコードを動かされるおそれもあります。サイトの機密性・完全性・可用性のすべてに影響します。
今すぐやること
-
1
導入の有無と版を確認する
管理画面のプラグイン一覧か、WP-CLIで、Qode Membershipが入っているか、版が2.0.6.2以下かを調べます。複数サイトを運用している場合は、全サイトを対象にします。
wp plugin list | grep -i qode -
2
修正版の有無をベンダーの告知で確認する
Qode Themesの告知や、テーマの販売ページ、Wordfenceの脆弱性情報で、修正版が出ているかを確認します。出ていれば、検証のうえ速やかに更新します。
-
3
修正版を当てられない間はプラグインを止める
修正版が確認できない間は、プラグインの無効化を検討します。止めると会員のログインや登録も使えなくなるため、運用担当と調整してください。
-
4
管理者アカウントとログインの履歴を点検する
見覚えのない管理者アカウントの追加、管理者権限の付与、心当たりのないプラグインやテーマの追加がないかを見ます。アクセスログで、会員ログイン用のAJAX通信に不審な集中がないかも確認してください。
wp user list --role=administrator -
5
不審な点があれば、認証情報を入れ替える
侵入の形跡があれば、管理者のパスワードを変更し、既存のセッションを無効にします。あわせて、データベースやwp-config.phpの認証情報の入れ替えも検討してください。
すぐ更新できないとき
プラグインを無効化するのが最も確実です。無効化できない場合は、WAFやリバースプロキシで、qode_membership_check_facebook_userを指すAJAXリクエストを遮断する方法があります。ただし、この遮断は公開情報から考えた暫定策で、ベンダーが示した回避策ではありません。Facebookログインが使えなくなる点にも注意してください。
背景
Qode Membershipは、Qode Themesが提供するWordPress用の会員機能プラグインです。会員の登録画面とログイン画面をショートコードでサイトに置け、Facebookなど外部サービスのアカウントでのログインにも対応します。会員制のコンテンツやコミュニティを持つ企業サイトでは、ログイン画面が外部に公開されていることが前提になります。
ソーシャルログインでは、外部サービスが発行したトークンを自社サーバー側で検証する部分が、認証の要になります。この脆弱性では、その検証が条件式の変数名の誤記で、実行されない状態になっていました。製品に固有の設計ではなく、1か所の書き間違いが認証全体を無効にしている点が特徴です。
よくある質問
Q.管理者のパスワードを強くしておけば防げますか。
Q.管理者のログイン名を公開しなければ、攻撃されませんか。
まだ分かっていないこと
- 修正版が出ているかどうか、出ている場合の版番号は、確認できていません。ベンダーの告知と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
- web security@wordfence.com
- web security@wordfence.com
- web nvd.nist.gov
- web github.com