Checkout Field Editor Proに添付削除の脆弱性
WooCommerceのチェックアウト項目を編集するプラグインCheckout Field Editor Proに、ログインなしで添付ファイルを削除される脆弱性が見つかりました。利用中のサイトは更新の有無を確認し、メディアライブラリに欠けがないかも見てください。
急ぎ度: 早めに
CVSS v3は9.1で、3.8.1が最新版として製品ページに出ているため、早めの更新を勧めます。
関係があるか
WordPressのWooCommerceでネットショップを運営し、有料版のCheckout Field Editor for WooCommerce(Pro)を入れているサイトが対象です。無料版は、CVEの記録に対象として書かれていません。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| Checkout Field Editor for WooCommerce (Pro) | 3.8.0以前(3.8.0を含む) | 製品ページで最新版として3.8.1が案内されています。この脆弱性への対応内容は、ベンダーの変更履歴で確認してください。 |
確かめ方
- 1WordPressの管理画面でプラグイン一覧を開き、Checkout Field Editor for WooCommerce(Pro)の版を確認します。
- 2WP-CLIが使える環境では、
wp plugin listで入れている版を一覧できます。 - 3チェックアウトのフィールド設定にFile Uploadが含まれているかを確認します。含まれているサイトは先に対応します。
- 4ライセンスの期限を確認します。購入から1年間が更新とサポートの対象なので、期限が切れていると更新版を入手できないことがあります。
何が起きたか
ログインしていない訪問者が、サイトのメディアライブラリにある添付ファイルを削除できてしまう脆弱性です。他のユーザーや他の投稿に属するファイルも消せます。
原因は、アップロード済みファイルを削除する処理(ajax_remove_uploaded())に、権限と所有者の確認が欠けていることです(CWE-862)。この処理はログインの有無を問わず呼び出せるAJAXの窓口に登録されており、守りはfile_handling_nonceというnonceだけです。
削除されると、商品画像や投稿用の素材といった重要なメディアが失われ、サービス拒否にもつながるとされています。CVSS v3のベクターでは、情報の漏えいは想定されず、改ざん(完全性)と可用性への影響が高いと評価されています。
攻撃の流れ
-
1
nonceの入手
誰でも開けるチェックアウトページの表示内容から、削除処理に使うnonceを得る。
-
2
削除要求を送る
ログインせずに、削除したい添付ファイルのIDを指定して要求を送る。
-
3
権限確認なし
サイト側が所有者や権限を確かめず、そのまま処理を進める。
-
4
ファイルが消える
他のユーザーや投稿のメディアを含め、任意の添付ファイルが削除される。
どう悪用されるか
認証は不要です。インターネット経由で、利用者の操作も要らずに悪用できます。
守りの役目を果たすはずのnonceは、File Uploadのチェックアウトフィールドを設定しているサイトでは、公開されているチェックアウトページのマークアップ(data-nonce属性)に出力されます。つまり、ページを開ける人なら誰でもnonceを手に入れられます。
悪用されると、メディアライブラリの添付ファイルが任意に削除されます。画像などが表示されなくなれば、ショップの運営に支障が出ます。
今すぐやること
-
1
版を確認する
管理画面のプラグイン一覧かWP-CLIで、Checkout Field Editor for WooCommerce(Pro)の版を確認します。3.8.0以前なら対象です。
wp plugin list -
2
修正版に更新する
3.8.1以降へ更新します。更新前に変更履歴を開き、この脆弱性への対応が書かれているかを確認してください。ライセンスが切れていて更新できない場合は、更新して使い続けるか、プラグインの利用をやめるかをその場で決めます。
-
3
更新前にバックアップを取る
アップロードされたメディアのフォルダーとデータベースを保存しておきます。すでに削除されたファイルがあっても、ここから戻せるようにするためです。
-
4
削除の跡を調べる
メディアライブラリで、投稿や商品ページに画像が表示されなくなっていないかを見ます。あわせて、アクセスログでadmin-ajax.phpへのthwcfe_remove_uploadedを指定した要求が、見覚えのない接続元から来ていないかを確認します。
すぐ更新できないとき
すぐに更新できないときは、File Uploadのチェックアウトフィールドを一時的に無効にします。脆弱性の説明では、nonceはこのフィールドが設定されているときにページへ出力されるためです。ただし、ベンダーが回避策として案内したものではなく、これで確実に防げるとは確認されていません。WAFを使っているなら、thwcfe_remove_uploadedを指定したログインなしの要求を遮断する方法もあります。この場合、ゲスト購入者がアップロード済みファイルを取り消す機能が使えなくなることがあります。いずれも更新までのつなぎとして使ってください。
背景
Checkout Field Editor for WooCommerce(Pro)は、WooCommerceの購入画面に入力項目を足したり並べ替えたりするプラグインです。製品ページによると、項目の種類は24あり、その中にFile Uploadがあります。購入者が注文時にファイルを添付できるため、ログインしていない訪問者からの操作も受け付ける場所に、削除の処理が置かれていました。製品ページは60万以上のアクティブインストールを示していますが、この数に無料版が含まれるかは分かりません。
WordPressでは、ログインしていない訪問者向けのAJAX処理を公開できます。そのときnonceは、画面に埋め込まれて誰でも見られる値なので、権限の確認の代わりにはなりません。今回の脆弱性は、権限確認が抜けたまま、nonceだけで削除処理を守っていた点にあります。
よくある質問
Q.File Uploadのフィールドを使っていなければ、影響はありませんか。
Q.無料版のCheckout Field Editorも対象ですか。
この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
影響パッケージ
| パッケージ | 影響を受ける版 → 修正版 | |
|---|---|---|
| ThemehighCheckout Field Editor for WooCommerce (Pro) |
3.8.0 以前→ 記載なし |
記載なし |
この記録には修正版の版が載っていません。修正版の有無と版は、本文か参照URLのベンダーの勧告で確かめてください。
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
The Checkout Field Editor for WooCommerce (Pro) plugin for WordPress is vulnerable to unauthorized deletion of arbitrary attachments due to a missing capability/ownership check in the ajax_remove_uploaded() function in versions up to, and including, 3.8.0. The handler is registered for both wp_ajax and wp_ajax_nopriv and is gated solely by the 'file_handling_nonce' nonce, which is emitted inside the public checkout page markup (data-nonce attribute) whenever a File Upload checkout field is configured. This makes it possible for unauthenticated attackers to delete arbitrary attachments (including those belonging to other users or posts) by submitting a crafted attachment_id, which can lead to loss of important media and potential denial of service.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- web wordfence.com
- web security@wordfence.com
- web nvd.nist.gov
- web themehigh.com
- web github.com