{"id":"CVE-2026-109224","kind":"vulnerability","aliases":["CVE-2026-109224"],"related":[],"title":"SureCart WordPress plugin: unauthenticated stored XSS through comment parameter","description":"The SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'comment' parameter in all versions up to, and including, 4.9.4 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. Successful execution requires the affected comment to appear on a post that loads the surecart-components runtime (e.g. via a [sc_buy_button] shortcode) and contains no sc-checkout element, as these conditions trigger the innerHTML sink in sc-cart-loader.","summary":"The SureCart WordPress ecommerce plugin up to and including 4.9.4 fails to sanitize the comment parameter, so an unauthenticated attacker can store a script that runs in visitors' browsers. The script runs on pages that load the surecart-components runtime, such as those with a buy button shortcode, and that contain no checkout element.","severity":"high","cvss":7.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","self-hosted","surecart","wordpress"],"not_affected_if":["comments-disabled","no-buy-button-shortcode","plugin-updated"],"how_to_check":"- Check the installed SureCart version in the WordPress plugins screen or the plugin header in `wp-content/plugins/surecart/surecart.php`; versions `4.9.4` and older are affected\n- Look for pages or posts using `[sc_buy_button]` that have no SureCart checkout element and accept public comments","fix":"- Update the SureCart plugin to a version newer than `4.9.4`; the exact fixed version is unknown from the sources\n- Until updated, disable comments on pages that use `[sc_buy_button]`, or moderate comments before they are published","status":"open","published_at":"2026-10-16T09:17:04+00:00","first_seen_at":"2026-10-23T21:57:12+00:00","triaged_at":"2026-10-25T03:29:36+00:00","updated_at":"2026-10-25T03:29:36+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T03:29:36Z","model":"claude-haiku-5-5","output":{"fix":"- Update the SureCart plugin to a version newer than `4.9.4`; the exact fixed version is unknown from the sources\n- Until updated, disable comments on pages that use `[sc_buy_button]`, or moderate comments before they are published","reach":"internet","title":"SureCart WordPress plugin: unauthenticated stored XSS through comment parameter","impact":"medium","summary":"The SureCart WordPress ecommerce plugin up to and including 4.9.4 fails to sanitize the comment parameter, so an unauthenticated attacker can store a script that runs in visitors' browsers. The script runs on pages that load the surecart-components runtime, such as those with a buy button shortcode, and that contain no checkout element.","category":"package","nicknames":[],"who_cares":["wordpress","surecart","self-hosted"],"confidence":0.7,"needs_auth":"no","worst_case":"Attacker script runs in visitors' browsers on the affected site.","analyst_note":"Confirm the fixed SureCart version from the NVD entry or the plugin changelog at https://nvd.nist.gov/vuln/detail/CVE-2026-109224.","how_to_check":"- Check the installed SureCart version in the WordPress plugins screen or the plugin header in `wp-content/plugins/surecart/surecart.php`; versions `4.9.4` and older are affected\n- Look for pages or posts using `[sc_buy_button]` that have no SureCart checkout element and accept public comments","needs_analyst":true,"not_affected_if":["plugin-updated","comments-disabled","no-buy-button-shortcode"],"who_is_affected":"Sites running the SureCart plugin at version 4.9.4 or older where visitors can post comments that are rendered on pages loading the surecart-components runtime. The exposure needs a buy button shortcode on a page with no checkout element and a comment that reaches it. Sites without SureCart, or with the plugin updated, can skip it.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000702,"input_tokens":3486,"output_tokens":707,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-109224':12A,15A '-2026':11A,14A '4.9.4':31B,113C 'access':142C 'affect':150C 'appear':153C 'arbitrari':131C 'attack':41B,128C 'browser':50B 'button':69B,169C 'buy':68B,168C 'cart':188C 'checkout':75B,176C 'comment':8A,36B,104C,151C 'compon':61B,162C 'condit':180C 'contain':73B,172C 'cross':99C 'cross-sit':98C 'cve':10A,13A 'digit':86C 'donat':89C 'download':87C 'due':114C 'e.g':164C 'easi':81C 'ecommerc':25B,79C 'element':76B,177C 'escap':121C 'execut':138C,147C 'fail':32B 'host':19B 'includ':30B,112C 'inject':130C,144C 'innerhtml':183C 'input':117C 'insuffici':116C 'load':57B,158C 'loader':189C 'made':80C 'make':123C 'output':120C 'packag':16B 'page':55B,135C,145C 'paramet':9A,37B,105C 'payment':90C 'physic':84C 'plugin':3A,26B,91C 'possibl':125C 'post':156C 'product':85C 'requir':148C 'run':47B,53B 'runtim':62B,163C 'sanit':34B,118C 'sc':167C,175C,187C 'sc-cart-load':186C 'sc-checkout':174C 'script':45B,52B,101C,133C 'self':18B 'self-host':17B 'sell':83C 'shortcod':70B,170C 'sink':184C 'site':100C 'store':5A,43B,97C 'subscript':88C 'success':146C 'surecart':1A,20B,23B,60B,78C,161C 'surecart-compon':59B,160C 'trigger':181C 'unauthent':4A,40B,127C 'user':141C 'version':108C 'via':102C,165C 'visitor':49B 'vulner':95C 'web':132C 'whenev':139C 'wordpress':2A,21B,24B,93C 'xss':6A","nicknames":[],"mitigations":[],"who_affected":"Sites running the SureCart plugin at version 4.9.4 or older where visitors can post comments that are rendered on pages loading the surecart-components runtime. The exposure needs a buy button shortcode on a page with no checkout element and a comment that reaches it. Sites without SureCart, or with the plugin updated, can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-16T09:17:04+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N","cvss_by":"security@wordfence.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-109224","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-109224","severity":null,"published_at":"2026-10-16T09:17:04+00:00","modified_at":"2026-10-16T15:17:06+00:00","first_seen_at":"2026-10-23T21:57:12+00:00","fetched_at":"2026-10-23T22:28:55+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}