Skip to main content

BP Profile Search EUVDEUVD-2026-100768

| CVE-2026-104995 HIGH
PHP Remote File Inclusion (CWE-98)
2026-10-14 Wordfence GHSA-46v5-32pc-qx73
8.1
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send BuddyPress AJAX directory request
  2. Delivery
    Set crafted bps_directory cookie and spoofed Referer
  3. Exploit
    Bypass referer-derived page check
  4. Execution
    Include attacker-chosen PHP via bp_locate_template
  5. Persist
    Execute included PHP payload
  6. Impact
    Remote code execution on server

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V5 - File Handling File inclusion prevention, allowlisting
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Command and Control

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires the BP Profile Search plugin (<= 5.9) active on a WordPress site with BuddyPress installed, since the flaw is in the bps_directory_ajax() filter hooked onto bp_legacy_object_template_path/bp_nouveau_object_template_path during BuddyPress AJAX directory requests. The LFI primitive needs no authentication and no special configuration: the attacker fully controls the 'ajax_template' value via the 'bps_directory' cookie and controls the referer-derived 'page' comparison via HTTP_REFERER during AJAX, and there is no basename restriction, whitelist, or path-traversal check. The escalation to remote code execution is LIMITED by one real prerequisite - an includable PHP file must already be present on the server (e.g., a separate file-upload capability allowing PHP, or default container images such as wordpress:php8); without such a file the attacker is constrained to including existing server-side PHP, which still risks information disclosure and unintended code execution.

Impact

This is a genuine high-priority issue, not an inflated CVSS score. The CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N) describes an unauthenticated, network-reachable flaw with high impact to confidentiality, integrity, and availability (C:H/I:H/A:H), consistent with CWE-98 PHP Local File Inclusion that can escalate to remote code execution. The AC:H rating is the key tempering signal: while the LFI primitive itself is easy to reach (the attacker controls both the 'bps_directory' cookie and the HTTP_REFERER used for the 'page' comparison), turning inclusion into full RCE requires an includable PHP payload already present on disk (an uploadable PHP file, or default images such as wordpress:php8), which raises practical complexity. No EPSS score was provided in the input, so exploitation probability cannot be quantified. The vulnerability is NOT listed in CISA KEV and no public proof-of-concept is referenced, so the correct status is no public exploit identified at time of analysis. Conflicting-signal note: the description characterizes exploitation as unauthenticated and remote (aligning with PR:N/AV:N), but full code execution is contingent on server-side conditions not guaranteed in every deployment - defenders should treat the baseline (arbitrary PHP file inclusion / information disclosure) as always-on and RCE as condition-dependent. Because it was reported by Wordfence (a reputable WordPress security vendor) and affects all versions up to and including 5.9 with a fix in 6.0, patching should be prioritized for any site running this plugin.

Exploit ScenarioDerived

An unauthenticated attacker sends a BuddyPress AJAX directory request to a WordPress site running BP Profile Search, setting a crafted 'bps_directory' cookie whose 'ajax_template' value points at an arbitrary path and spoofing the HTTP Referer to satisfy the page comparison; the plugin appends '.php' and passes it to bp_locate_template() with no whitelist or traversal check, including attacker-chosen PHP. If an includable PHP file exists on the server (via a separate upload vector or default container images like wordpress:php8), this yields remote code execution. No public exploit code is referenced at time of analysis, but the vulnerable code paths are documented in the public plugin source (trac).

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.9% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 14, 2026

Unauthenticated local file inclusion in the BP Profile Search plugin for WordPress (versions up to and including 5.9) lets an attacker force the site to include an arbitrary PHP file by supplying an 'ajax_template' value inside the client-controlled 'bps_directory' cookie during BuddyPress AJAX directory requests. No authentication or special configuration is required, and the plugin performs no basename restriction, whitelist, or path-traversal validation before appending '.php' and passing the value to bp_locate_template(); escalation to full remote code execution is conditional on an includable PHP file already existing on the server (for example via a separate file-upload weakness or default container images such as wordpress:php8), while without such a file the attacker is limited to including existing server-side PHP, which still risks information disclosure and unintended code execution. No public exploit identified at time of analysis, and the issue is not listed in CISA KEV; the assessed vector is CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H (8.1), with the High attack-complexity reflecting the RCE precondition.

RemediationAI

