Severity by source
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Primary rating from NVD · only source for this CVE.
CVSS VectorNVD
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Lifecycle Timeline
2DescriptionCVE.org
The Auto Affiliate Links plugin for WordPress is vulnerable to Stored Cross-Site Scripting in versions up to, and including, 6.8.8 This is due to insufficient input sanitization on the 'url' POST parameter in the aal_url_stats_save_action() function and a complete absence of output escaping in aal_display_clicks(), where the stored value is echoed directly into an anchor element's href attribute and inner text without esc_url(), esc_attr(), or esc_html(). This makes it possible for unauthenticated attackers to inject arbitrary web scripts into the admin statistics page that execute in an administrator's browser when the page is visited, leveraging a publicly exposed nonce and an unauthenticated AJAX endpoint registered via the wp_ajax_nopriv_ hook.
AnalysisAI
Stored Cross-Site Scripting in Auto Affiliate Links for WordPress allows unauthenticated remote attackers to inject malicious JavaScript into administrator statistics pages through an unprotected AJAX endpoint. The vulnerability stems from missing input sanitization on the 'url' parameter in aal_url_stats_save_action() combined with direct output of stored values in aal_display_clicks() without escaping. Attackers can exploit a publicly exposed nonce and the wp_ajax_nopriv_ hook to store malicious payloads that execute when administrators view click statistics, potentially leading to session hijacking, privilege escalation, or site compromise. Wordfence reported this vulnerability affecting versions through 6.8.8, with a patch released in version 6.8.8.1.
Technical ContextAI
This vulnerability exists in the Auto Affiliate Links WordPress plugin (CPE: cpe:2.3:a:thedark:auto_affiliate_links), specifically in the statistics tracking functionality within aal_stats.php. The plugin registers an AJAX handler using wp_ajax_nopriv_, making the aal_url_stats_save_action() function accessible to unauthenticated requests. WordPress AJAX endpoints registered with wp_ajax_nopriv_ intentionally bypass authentication, typically requiring other security controls like nonce validation. However, the vulnerable code fails to apply WordPress security functions (esc_url(), esc_attr(), esc_html()) when storing and displaying URL data. The aal_display_clicks() function at line 304 directly echoes user-controlled data into href attributes and anchor text, creating a classic Stored XSS condition (CWE-79). The CVSS scope change (S:C) indicates the injected script executes in the administrator's session context, crossing the plugin's trust boundary into the WordPress core administrative interface. The publicly exposed nonce mentioned in the description represents a critical authentication bypass, as WordPress nonces are designed to prevent CSRF but become ineffective when publicly accessible.
RemediationAI
Immediately upgrade to Auto Affiliate Links version 6.8.8.1 or later, which implements proper input sanitization and output escaping as confirmed by the patch changeset at https://plugins.trac.wordpress.org/changeset/3519003/wp-auto-affiliate-links/trunk/aal_stats.php and version comparison at https://plugins.trac.wordpress.org/changeset?old_path=%2Fwp-auto-affiliate-links/tags/6.8.8&new_path=%2Fwp-auto-affiliate-links/tags/6.8.8.1. If immediate patching is not possible, implement these compensating controls: disable the plugin until patched (eliminates vulnerability but removes affiliate linking functionality), restrict wp-admin access via IP allowlisting at the web server level (reduces attacker ability to trigger payload execution but does not prevent storage), or implement Web Application Firewall rules to block POST requests to admin-ajax.php containing suspicious JavaScript patterns in the 'url' parameter (may cause false positives with legitimate URLs containing special characters). Note that simply restricting administrative access does not prevent payload injection since the AJAX endpoint is unauthenticated, but it reduces the attack surface for payload execution. Monitor WordPress admin activity logs for unexpected account creations or privilege changes that could indicate successful exploitation.
The isMail transport in PHPMailer before 5.2.20 might allow remote attackers to pass extra parameters to the mail comman
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
The Hash Form - Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing fil
The GiveWP - Donation Plugin and Fundraising Platform plugin for WordPress is vulnerable to PHP Object Injection in all
The Simple File List plugin for WordPress through version 4.2.2 contains an unauthenticated remote code execution vulner
The AI Engine WordPress plugin through version 3.1.3 exposes Bearer Token values through the /mcp/v1/ REST API endpoint
The Ninja Forms plugin before 2.9.42.1 for WordPress allows remote attackers to conduct PHP object injection attacks via
The Business Directory Plugin - Easy Listing Directories for WordPress plugin for WordPress is vulnerable to time-based
SQL injection in the NotificationX WordPress plugin (versions up to and including 2.8.2) allows unauthenticated remote a
The POST SMTP Mailer - Email log, Delivery Failure Notifications and Best Mail SMTP for WordPress plugin for WordPress i
The MasterStudy LMS WordPress Plugin - for Online Courses and Education plugin for WordPress is vulnerable to union base
The Country State City Dropdown CF7 plugin for WordPress is vulnerable to SQL Injection via the ‘cnt’ and 'sid' paramete
Same weakness CWE-79 – Cross-site Scripting (XSS)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-28540
GHSA-v3rv-7vgj-hq3v