Checkout Files Uploadに任意ファイル送信の脆弱性、修正版あり
WordPressプラグインのCheckout Files Upload for WooCommerceに、ログインなしで任意のファイルを送り込める脆弱性が見つかりました。許可するファイル種別の設定を空にしているサイトが対象で、2.4.0未満を使っている場合は更新が必要です。あわせて設定の確認と、アップロード先に不審なファイルがないかの点検を進めてください。
急ぎ度: 早めに
CVSS v3が9.8で認証なしにファイルを置かれるおそれがあり、修正版2.4.0が出ているため、該当する環境は早めに更新したい状況です。
関係があるか
WooCommerceのサイトにCheckout Files Upload for WooCommerceを入れ、許可するファイル種別の設定を空にしている組織が対象です。アップロード先のディレクトリでPHPが実行されるサーバーでは、被害がサーバー上のコード実行にまで及びます。
| 製品 | 影響を受ける版 | 直った版 |
|---|---|---|
| Checkout Files Upload for WooCommerce(WordPressプラグイン) | 2.4.0未満 | 2.4.0 |
確かめ方
- 1WordPressの管理画面でプラグイン一覧を開き、Checkout Files Upload for WooCommerceが入っているか、版が2.4.0未満かを確認する
- 2プラグインの設定にある、許可するファイル種別の欄が空になっていないかを確認する。空欄は全ファイルを受け付ける指定です
- 3複数のサイトを管理しているなら、各サイトのプラグイン一覧を洗い出して、同じ条件に当てはまるサイトがないかを確認する
- 4Webサーバーの設定を見て、アップロード先のディレクトリでPHPが実行される構成になっていないかを確認する
何が起きたか
Checkout Files Upload for WooCommerceは、許可するファイル種別の設定が空のとき、アップロードされたファイルの種別を検証しません。この設定を空にするのは、ドキュメントに書かれた「すべてのファイルを受け付ける」ための正規の使い方です。つまり、案内どおりに設定したサイトがそのまま影響を受けます。
結果として、PHPファイルを含む任意のファイルがサイトに置かれる状態になります。分類はCWE-434(危険な種類のファイルの無制限アップロード)で、深刻度はcriticalです。公開日は2026年10月28日で、2.4.0で修正されました。
攻撃の流れ
-
1
設定が空のまま
許可するファイル種別を空にしたサイトで、種別の検証が行われない。
-
2
ファイルを送信
ログインしていない相手が、任意のファイルをアップロードできる。
-
3
PHPが置かれる
アップロード先にPHPファイルが保存される。
-
4
コードが動く
サーバーがその場所のPHPを実行する構成なら、サーバー上でコードが実行される。
どう悪用されるか
悪用に認証は要りません。ネットワーク経由で到達でき、利用者の操作も不要です。CVSSのベクターでは、攻撃の複雑さは低く、影響範囲は変わらず、機密性・完全性・可用性への影響はいずれも高とされています。
ただし、リモートでコードが実行されるのは、サーバーがアップロード先のディレクトリからPHPを実行する構成の場合です。この構成でなければ、任意のファイルを置かれる点は変わりませんが、置かれたPHPがそのまま動くわけではありません。
コードが実行されると、サイトのデータの閲覧や書き換え、サイトの停止、サーバー内の別の情報へのアクセスが起こり得ます。
今すぐやること
-
1
プラグインを修正版に更新する
Checkout Files Upload for WooCommerceを2.4.0に更新します。本番に反映する前に、検証環境でチェックアウトのファイル送信が動くことを確かめておくと安心です。
wp plugin list -
2
許可するファイル種別を明示する
設定欄が空なら、業務で必要な拡張子だけを書いて空欄をやめます。更新後もこの設定は見直しておきます。
-
3
アップロード先を点検する
アップロード先のディレクトリに、想定していない拡張子のファイル、とくにPHPファイルがないかを確認します。公開から更新までの間に置かれたものがないかが焦点です。
-
4
不審なファイルが見つかったとき
ファイルを削除する前に証拠として保全し、サイトの管理者アカウント・データベースの認証情報・サーバー上の秘密情報の漏えいを疑って調査します。必要なら認証情報を入れ替えます。
-
5
アクセスログを確認する
チェックアウトのアップロード機能へのアクセスのうち、不自然な送信や、アップロード後に同じファイルを直接呼び出した記録がないかを見ます。
すぐ更新できないとき
すぐに更新できないときは、プラグインをいったん無効にするのが確実です。無効にできない場合は、許可するファイル種別を空にせず必要な拡張子だけを指定し、Webサーバー側でアップロード先のディレクトリのPHP実行を禁止します。PHP実行の禁止は、今回の脆弱性による被害を抑える設定として有効です。
背景
Checkout Files Uploadは、名前のとおり、WooCommerceの購入手続きの画面でファイルを受け付けるためのプラグインです。購入手続きの画面は、一般にログイン前の訪問者にも開かれている入口です。そこにファイル受付の機能を足すと、認証の壁がないところでファイルが入ってくることになります。
今回の特徴は、実装の不備というより、検証を行わない状態が正規の設定として用意されていた点です。「空欄なら全許可」という使い方がドキュメントで案内されていたため、案内に従ったサイトほど該当しやすい構造でした。アップロード機能が受け付けるファイルの種類を絞らないと、サーバー上で動くファイルを置かれる危険が生じます。
よくある質問
Q.許可するファイル種別を明示済みなら、更新しなくてもよいですか。
Q.更新したあとも、過去に置かれたファイルは残りますか。
まだ分かっていないこと
- 実際の攻撃で悪用されているかどうかは分かっていません。KEVへの掲載やEPSSの値も確認できていないため、状況はWPScanなどの告知で確認してください。
- 2.4.0で、許可するファイル種別が空のときの挙動がどう変わったのかは分かっていません。ベンダーの更新履歴かWPScanの告知で確認してください。
- 2.4.0未満のうち、どの版から脆弱性が入ったのかは分かっていません。
この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 直った版 |
|---|---|---|---|
| CVE | Checkout Files Upload for WooCommerce |
2.4.0 未満 |
2.4.0 |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
The Checkout Files Upload for WooCommerce WordPress plugin before 2.4.0 does not validate uploaded file types when its accepted file types setting is left empty, which it documents as the way to accept all files, allowing unauthenticated users to upload arbitrary files, including PHP files that lead to remote code execution on servers that execute PHP from the uploads directory.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- web contact@wpscan.com
- web nvd.nist.gov
- web wpscan.com
- web github.com