GS JWT Authenticationに脆弱性、修正版なし
WordPressのプラグインGS JWT Authentication for WP REST APIの1.0.0以前に、認証なしで管理者セッションを奪われる脆弱性があります。修正版は未確認のため、使用中のサイトは無効化し、管理者アカウントを点検してください。
急ぎ度: 至急
CVSS v3は9.8で、認証なしにネットワークから管理者セッションを得られる脆弱性ですが、WPScanでは修正版が確認されていません。
関係があるか
このプラグインを導入したWordPressサイトが対象です。インターネットから見えるサイトは、そのまま攻撃を受ける位置にあります。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| GS JWT Authentication for WP REST API(WordPressプラグイン、識別名 gs-jwt-auth-and-otp-varification) | 1.0.0以前(<= 1.0.0) | 修正版は確認されていません(WPScanはNo known fixと記載) |
確かめ方
- 1WordPressの管理画面で「プラグイン」の一覧を開き、GS JWT Authentication for WP REST APIがあるか、版が1.0.0以下かを確認します。
- 2サーバーにWP-CLIがあれば、次のコマンドで一覧を出せます。複数サイトを運用している場合は、サイトごとに実行します。
- 3有効化の有無にかかわらず、一覧に載っていれば対象として扱います。
何が起きたか
このプラグインを入れたWordPressサイトで、ログインしていない第三者が管理者としてサイトに入れてしまう脆弱性が見つかりました。
プラグインが用意する複数のREST APIのルートで、リクエストに含まれる値を無害化せず、SQLの問い合わせにそのまま使っています。そのためSQLインジェクションが成立し、管理者のセッションを得られます。CVEの記録では、題が「Unauthenticated Privilege Escalation via SQLi」で、分類はCWE-269です。
CVEは2026年11月6日に公表されました。WPScanの掲載は11月4日で、公表から日が浅い状況です。
攻撃の流れ
-
1
公開ルートへ送信
ログイン不要のREST APIのルートに、細工したリクエストを送ります。
-
2
SQLに混入
無害化されない値がSQLの問い合わせに使われ、データベースへの操作が成立します。
-
3
管理者セッション取得
攻撃者が管理者としてのセッションを得ます。
-
4
サイトを掌握
管理者権限で、設定の変更や内容の改ざんが可能になります。
どう悪用されるか
攻撃にアカウントは要りません。インターネット越しに、対象サイトのREST APIへリクエストを送れれば成立します。CVSSの評価では、攻撃の難しさは低く、利用者の操作も要りません。
成功すると、攻撃者は管理者として振る舞えます。機密性・完全性・可用性のいずれも影響が大きいと評価されており、サイトの改ざん、アカウントの追加、プラグインやテーマを通じたコードの追加といった被害につながるおそれがあります。
今すぐやること
-
1
導入の有無を洗い出す
運用しているすべてのWordPressサイトで、このプラグインがあるか、版が1.0.0以下かを確認します。検証環境やあまり更新していないサイトも含めます。
wp plugin list --fields=name,status,version -
2
プラグインを無効化して削除する
修正版が確認されていないため、更新で解消する手段がありません。無効化して削除するのが最も確実です。JWT認証に依存する連携がある場合は、別の認証方式への切り替えを先に検討し、テスト環境で動作を確認してから外します。
-
3
管理者アカウントとセッションを点検する
身に覚えのない管理者アカウントがないか、最近のログイン履歴や、変更されたプラグイン・テーマのファイルがないかを調べます。疑わしい点があれば、管理者のパスワードを変更し、既存のセッションをすべて終了させます。
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered -
4
開発元の案内を確認する
WordPress.orgのプラグインページと開発元の告知で、修正版が出たかを定期的に確かめます。修正版が出ても、点検が済むまでは再導入を急がないほうが安全です。
修正版がないあいだのつなぎ
どうしても今すぐ外せない場合は、WAFやWebサーバーの設定で、このプラグインが公開しているREST APIのルートへの外部アクセスを遮断してください。ルート名はプラグインのコードで確認できます。ただし、遮断するとプラグインの認証機能も使えなくなります。恒久的な対処にはならないため、無効化と削除までのつなぎとして使います。
背景
このプラグインは、名前と識別名から、WordPressのREST APIにJWTによる認証とOTPの確認を加えるものとみられます。サイトの外から認証を受け付ける入口にあたるため、ここに脆弱性があると、本来の守りをそのまま素通りされます。
今回は、認証前に呼べるルートでSQLインジェクションが起き、結果として管理者のセッションが得られます。分類上はCWE-269の権限管理の問題ですが、原因はSQLの組み立てにあります。そのため、REST APIの認証を管理者権限の確認に使っている連携があるサイトでは、影響が広がるおそれがあります。
よくある質問
Q.プラグインを入れただけで有効化していない場合も対象ですか。
Q.無効化するとアプリやモバイル連携が止まりませんか。
まだ分かっていないこと
- 開発元による修正版の公開予定は示されていません。
この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 修正版 |
|---|---|---|---|
| CVE | GS JWT Authentication for WP REST API |
1.0.0 以前 |
記載なし |
この記録には修正版の版が載っていません。修正版の有無と版は、本文か参照URLのベンダーの勧告で確かめてください。
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
The GS JWT Authentication for WP REST API WordPress plugin through 1.0.0 does not sanitize or parameterize a request value before using it in SQL queries on several unauthenticated REST routes, allowing unauthenticated attackers to perform SQL injection and obtain an administrator session.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- web contact@wpscan.com
- web nvd.nist.gov
- web wpscan.com
- web github.com