Project Managerに認証不要のRCE脆弱性、4.1.1以前
WordPress用プラグイン「Project Manager」の4.1.1以前に、ログインなしでサーバー上のコードを実行されるおそれのある脆弱性が公表されました。使っているサイトは版を確認し、配布元で修正版の有無を調べて、更新か無効化に進みます。
急ぎ度: 至急
CVSS v3が9.8で、認証もユーザー操作も要らずネットワークから任意のコードを実行できる脆弱性が公開されたばかりで、4.1.1以前のすべての版が対象だからです。
関係があるか
インターネットに公開したWordPressサイトに、このプラグインを入れている組織が対象です。社内向けの案件管理やタスク管理に使っていても、サイトが外から届く場所にあれば同じ扱いになります。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| Project Manager-AI Powered Project Management, Task Management, Kanban Board & Time Tracker(WordPressプラグイン、wedevs-projec | 4.1.1までのすべての版 | 版番号はこの時点で確認できていません。プラグイン配布ページの更新履歴とベンダーの告知で、4.1.1より新しい版が出ているかを確認してください |
確かめ方
- 1WordPressの管理画面で「プラグイン」の一覧を開き、Project Managerが入っているか、有効になっているか、版が4.1.1以下かを見ます。
- 2複数のサイトを預かっている場合は、サイトごとに同じ確認をします。使っていないのに入れたままのプラグインも対象です。
- 3サーバーにWP-CLIがあれば、版と状態をコマンドで一覧にできます。
何が起きたか
WordPressのプラグイン「Project Manager」に、ログインしていない第三者がサーバー上で任意のコードを実行できてしまう脆弱性が見つかりました。4.1.1までのすべての版が対象で、2026年10月31日に公表されています。
原因は、プラグインのAPIが受け取る「id」の値の扱いです。入力値が検証ルールの文字列にそのまま連結され、その文字列を区切った各要素が、許可リストの確認なしにPHPの関数として呼び出されます。
さらに、WordPress本体はルートの検証処理を、権限確認より前に実行します。このプラグインは権限確認で守る作りでしたが、問題の経路ではそこに到達しません。その結果、ログインなしで脆弱な処理に届きます。
攻撃の流れ
-
1
外部から要求
ログインしていない第三者が、公開されたWordPressサイトのプラグインのAPIに要求を送ります。
-
2
入力が混入
idの値が検証ルールの文字列にそのまま連結されます。
-
3
権限確認を素通り
検証処理が権限確認より先に動くため、認可の関門に届きません。
-
4
関数が実行
文字列を区切った要素が、許可リストなしでPHPの関数として呼び出されます。
-
5
サーバーを掌握
Webサーバーの権限で任意のコードが動き、サイトとデータが攻撃者の手に渡ります。
どう悪用されるか
悪用に認証は要りません。ネットワークから該当サイトのプラグインのAPIに届けば成立し、管理者や利用者の操作も必要ありません。CVSSの評価でも、攻撃の複雑さは低いとされています。
成功すると、Webサーバーの権限でコードを実行されます。サイト内のデータの読み取り、ファイルやデータベースの改ざん、サイトの停止まで、機密性・完全性・可用性のすべてに高い影響が出ます。案件や顧客のやり取りを載せているサイトでは、その内容も危険にさらされます。
今すぐやること
-
1
使っているサイトと版を洗い出す
管理画面かWP-CLIで、Project Managerを入れているサイトと版を確認します。使っていないサイトのプラグインも見落とさないようにします。
wp plugin get wedevs-project-manager --fields=name,status,version -
2
修正版の有無を確認する
プラグイン配布ページの更新履歴とベンダーの告知で、4.1.1より新しい版が出ているかを確認します。配布元のリポジトリには、問題のあった検証処理を直す変更が登録されています。
-
3
修正版があれば更新する
テスト環境で動作を確かめてから、本番を修正版に更新します。更新前にファイルとデータベースのバックアップを取っておくと、戻せるので安心です。
-
4
修正版が無ければ無効化する
更新できる版が見当たらない間は、プラグインを無効化します。業務で止められない場合は、下の回避策でつなぎます。
-
5
不審な痕跡がないか見る
公開直後ですが、公開サイトならすでに探られている可能性もあります。Webサーバーのアクセスログで、プラグインのAPIへの見慣れない要求を確認し、身に覚えのないファイルや管理者アカウントがないかも見ます。
修正版がないあいだのつなぎ
修正版を当てられない間は、プラグインを無効化するのが確実です。止められないときは、WAFやWebサーバーの設定で、このプラグインのREST APIへの外部からのアクセスを、社内IPなど必要な接続元だけに絞ります。これは完全な対策ではないので、修正版が出たら更新します。
背景
Project Managerは、WordPressの管理画面の中でプロジェクト、タスク、かんばん、時間記録を扱うプラグインです。小規模な組織やWeb制作会社が、専用のSaaSを入れずに案件管理を済ませる目的で使うことが多く、取引先とのやり取りや工数の記録がWordPressのデータベースに溜まります。
この脆弱性は、プラグインが独自に用意したAPIの検証処理で起きています。権限確認は用意されていても、WordPress本体が検証処理を先に実行するため、そこに届く前に処理が走ります。管理画面の中だけで使うつもりでも、APIは外から呼べる状態にあるので、サイトの公開範囲がそのまま影響範囲になります。
よくある質問
Q.WordPress本体を最新にすれば防げますか。
Q.無効化すると、登録したプロジェクトやタスクは消えますか。
この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 修正版 |
|---|---|---|---|
| wedevs | Project Manager – AI Powered Project Management, Task Management, Kanban Board & Time Tracker |
4.1.1 以前 |
— |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
The Project Manager – AI Powered Project Management, Task Management, Kanban Board & Time Tracker plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 4.1.1 via the 'id' parameter parameter. This is due to unsanitized 'id' parameter value concatenated directly into the pipe-delimited validation rule string, which is then split and each token invoked as a dynamic PHP function with no allowlist check. This makes it possible for unauthenticated attackers to execute code on the server. This is exploitable by unauthenticated attackers because WordPress core executes the route argument's validate_callback inside WP_REST_Server::dispatch() before the route's permission_callback is invoked, meaning the Project_Manage_Capability authorization gate is never reached on the vulnerable code path.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory