Uncanny Toolkitに認証回避の脆弱性、早めの更新を
WordPressのプラグインUncanny Toolkit for LearnDashの一部の版に、アカウントの承認や停止を素通りしてログインできる脆弱性があります。LearnDashで研修サイトを運用している組織は、プラグインの版を確認し、更新の有無を調べてください。
急ぎ度: 早めに
CVSS v3は9.8のcriticalですが、悪用には対象アカウントの認証情報が必要で、悪用が確認されたという情報は見当たらず、修正の変更が公開リポジトリに入っているため、至急ではなく早めの更新が妥当です。
関係があるか
WordPressでLearnDashを使い、Uncanny Toolkit for LearnDashを入れている組織が対象です。社内研修や会員向け講座で、アカウントの承認制や停止の運用をしているサイトでは、影響が特に大きくなります。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| Uncanny Toolkit for LearnDash(WordPressプラグイン) | 3.8.2以前のすべての版 | 3.8.2より新しい版。公開リポジトリには修正の変更が入っています。リリースされた版番号は、プラグインの配布ページにある更新履歴で確認してください。 |
確かめ方
- 1WordPressの管理画面で、プラグインの一覧からUncanny Toolkit for LearnDashの版を見ます。3.8.2以前なら対象です。
- 2WP-CLIが使える環境なら、次のコマンドで版を確認できます。
- 3複数のサイトを預かっている場合は、全サイトでこのプラグインの有無と版を洗い出します。使っていないのに入ったままのサイトも見落とさないようにします。
何が起きたか
Uncanny Toolkit for LearnDashのログイン処理に、プラグインが設けた承認と停止のチェックを素通りされる脆弱性が見つかりました。承認待ちのアカウントや、管理者に停止されたアカウントが、本来は止められるはずのログインに成功してしまいます。
原因は、入力されたメールアドレスの文字列を、プラグインのチェックとWordPress本体が別々に解釈することにあります。uo_login_action() の中で、チェックはユーザー入力を加工せずに照合しますが、その後のログイン処理ではWordPress本体が文字列を整えてから本来のアカウントを特定します。この食い違いのため、チェックだけが空振りして飛ばされ、ログインは成立します。
弱点の分類はCWE-287(不適切な認証)です。ログインに成功すると有効なセッションCookieが発行され、そのアカウントの権限で管理画面や受講データを操作できます。
攻撃の流れ
-
1
認証情報を入手
停止中や承認待ちのアカウントのIDとパスワードを、何らかの経緯で知っている状態から始まります。
-
2
ログイン要求を送信
サイトのログイン処理に、細工したメールアドレスの値を含む要求を送ります。
-
3
チェックが空振り
プラグインの承認・停止チェックが対象アカウントを見つけられず、そのまま飛ばされます。
-
4
本体が認証
WordPress本体は本来のアカウントを特定して認証し、ログイン済みのセッションCookieを発行します。
どう悪用されるか
ログイン前の状態で、ネットワーク経由で試せます。利用者の操作は要りません。処理に必要なnonceも、同じ要求の中でログイン不要の窓口から取得できるため、攻撃の手間は小さいと説明されています。
ただし、対象アカウントの認証情報を知っていることが前提です。パスワードを知らない相手に、誰でもログインできるようになる脆弱性ではありません。
被害の中心は、承認制や停止の運用が無力になることです。承認前のアカウントや、停止された管理者アカウントでログインされると、そのアカウントの権限で管理画面の操作や受講データの閲覧ができます。管理者権限のアカウントなら、サイト全体に影響が及びます。
今すぐやること
-
1
プラグインを修正版に更新する
まず版を確認し、3.8.2以前なら、配布ページの更新履歴で修正を含む版を確かめて更新します。本番サイトでは、更新前にバックアップを取り、ステージング環境でログインと講座の動作を試します。
wp plugin get uncanny-learndash-toolkit --field=version -
2
停止中・承認待ちのアカウントを洗い出す
停止中や承認待ちのアカウント、とくに管理者権限のものを一覧にします。不要なら削除し、必要なものはパスワードを変更します。
-
3
ログインの履歴を見直す
公表の前後で、停止中や承認前のアカウントがログインしていないか、Webサーバーのアクセスログやセキュリティ系プラグインのログで確認します。見覚えのない管理者アカウントや、設定の変更がないかも見ます。
-
4
不審な形跡があれば認証情報を入れ替える
怪しいログインが見つかったら、そのアカウントのパスワードを変更し、ログイン中のセッションを破棄します。管理者アカウントが関わるなら、ほかの管理者のパスワードも入れ替えます。
すぐ更新できないとき
すぐに更新できないときは、プラグインのフロントエンドログイン機能を無効にし、WordPress標準のログイン画面だけを使う運用に切り替えます。設定名は版によって違うため、ベンダーの案内で確認してください。それが難しければ、プラグインを一時的に停止します。ただし、ログインページや講座の表示が崩れるため、事前に影響を見ておきます。あわせて、停止中のアカウントのパスワードを変更するか権限を外しておくと、認証情報が漏れていても被害を抑えられます。
背景
Uncanny Toolkit for LearnDashは、学習管理システム(LMS)のLearnDashに、ログイン画面の差し替えや各種の便利機能を加えるプラグインです。企業の社内研修や会員向け講座でLearnDashを使う場合、受講者の登録や承認、不要になったアカウントの停止といった運用をこの層で支えているサイトも少なくありません。
今回の脆弱性は、プラグインの承認・停止チェックとWordPress本体の認証処理が、同じ入力を別々に解釈するために起きています。チェック自体は存在していたのに、本体との解釈のずれで迂回されたのです。承認制や停止の仕組みを独自に足したプラグインは、その仕組みが本体のログイン処理と同じ対象を見ているかどうかが、安全性を左右します。
よくある質問
Q.管理者アカウントを停止していなければ、影響はありませんか。
Q.WordPress本体の更新で直りますか。
この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 修正版 |
|---|---|---|---|
| uncannyowl | Uncanny Toolkit for LearnDash |
3.8.2 以前 |
— |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
The Uncanny Toolkit for LearnDash plugin for WordPress is vulnerable to Authentication Bypass in versions up to, and including, 3.8.2 via the email parameter of the uo_login_action() function. This is due to a parser-differential flaw in which the plugin's account-verification gate resolves the submitted email value using the raw, unsanitized string passed to get_user_by(), while the subsequent wp_signon() call relies on WordPress core's internal sanitize_user() to strip appended junk characters — causing the gate lookup to fail and be skipped entirely while the real account is still resolved and authenticated. This makes it possible for unauthenticated attackers to log in to unverified or administrator-suspended accounts whose credentials they already possess, obtaining a valid wordpress_logged_in session cookie and defeating the plugin's account-approval and account-suspension controls. The nonce required to reach the handler is freely obtainable in the same request from the unauthenticated ult-refresh-nonce endpoint, making exploitation trivial for any attacker with network access to the site and knowledge of a target account's credentials.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- web security@wordfence.com
- web security@wordfence.com
- web security@wordfence.com
- web security@wordfence.com
- web security@wordfence.com
- web security@wordfence.com
- web nvd.nist.gov
- web github.com