本文へ移動
English version →
重大 9.1 急ぎ度: 早めに

XProfile Image Fieldに未認証でファイル削除の脆弱性

BuddyPress向けのWordPressプラグインXProfile Image Fieldに、サーバー上の任意のファイルを消せる脆弱性が公表されました。会員登録を公開しているサイトは版を確認し、配布元の告知で修正版を調べてください。

CVE-2026-120518 公開 更新 執筆・監修: 佐々木 航 人が監修しながらAIを活用して執筆
画像は生成 AI で作成したイメージです

急ぎ度: 早めに

CVSS v3は9.1で、認証なしにファイルを削除でき、wp-config.phpが消えるとリモートコード実行に至り得ますが、公開登録と画像項目の組み合わせに限られるため、至急ではなく早めの対応と見ています。

関係があるか

BuddyPressで会員制サイトやコミュニティサイトを運営し、新規登録の画面に画像のプロフィール項目を出しているWordPressサイトが対象です。社内向けの会員サイトでも、外部から登録できる状態なら当てはまります。

製品影響を受ける版修正版
BuddyPress XProfile Custom Image Field(WordPressプラグイン) 3.1.0以下のすべての版 修正版の版番号は、プラグインの配布ページと開発元の告知で確認してください

確かめ方

  1. 1WordPressの管理画面でプラグイン一覧を開き、BuddyPress XProfile Custom Image Fieldの版が3.1.0以下か確認します。
  2. 2新規ユーザー登録を外部に公開しているか、WordPressとBuddyPressの登録に関する設定で確認します。
  3. 3BuddyPressのプロフィールフィールド管理で、登録フォームに表示される項目に画像形式のものがあるか確認します。
  4. 4WP-CLIが使える環境なら、次のコマンドで版と有効・無効の状態をまとめて確認できます。

何が起きたか

BuddyPress XProfile Custom Image Fieldに、サーバー上の任意のファイルを削除されてしまう脆弱性が見つかりました。重要なファイルが消えると、サイトの停止だけでなく、リモートコード実行にまで進む恐れがあります。

原因は、新規登録の保留データに入った画像項目の値を、アカウントの有効化時にそのままファイルのパスとして使い、削除していることです。削除を行うbpxp_image_field_update_on_user_activation() には、パスを正規化する処理も、プロフィール画像の保存先の中に収まっているかの確認も、拡張子の制限もありません。分類はCWE-22(パストラバーサル)です。

説明では、wp-config.phpのようなファイルが消えると、リモートコード実行に容易につながるとされています。

攻撃の流れ

  1. 1

    登録フォームに送信

    未ログインの訪問者が、新規登録の際に画像項目へ細工した値を送ります。

  2. 2

    保留データに保存

    プラグインが値を検証せず、保留中の登録情報としてそのまま保存します。

  3. 3

    有効化で削除処理

    登録の有効化時に、保存された値を元にしたパスのファイルがunlink() で削除されます。

  4. 4

    サイトの制御喪失

    wp-config.phpなどが消えると、サイトの停止やリモートコード実行につながり得ます。

公開されている情報をもとにした流れの例です。

どう悪用されるか

認証は不要で、ネットワーク越しに実行でき、サイト管理者や利用者の操作も要りません。ただし、ユーザー登録が公開されていることと、登録フォームに画像形式のプロフィール項目があることの両方が条件です。どちらかを満たさないサイトは、この経路では狙われません。

悪用されると、Webサーバーの権限で消せるファイルが削除されます。CVSSの評価では、情報の読み取りよりも、完全性と可用性への影響が大きいとされています。wp-config.phpが消された場合は、サイトの停止にとどまらず、リモートコード実行に発展し得ます。

今すぐやること

  1. 1

    プラグインの版を確認する

    管理画面かWP-CLIで、BuddyPress XProfile Custom Image Fieldが3.1.0以下かどうかを確認します。対象外ならここで終わりです。

    wp plugin list --fields=name,status,version
  2. 2

    修正版を確認して更新する

    プラグインの配布ページと開発元の告知で、修正版が出ているかを確認します。出ていれば、バックアップを取ったうえで更新します。

  3. 3

    更新できないあいだは公開面を絞る

    修正版が見当たらない、または今すぐ更新できない場合は、下の回避策のどれかを先に適用します。

  4. 4

    削除や不審な登録の跡を調べる

    wp-config.phpなどの重要ファイルが残っているかを確認します。あわせて、Webサーバーのログで登録フォームへの不審な送信が無いか、保留中の登録に見覚えのないものが無いかも見ます。ファイルが消えていた場合は、バックアップから戻す前に、侵入されていないかを調べます。

修正版がないあいだのつなぎ

次のいずれかで、脆弱な処理に値が届く経路をふさげます。

  • プラグインを無効化する。画像項目は登録フォームで使えなくなります
  • 画像形式のプロフィール項目を、登録フォームの表示から外す
  • 新規ユーザー登録を一時的に閉じる

無効化や設定変更のあとも、保留中の登録に不審なものが残っていないかは確認してください。

背景

BuddyPressは、WordPressに会員登録、プロフィール、交流の機能を足すプラグインです。XProfileはその拡張プロフィールの仕組みで、今回のプラグインは、そこに画像をアップロードする項目を加えます。登録フォームは、未ログインの訪問者が値を送れる数少ない入口なので、ここで受けた値を後段のファイル処理に使う実装は、特に慎重な検証が必要です。

WordPressのプラグインでは、任意のファイル削除がwp-config.phpの削除を経て、サイトの乗っ取りにつながる型がよく知られています。wp-config.phpにはデータベースの接続情報が入っていて、無くなるとサイトが未設定の状態に戻るためです。今回の脆弱性では、登録時に保存された値が、有効化という別のタイミングで削除に使われます。入力を受けた場面では何も起きないため、フォーム側の見た目からは異常に気づきにくい構造です。

よくある質問

Q.BuddyPress本体やWordPress本体も更新が必要ですか。
A.今回の脆弱性の対象は、BuddyPress XProfile Custom Image Fieldというプラグインです。BuddyPress本体やWordPress本体の脆弱性としては記載されていません。ただし、通常の更新は別に続けてください。
Q.ファイルが消えていた場合は、バックアップから戻せば済みますか。
A.戻す前に、入口を閉じてください。プラグインを無効化するか、登録を閉じてから復元します。そのうえで、データベースの接続情報や管理者アカウントのパスワードの見直しと、侵害の跡の調査も進めます。

この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。

影響パッケージ

種類パッケージ影響を受ける版修正版
kalengi BuddyPress XProfile Custom Image Field
3.1.0 以前
—
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

The BuddyPress XProfile Image Field plugin for WordPress is vulnerable to arbitrary file deletion in all versions up to, and including, 3.1.0. This is due to bpxp_image_field_update_on_user_activation() calling unlink() on a path built from visitor-supplied signup metadata with no realpath() resolution, no containment check against the profile-image directory and no extension allow-list. Submitting a zero-byte file with the 'field_N_hidden' parameter during registration makes the plugin store the raw value, which is then resolved against the document root when the pending signup is activated. This makes it possible for unauthenticated attackers to delete arbitrary files on the server, which can easily lead to remote code execution when the right file (such as wp-config.php) is deleted. Requires open registration and an image-type profile field on the signup form.

出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく