{"id":"CVE-2026-103908","kind":"vulnerability","aliases":["CVE-2026-103908"],"related":[],"title":"WordPress AMP plugin: authenticated users can run arbitrary shortcodes","description":"The The AMP for WP – Accelerated Mobile Pages plugin for WordPress is vulnerable to arbitrary shortcode execution in all versions up to, and including, 1.1.18. This is due to the software allowing users to execute an action that does not properly validate a value before running do_shortcode. This makes it possible for authenticated attackers, with custom-level access and above, to execute arbitrary shortcodes. The vulnerable output block is gated by the 'ampforwp-cat-description' setting, which is enabled by default, meaning the vast majority of installations are affected without any additional configuration change.","summary":"The AMP for WP plugin for WordPress, up to and including version 1.1.18, passes an unvalidated value to do_shortcode. An authenticated user with custom-level access or higher can run arbitrary WordPress shortcodes on the site.","severity":"medium","cvss":5.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["amp-for-wp","package","wordpress","wordpress-plugin"],"not_affected_if":["no-custom-level-users","plugin-not-installed","version-above-1.1.18"],"how_to_check":"- Check the installed version of the AMP for WP plugin in the WordPress admin plugins list, or in the plugin's main file header.\n- Confirm whether the 'ampforwp-cat-description' setting is enabled, since the source says it is on by default.","fix":null,"status":"open","published_at":"2026-11-06T12:17:15+00:00","first_seen_at":"2026-11-06T12:41:48+00:00","triaged_at":"2026-11-06T12:42:53+00:00","updated_at":"2026-11-06T12:42:53+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-06T12:42:53Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"WordPress AMP plugin: authenticated users can run arbitrary shortcodes","impact":"medium","summary":"The AMP for WP plugin for WordPress, up to and including version 1.1.18, passes an unvalidated value to do_shortcode. An authenticated user with custom-level access or higher can run arbitrary WordPress shortcodes on the site.","audience":"businesses","category":"package","nicknames":[],"who_cares":["wordpress","wordpress-plugin","amp-for-wp"],"confidence":0.7,"fix_status":"unknown","needs_auth":"yes","worst_case":"Authenticated user runs arbitrary WordPress shortcodes on the server","analyst_note":"Check the plugin's changelog or the WordPress plugin repository for a fixed version beyond 1.1.18 and confirm the vulnerable setting's default.","how_to_check":"- Check the installed version of the AMP for WP plugin in the WordPress admin plugins list, or in the plugin's main file header.\n- Confirm whether the 'ampforwp-cat-description' setting is enabled, since the source says it is on by default.","plain_action":"","needs_analyst":true,"not_affected_if":["plugin-not-installed","version-above-1.1.18","no-custom-level-users"],"who_is_affected":"Sites running the AMP for WP plugin at version 1.1.18 or earlier, where the 'ampforwp-cat-description' setting is enabled, which the source says is the default. Exposure requires an attacker who already holds a custom-level or higher account, so sites without such accounts carry less risk. Sites that do not run the plugin can skip it.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.00074,"input_tokens":4332,"output_tokens":614,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-103908':12A,15A '-2026':11A,14A '1.1.18':37B,87C 'acceler':68C 'access':52B,122C 'action':99C 'addit':157C 'affect':154C 'allow':94C 'amp':2A,17B,26B,65C 'amp-for-wp':16B 'ampforwp':138C 'ampforwp-cat-descript':137C 'arbitrari':8A,57B,77C,127C 'attack':117C 'authent':4A,46B,116C 'block':132C 'cat':139C 'chang':159C 'configur':158C 'custom':50B,120C 'custom-level':49B,119C 'cve':10A,13A 'default':146C 'descript':140C 'due':90C 'enabl':144C 'execut':79C,97C,126C 'gate':134C 'higher':54B 'includ':35B,86C 'instal':152C 'level':51B,121C 'major':150C 'make':112C 'mean':147C 'mobil':69C 'output':131C 'packag':20B 'page':70C 'pass':38B 'plugin':3A,24B,29B,71C 'possibl':114C 'proper':103C 'run':7A,56B,108C 'set':141C 'shortcod':9A,44B,59B,78C,110C,128C 'site':62B 'softwar':93C 'unvalid':40B 'user':5A,47B,95C 'valid':104C 'valu':41B,106C 'vast':149C 'version':36B,82C 'vulner':75C,130C 'without':155C 'wordpress':1A,21B,23B,31B,58B,73C 'wordpress-plugin':22B 'wp':19B,28B,67C","nicknames":[],"mitigations":[],"who_affected":"Sites running the AMP for WP plugin at version 1.1.18 or earlier, where the 'ampforwp-cat-description' setting is enabled, which the source says is the default. Exposure requires an attacker who already holds a custom-level or higher account, so sites without such accounts carry less risk. Sites that do not run the plugin can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["ampforwp","medium","package","wordpress","wordpressplugin"],"campaign_type":null,"search_a":"'-103908':12A,15A '-2026':11A,14A 'amp':2A 'arbitrari':8A 'authent':4A 'cve':10A,13A 'plugin':3A 'run':7A 'shortcod':9A 'user':5A 'wordpress':1A","search_b":"'1.1.18':37B 'access':52B 'amp':17B,26B 'amp-for-wp':16B 'arbitrari':57B 'authent':46B 'custom':50B 'custom-level':49B 'higher':54B 'includ':35B 'level':51B 'packag':20B 'pass':38B 'plugin':24B,29B 'run':56B 'shortcod':44B,59B 'site':62B 'unvalid':40B 'user':47B 'valu':41B 'version':36B 'wordpress':21B,23B,31B,58B 'wordpress-plugin':22B 'wp':19B,28B","search_c":"'1.1.18':87C 'acceler':68C 'access':122C 'action':99C 'addit':157C 'affect':154C 'allow':94C 'amp':65C 'ampforwp':138C 'ampforwp-cat-descript':137C 'arbitrari':77C,127C 'attack':117C 'authent':116C 'block':132C 'cat':139C 'chang':159C 'configur':158C 'custom':120C 'custom-level':119C 'default':146C 'descript':140C 'due':90C 'enabl':144C 'execut':79C,97C,126C 'gate':134C 'includ':86C 'instal':152C 'level':121C 'major':150C 'make':112C 'mean':147C 'mobil':69C 'output':131C 'page':70C 'plugin':71C 'possibl':114C 'proper':103C 'run':108C 'set':141C 'shortcod':78C,110C,128C 'softwar':93C 'user':95C 'valid':104C 'valu':106C 'vast':149C 'version':82C 'vulner':75C,130C 'without':155C 'wordpress':73C 'wp':67C","first_public_at":"2026-11-06T12:17:15+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N","cvss_by":"security@wordfence.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-103908","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-103908","severity":null,"published_at":"2026-11-06T12:17:15+00:00","modified_at":"2026-11-06T12:17:15+00:00","first_seen_at":"2026-11-06T12:41:48+00:00","fetched_at":"2026-11-06T12:41:48+00:00","note":null}],"documents":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}