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

WooCommerce登録フォームに権限昇格の脆弱性、修正版未確認

Registration Form for WooCommerceの1.1.4以前に、認証なしで管理者アカウントを作れる脆弱性があります。WooCommerceで購入時に会員登録を受けるサイトは、版を確認して更新か無効化を進め、管理者一覧も点検してください。

CVE-2026-119075 公開 更新 執筆・監修: 佐々木 航 人が監修しながらAIを活用して執筆
記事のイメージ(生成 AI による画像)
画像は生成 AI で作成したイメージです

急ぎ度: 至急

CVSS v3は9.8で、認証なしにネットワーク越しで管理者権限を得られるうえ、1.1.4以前が対象で、修正版の公開は確認できていないためです。

関係があるか

WordPressとWooCommerceでネットショップや会員サイトを運営し、プラグインのRegistration Form for WooCommerceを入れている組織が対象です。レジ画面(チェックアウト)でアカウントを作る経路が影響を受けます。

製品影響を受ける版修正版
Registration Form for WooCommerce(ThemeGrill) 1.1.4以前のすべての版 修正版の版番号は未確認です。プラグインの公開リポジトリには1.1.4から1.1.5への変更記録があり、1.1.5が修正版の可能性があります。WordPress.orgのプラグインページで更新の有無を確かめてください。

確かめ方

  1. 1WordPressの管理画面で「プラグイン」を開き、Registration Form for WooCommerceの版が1.1.4以下か確認します。
  2. 2WP-CLIが使える環境では、wp plugin get registration-form-for-woocommerce --field=version で版を確認できます。
  3. 3プラグインが無効化されていても、サーバー上に残っているだけで使われる場合があるため、使わないなら削除まで済ませます。

何が起きたか

WordPress用プラグインのRegistration Form for WooCommerceに、購入手続き中のアカウント作成で、本来選べない権限が付いてしまう脆弱性が見つかりました。最悪の場合、一般の客として登録したアカウントが管理者になり、サイト全体を乗っ取られます。

このプラグインは、登録フォームで許可する権限(ロール)をあらかじめ設定できます。マイアカウント画面からの登録では、送られてきた権限が許可リストに含まれるかを検証しています。ところが、チェックアウト時の登録ではこの検証がなく、送られた権限の値がそのまま新規アカウントに設定されます。

脆弱性の種類はCWE-269(不適切な権限管理)で、CVE-2026-119075として2026年11月7日に公表されました。

攻撃の流れ

  1. 1

    対象を探す

    WooCommerceでチェックアウト時の会員登録を受け付けているサイトを探します。

  2. 2

    権限を指定

    チェックアウト中のアカウント作成で、本来選べない管理者の権限を指定して送信します。

  3. 3

    検証をすり抜け

    チェックアウト側の経路では許可リストの確認がなく、指定した権限のまま登録されます。

  4. 4

    管理者として操作

    作られたアカウントでログインし、サイト全体を操作します。

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

どう悪用されるか

ログインは要りません。インターネット越しにサイトへ到達できれば、利用者の操作を待たず、特別な前提もなく試せる条件です。CVSSのベクターでも、認証なし、操作なし、攻撃条件は低いとされています。

成功すると、攻撃者は管理者としてサイトに入れます。顧客情報の閲覧、設定や投稿の書き換え、サイトの乗っ取りまで、管理者にできることはすべて行われうる状態になります。

今すぐやること

  1. 1

    版を確認する

    対象サイトのプラグイン版を洗い出します。複数のWordPressを運用している場合は、ステージングや休眠中のサイトも含めます。

    wp plugin get registration-form-for-woocommerce --field=version
  2. 2

    更新の有無を確かめ、あれば適用する

    WordPress.orgのプラグインページとThemeGrillの告知で、1.1.4より新しい版が出ているかを確認します。出ていれば、本番へ入れる前にテスト環境で購入手続きと会員登録を試し、そのうえで更新します。

  3. 3

    管理者アカウントを点検する

    覚えのない管理者がいないか、公表日以降に作られたアカウントがないかを確認します。見つけたら不正アクセスを疑い、パスワードの再設定や、プラグイン・テーマ・設定の改ざん確認に進みます。

    wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
  4. 4

    更新できない間は止める

    修正版が見つからない、または更新に時間がかかる場合は、プラグインの無効化を先に検討します。手段は回避策に書いたとおりです。

修正版がないあいだのつなぎ

修正版を当てられないあいだは、Registration Form for WooCommerceを無効化するのが最も確実です。登録フォームが使えなくなるので、会員登録の受付を一時的に止められるか、先に確認します。

どうしても止められない場合は、WAFやリバースプロキシで、チェックアウトへのリクエストに権限を指定するパラメーターが含まれるものを遮断する方法が考えられます。ただし、この方法の有効性はベンダーの案内では確認できていないため、無効化までのつなぎと考えてください。

背景

Registration Form for WooCommerceは、WooCommerceの会員登録フォームを自由に作り込むためのプラグインです。項目の追加に加えて、登録者に付ける権限を選ばせる設定もあります。ネットショップの会員管理に近い機能なので、権限の扱いに誤りがあると、サイトの管理権限に直結します。

今回の問題は、同じプラグインの中でも登録の入口によって検証の有無が違った点にあります。マイアカウント画面では許可された権限だけが通りますが、チェックアウトでは通りません。画面の見た目では差が分からず、設定画面で許可する権限を絞っていても、チェックアウトの経路では効いていなかったことになります。

よくある質問

Q.管理者アカウントに覚えのないものが見つかったら、まず何をしますか。
A.アカウントを消す前に、作成日時と管理画面やサーバーのアクセスログを保全します。そのうえでサイトの管理者のパスワードとセッションを無効にし、プラグイン、テーマ、投稿、設定の改ざんがないかを調べます。管理者権限で何が行われたかを確認するまでは、侵害されたものとして扱うのが安全です。
Q.更新の前に、バックアップは取るべきですか。
A.取ります。ただし侵害の疑いがあるサイトでは、バックアップに不正なアカウントや改ざんが含まれる可能性があります。更新前のバックアップは、調査用の証跡としても別に保管しておくと役立ちます。

まだ分かっていないこと

  • CVEの記録には、修正版の版番号が書かれていません。
  • 実際の攻撃で悪用された事例は、公表日の時点では示されていません。

この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。

影響パッケージ

パッケージ影響を受ける版 → 修正版
themegrillRegistration Form for WooCommerce
1.1.4 以前→ 記載なし

この記録には修正版の版が載っていません。修正版の有無と版は、本文か参照URLのベンダーの勧告で確かめてください。

原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

The Registration Form for WooCommerce plugin for WordPress is vulnerable to privilege escalation due to a missing allow-list check in the FormHandler::validate_checkout_fields() function in versions up to, and including, 1.1.4 The My Account registration path (validate_fields()) validates a submitted 'tgwcfb/user-roles' value against the form's configured allowed roles, but the checkout registration path (validate_checkout_fields(), hooked to woocommerce_after_checkout_validation) stores the raw $_POST['user_roles'] value in $this->valid_data without any allow-list enforcement, and add_user_data() then injects that value into woocommerce_new_customer_data as the new account's role. This makes it possible for unauthenticated attackers to elevate their privileges to Administrator by supplying a user_roles=administrator parameter when creating an account during checkout, resulting in full site takeover.

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

参照URL

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