Vendor-released patch: update BP Profile Search to version 6.0 (or later), which is the version carrying the corrected bps-directory.php code; the fix is visible in the plugin's changeset https://plugins.trac.wordpress.org/changeset/3737650 and the updated 6.0 source at https://plugins.trac.wordpress.org/browser/bp-profile-search/tags/6.0/bps-directory.php, with the vendor advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/a35419ff-a342-4480-9288-e98dee5afabc?source=cve. If the upgrade cannot be applied immediately, deactivate the BP Profile Search plugin until it can be patched, since the vulnerable filter only exists in the plugin; if the plugin must stay enabled, a compensating control is to strip or reject requests carrying a 'bps_directory' cookie with an 'ajax_template' value containing path separators, dots, or null bytes, and to drop or rewrite client-supplied HTTP_REFERER values for BuddyPress AJAX endpoints - both approaches carry the trade-off of potentially breaking legitimate plugin directory pagination/template selection. Additionally, reduce the impact of the RCE escalation by ensuring no attacker-uploadable PHP is reachable on the server: enforce that the uploads directory cannot execute PHP, disable any additional upload plugins that permit PHP files, and avoid running the WordPress application from container images such as wordpress:php8 that ship includable PHP files at predictable paths, since the LFI-to-RCE step depends entirely on an includable PHP file already being present.

Affected VersionsENISA

BP Profile Search 0 ≤5.9

Affected Packages

euvd bp_profile_search no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

BP Profile Search is a BuddyPress companion plugin that renders member directories, and its directory handling is implemented in bps-directory.php, where the bps_directory_ajax() filter is hooked onto the BuddyPress template-resolution filters bp_legacy_object_template_path and bp_nouveau_object_template_path. During BuddyPress AJAX directory requests, that filter reads the attacker-controlled 'bps_directory' cookie, extracts the 'ajax_template' value, and passes it through bps_get_directory_data(), which only performs a 'page' comparison derived from bps_current_page() - a function that relies on the HTTP_REFERER header during AJAX and is therefore also attacker-controlled. The template value is then suffixed with '.php' and handed to bp_locate_template() without basename(), whitelist, or path-traversal checks. This is the classic CWE-98 pattern (improper control of filename in a PHP include/require statement, i.e., PHP remote/local file inclusion): the attacker influences a path consumed by an include-like template loader. CPE data identifies the affected package as cpe:2.3:a:dontdream:bp_profile_search:*:*:*:*:*:*:*:*, i.e., the dontdream-maintained plugin across the vulnerable range, with the code path reachable only when BuddyPress is installed and active, since the hooks originate from BuddyPress template resolution.

Know when Bp Profile Search gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Wordfence) PRIMARY 8.1 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.1 HIGH

Unauthenticated and network-reachable (AV:N/PR:N/UI:N); AC:H because reliable RCE depends on an includable PHP payload existing on the server; full C/I/A impact via code execution.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

DescriptionCVE.org

The BP Profile Search plugin for WordPress is vulnerable to Local File Inclusion in versions up to, and including, 5.9 via the 'ajax_template' value parsed from the client-controlled 'bps_directory' cookie during BuddyPress AJAX directory requests. The bps_directory_ajax() filter (hooked onto bp_legacy_object_template_path and bp_nouveau_object_template_path) reads the cookie, applies only a referer-derived 'page' comparison in bps_get_directory_data() (where bps_current_page() uses HTTP_REFERER during AJAX and is therefore also attacker-controlled), and then suffixes the attacker-controlled template value with '.php' and passes it to bp_locate_template() with no basename restriction, no whitelist, and no path-traversal check. This makes it possible for unauthenticated attackers to include arbitrary PHP files on the server, which can lead to remote code execution when PHP files can be uploaded or when images such as the default wordpress:php8.

Executive ViewAI

Why It Matters

The BP Profile Search plugin for WordPress, versions up to and including 5.9, contains a high-severity local file inclusion vulnerability that can expose sensitive server-side files and, in some environments, enable remote code execution. Organizations using this plugin on BuddyPress-enabled WordPress sites should prioritize mitigation because a compromise could affect data confidentiality, site integrity, and availability.

Business Impact: High
Compensating Controls

Disable or remove the BP Profile Search plugin (versions up to and including 5.9) until a vendor patch is released; enforce WAF rules to reject path traversal and arbitrary 'ajax_template' values in the 'bps_directory' cookie on BuddyPress AJAX requests; restrict or monitor BuddyPress AJAX directory endpoints; ensure no writable or includable PHP files exist in web-accessible directories; and monitor for signs of local file inclusion or unexpected PHP execution.

Threat Intelligence Overview

EPSS Score
0.9%
Top 43% exploitable
Prevalence
Low
BuddyPress profile-search add-on, limited to social-network WordPress sites
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.9%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

41
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +40
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Local File Inclusion vulnerabilities occur when an application accepts user-controlled input to specify which file should be loaded or executed, typically through functions like PHP's `include()`, `require()`, or `fopen()`.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy