CVE-2026-97019: AMP for WP <= 1.1.17 - Unauthenticated Stored Cross-Site Scripting via 'headline-*' Shortcode Attribute
The AMP for WP – Accelerated Mobile Pages plugin for WordPress is vulnerable to Stored Cross-Site Scripting via 'headline-' Shortcode Attribute in all versions up to, and including, 1.1.17 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. A Subscriber-level user can store a malicious shortcode in their biographical info field; because WordPress core's wpfilterkses() only strips HTML tags and not shortcode syntax, and because AMP content sanitizers run before doshortcode() processes the archive description, the synthesized markup is never post-sanitized.
Affected Software
Event History
Frequently Asked Questions
Who can exploit this vulnerability?
An unauthenticated attacker can inject stored script content. The described path also allows a Subscriber-level WordPress user to place a malicious shortcode in their biographical information field.
When does the malicious script execute?
The script executes when a user accesses an injected page. The affected processing path involves archive descriptions where shortcode-generated markup is processed after the AMP content sanitizers have already run.
Are installations running version 1.1.17 affected?
Yes. All AMP for WP versions up to and including 1.1.17 are affected.
Why does normal WordPress filtering not prevent the described attack?
WordPress core's wp_filter_kses() strips HTML tags but does not remove shortcode syntax. The shortcode is later expanded by do_shortcode(), and the resulting markup is not sanitized afterward in the described archive-description flow.