---
id: "CVE-2026-97019"
kind: "vulnerability"
aliases: ["CVE-2026-97019"]
title: "AMP for WP plugin: stored XSS via headline shortcode attribute"
severity: "high"
cvss: 7.2
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["package", "self-hosted", "wordpress", "wordpress-plugins"]
not_affected_if: ["plugin-not-installed", "plugin-updated"]
published_at: "2026-10-28T03:17:16+00:00"
first_seen_at: "2026-10-28T03:31:02+00:00"
updated_at: "2026-10-28T03:32:31+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-97019", "first_seen_at": "2026-10-28T03:31:02+00:00"}]
---

# AMP for WP plugin: stored XSS via headline shortcode attribute

The AMP for WP plugin for WordPress up to and including 1.1.17 fails to sanitize the 'headline-*' shortcode attribute, so injected script is stored and runs in the browser of anyone who opens the affected page. A Subscriber-level user can plant the payload through their biographical info field, and the description says unauthenticated attackers can inject it as well.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed plugin version in the WordPress admin Plugins list or with `wp plugin get amp --field=version` and see whether it is `1.1.17` or older.
- Search post and page content for `[headline` shortcode usage and review the attribute values.
- unknown for further checks in the sources.

## Fix

- Update the AMP for WP plugin to a version newer than `1.1.17` (the sources do not name the fixed release).
- Until patched, disable the plugin or remove unneeded `headline-*` shortcodes from content.

## Timeline

- 2026-10-28T03:31:02+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-97019

## From the sources

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 wp_filter_kses() only strips HTML tags and not shortcode syntax, and because AMP content sanitizers run before do_shortcode() processes the archive description, the synthesized markup is never post-sanitized.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
