Contact Managerに未認証のアップロード脆弱性、9.1.3で修正か
WordPressのプラグインContact Managerの9.1.2以前に、ログインなしで不正なファイルを送り込める脆弱性が見つかりました。Apacheとmod_phpで動かしているサイトでは、サーバー上でコードを実行される恐れがあります。該当する場合は9.1.3への更新を進め、更新できなければプラグインを止めてください。
急ぎ度: 早めに
CVSS v3は9.8で認証も不要ですが、KEVへの掲載は確認されておらず、コード実行にはサーバー構成などの条件が重なる必要があるため、至急ではなく早めの対応と判断しました。
関係があるか
Contact Managerを入れているWordPressサイトが対象です。なかでもApacheにlibapache2-mod-phpを組み合わせたサーバーは、コード実行まで進む条件がそろいます。
| 製品 | 影響を受ける版 | 直った版 |
|---|---|---|
| Contact Manager(WordPressプラグイン) | 9.1.2までのすべての版 | 9.1.3(9.1.2から9.1.3への変更履歴が公開されており、この版で修正されたとみられます) |
確かめ方
- 1WordPressの管理画面でプラグインの一覧を開き、Contact Managerが入っているか、版が9.1.2以下かを見ます。
- 2WP-CLIが使えるサーバーでは、次のコマンドで版を確認できます。
- 3
wp plugin get contact-manager --field=version - 4Apacheとmod_phpの組み合わせかどうかは、
apache2ctl -M | grep phpで確認します。phpのモジュールが表示されれば、コード実行の条件の一つを満たしています。
何が起きたか
Contact Managerの9.1.2以前には、ログインしていない人でも、本来は拒否されるはずの種類のファイルをサーバーに送れてしまう脆弱性があります。うまく悪用されると、サーバー上で攻撃者の用意したコードが動く恐れがあります。
原因は、メッセージを受け付けるときのファイル種別の判定にあります。このプラグインは、禁止する拡張子を並べた一覧で添付ファイルを弾いています。ところがファイル名の末尾に特定の記号が付くと、拡張子が取り出せずに空として扱われ、一覧の検査をすり抜けます。そのあとWordPress側のファイル名の整理処理が問題の記号を取り除くため、危険な拡張子のファイルがそのまま書き込まれます。分類はCWE-434です。
公開日は2026年10月28日です。Wordfenceの情報やプラグインのソースの参照先が示されており、9.1.2から9.1.3への変更履歴も公開されています。
攻撃の流れ
-
1
フォームに接続
ログインしていない外部の人が、公開されているフォームの受付処理に添付ファイルを送ります。
-
2
検査をすり抜け
ファイル名の細工により拡張子が空と判定され、禁止一覧の検査を通過します。
-
3
ファイルが保存
ファイル名の整理後に、危険な拡張子のファイルがサーバーに書き込まれます。
-
4
削除前に実行
リクエスト終了時に削除されるまでの短い間にファイルが取得されると、コードが実行されます。
どう悪用されるか
悪用に認証は要りません。ネットワーク経由で届く攻撃で、利用者に何かをさせる必要もありません。CVSSのベクターでも、攻撃元区分はネットワーク、攻撃条件の複雑さは低、必要な権限と利用者の操作はなしとされています。
ただし、ファイルを置けることと、コードを実行できることは別の話です。コード実行には、ApacheがPHPをmod_phpで処理していることが必要です。さらに、送ったファイルがリクエスト終了時に削除されるまでの短い間に、攻撃者がそれを取得しなければなりません。この2つがそろわない環境では、実際にコードを実行される可能性はかなり下がるでしょう。
条件がそろって悪用されると、WordPressを動かしているサーバー上で任意のコードを実行されます。機密性・完全性・可用性への影響はいずれも高とされており、サイトの改ざん、データベース内の情報の読み取り、同じサーバー上の他のシステムへの足がかりといった被害が考えられます。
今すぐやること
-
1
版を確認する
Contact Managerを入れているサイトを洗い出し、版が9.1.2以下かを確認します。複数サイトを預かっている場合は、すべてのWordPressを対象にします。
wp plugin get contact-manager --field=version -
2
修正版に更新する
9.1.3以降に更新します。本番に当てる前に、フォーム送信が正しく動くかをステージング環境で確かめておくと安心です。
-
3
サーバー構成を確かめる
Apacheとmod_phpの組み合わせかを確認します。当てはまるサイトは、更新の優先順位を上げてください。
apache2ctl -M | grep php -
4
不審なファイルや通信を調べる
更新前に公開していた期間の、フォームへのPOSTと、アップロード先やその周辺に見覚えのないファイルがないかをログで確認します。不審な痕跡があれば、サイトの停止と認証情報の入れ替えも検討します。
すぐ更新できないとき
すぐに更新できないときは、Contact Managerのプラグインを無効にするのが確実です。フォームが業務上止められない場合は、フォームのページに対するアクセスをWAFやWebサーバーの設定で絞り込み、早めに更新できる時期を決めておいてください。
背景
Contact Managerは、サイトの訪問者から問い合わせなどのメッセージを受け取り、管理するWordPressプラグインです。問い合わせフォームは、ログインしていない誰でも触れる入り口です。そのため、受け付けた内容やファイルの検査に抜けがあると、認証を前提にしない攻撃にそのままつながります。今回も、メッセージを追加する処理がこの入り口にあたります。
添付ファイルの扱いでは、禁止する拡張子を一覧で並べる方式は、一覧に載らない書き方が見つかるたびに穴になりやすいと知られています。今回の脆弱性も、拡張子を取り出す処理が空の結果を返す場合を想定していなかったことが原因です。許可する拡張子だけを通す方式や、アップロード先でのPHP実行の禁止といった設計は、この種の抜けに強くなります。
よくある質問
Q.nginxやPHP-FPMで動かしているサイトは、更新しなくてもよいですか。
まだ分かっていないこと
- 実際の攻撃で悪用された事例があるかは公表されておらず、KEVにも載っていません。EPSSの値も確認できていません。
- 9.1.3が公式に修正版として案内されているかは、変更履歴から推測した段階です。ベンダーの告知とプラグイン配布ページで確認してください。
- Apache以外の構成で、ファイルが保存されたあとにどのような影響が出るかは、公表されていません。
この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 直った版 |
|---|---|---|---|
| kleor | Contact Manager |
9.1.2 以前 |
— |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
The Contact Manager plugin for WordPress is vulnerable to Arbitrary File Upload in all versions up to, and including, 9.1.2 via the add_message function. This is due to an incomplete extension blacklist that fails to detect dangerous extensions when a trailing dot causes the extension-derivation routine to return an empty string, which sanitize_file_name() then silently removes before the file is written to disk. This makes it possible for unauthenticated attackers to upload files that may be executable, which makes remote code execution possible. Successful code execution additionally requires the server to use Apache with libapache2-mod-php (which maps .phar to PHP by default) and the attacker to retrieve the uploaded file within the brief window before it is removed by unlink() at end of request.
出典: 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 security@wordfence.com
- web nvd.nist.gov
- web fr.wordpress.org
- web github.com