WordPressのeラーニングプラグイン「Tutor LMS」を利用する10万件以上のサイトが、低権限ユーザーによる脆弱なサーバーの乗っ取りを許しかねない、深刻度の高いリモートコード実行(RCE)の脆弱性にさらされていたことが分かりました。
Remotecode execution
この脆弱性は2026年8月23日、AI支援型の脆弱性リサーチエージェントであるWordfence Argusによって発見され、Wordfence Threat Intelligenceチームが検証を行いました。
Wordfenceはこの問題にCVSSスコア8.8を割り当てており、認証済みユーザーによるPHPオブジェクトインジェクションの連鎖が任意コード実行につながるリスクを反映しています。
Tutor LMSはWordPressベースの教育ポータル構築に広く使われており、オンライン講座プラットフォームや学生管理サイトなどにも利用されています。
重要な点として、多くの導入環境では学生の自由登録を許可しており、この脆弱性が要求する「購読者(subscriber)レベル」の認証要件は、実質的にはほとんど障壁にならない可能性があります。
攻撃者は標準的な学生アカウントを作成し、有効なフロントエンドnonceを取得したうえで、脆弱なAJAX機能を呼び出すことができたとみられます。
脆弱性の原因となっているのは、プラグインの出金アカウント管理機能、具体的にはtutor_save_withdraw_accountというAJAXハンドラです。
このエンドポイントは有効なnonceを要求していたものの、権限や役割のチェックを行っていませんでした。
Wordfenceによると、このnonceはフロントエンドのスクリプトを通じて認証済みユーザーに公開されており、ログイン済みの購読者であれば誰でもこのハンドラにアクセスできる状態だったといいます。
この一連の攻撃連鎖は、攻撃者が制御可能な出金フォームのデータを安全に処理していなかったことに起因します。
プラグインは送信された値をWordPressのesc_sql()関数で処理した後、update_user_meta()を使って保存していました。
esc_sql()は本来データベースクエリのエスケープを目的とした関数ですが、後にメタデータ保存用にシリアライズされるデータにこれを使用したことで、危険なシリアライズ長の不整合が生じました。
WordPressはSQLエスケープの際、内部的にパーセント記号をプレースホルダートークンに置き換えます。
この置き換えによって膨張した値は、その拡大された長さのままシリアライズされますが、データベースへの書き込みが行われる前にプレースホルダーは単一のパーセント記号に戻されてしまいます。
CVE-2026-78175として追跡されているこの脆弱性は、Tutor LMSバージョン4.0.7以前に影響し、バージョン4.0.8で修正されています。
Tutor LMSの脆弱性
その結果、データベース内には、宣言された長さが実際の長さより大きいシリアライズ文字列が保存され得る状態になります。
攻撃者が制御するデータは、204行目でtutor_utils()->avalue_dot()を介して取得される$_POST['withdraw_method_field'][$method]から流入します。
WordPressが後にこの不正なメタデータをアンシリアライズする際、PHPは想定される文字列の境界を超えて、攻撃者が制御するデータを読み取ってしまう可能性があります。
研究者らによると、攻撃者が制御可能なPOSTフィールド名を利用することで、細工したシリアライズオブジェクトのストリームを注入でき、このデータ破損のプリミティブはPHPオブジェクトインジェクションへと転化するとのことです。
この脆弱性は、悪意あるメタデータが保存された後にトリガーされる可能性があります。
Vulnerabilitydiscovery service
同じハンドラに対する2回目のリクエストによって、WordPressが変更の有無を確認する過程で、以前保存されたユーザーメタデータを取得しアンシリアライズしてしまう可能性があります。
このペイロードは、アカウント設定や出金関連のダッシュボードページなど、Tutor LMSが出金データを取得する際にもトリガーされ得ます。
Wordfenceの研究者らは、プラグインに同梱されたPayPal用Composerオートローダーと、GuzzleのFileCookieJarクラスを組み合わせた、実行可能なプロパティ指向プログラミング(POP)チェーンを特定しました。

このチェーンにより、オブジェクトが破棄される際にPHPが攻撃者の選んだファイルパスへ、攻撃者が制御する内容を書き込んでしまう可能性があります。
攻撃が成功した場合、攻撃者はWeb経由でアクセス可能なアップロードディレクトリにPHPペイロードを書き込み、Webサーバーの権限でOSコマンドを実行できてしまう恐れがあります。
Themeumは8月24日に報告を確認し、9月10日にTutor LMSバージョン4.0.8をリリースしました。
このアップデートでは、出金アカウント用エンドポイントにインストラクター権限のチェックを追加したほか、安全でないesc_sql()処理を廃止し、出金方法の検証を行い、送信可能なフィールドをプラグインが定義する信頼済みのホワイトリストに限定しています。
Wordfence Premium、Care、Responseの各顧客には8月25日にファイアウォールルールが提供されました。無償版Wordfenceのユーザーには、同じ保護が9月24日に提供される予定です。
このファイアウォールルールは補完的な対策として有用ですが、管理者はパッチ適用の代わりとして扱うべきではありません。
| 項目 | 詳細 |
|---|---|
| プラグイン | Tutor LMS – eラーニング・オンライン講座ソリューション |
| CVE | CVE-2026-78175 |
| 脆弱性 | 認証済みPHPオブジェクトインジェクションによるRCE |
| 深刻度 | CVSS 8.8(高) |
| 影響を受けるバージョン | Tutor LMS 4.0.7以前 |
| 修正バージョン | Tutor LMS 4.0.8 |
| 必要なアクセス権限 | 購読者(subscriber)レベル以上のアカウント |
| 追加条件 | マネタイズ機能が有効になっていること。自由登録が可能な場合、実質的に未認証でも侵入可能な経路が生まれる |
WordPressの管理者は、直ちにTutor LMSをバージョン4.0.8以降にアップグレードし、一般公開登録が本当に必要かどうかを見直すとともに、最近作成された購読者アカウントやwp-content/uploads配下の不審なファイルを監査すべきです。
サイト運営者は、tutor_save_withdraw_accountを標的とした異常な認証済みAJAXリクエストがないか、Webサーバーのログも確認すべきでしょう。
公開されているラーニングプラットフォームを運用している組織は、不審なアカウントの認証情報のリセット、Tutor LMSの出金設定に関連するユーザーメタデータの確認を検討し、公開開示後も未パッチのままだった場合には侵害調査(コンプロマイズアセスメント)を実施することが望まれます。
SOCにおけるアラート調査時間を1件あたり21分削減。即座のインシデント対応を可能にするIOCコンテキストでSOCを強化: TI Lookupを貴社のSOCに統合する
翻訳元: https://gbhackers.com/tutor-lms-vulnerability/