---
id: "CVE-2026-120518"
kind: "vulnerability"
aliases: ["CVE-2026-120518"]
title: "BuddyPress XProfile Image Field plugin: unauthenticated arbitrary file deletion on WordPress"
severity: "critical"
cvss: 9.1
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["buddypress", "package", "self-hosted", "wordpress"]
not_affected_if: ["no-image-profile-field", "plugin-above-3.1.0", "registration-closed"]
published_at: "2026-11-03T05:18:31+00:00"
first_seen_at: "2026-11-03T05:48:52+00:00"
updated_at: "2026-11-03T05:49:46+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-120518", "first_seen_at": "2026-11-03T05:48:52+00:00"}]
---

# BuddyPress XProfile Image Field plugin: unauthenticated arbitrary file deletion on WordPress

The BuddyPress XProfile Image Field WordPress plugin, up to and including 3.1.0, deletes files at paths taken from visitor-supplied signup data without checking them. An unauthenticated attacker can delete arbitrary server files, such as wp-config.php, which can lead to remote code execution.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Look for the plugin `BuddyPress XProfile Image Field` in the WordPress plugins list and note its version.
- Check whether open user registration is enabled and whether the signup form includes an image-type profile field.

## Fix

- Versions above `3.1.0` of the plugin; the sources do not name a fixed release.

## Timeline

- 2026-11-03T05:48:52+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-120518

## From the sources

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.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
