{"id":"CVE-2026-118169","kind":"vulnerability","aliases":["CVE-2026-118169"],"related":[],"title":"Hustle WordPress plugin: stored XSS via CTA label parameter","description":"The Hustle – Email Marketing, Lead Generation, Optins, Popups plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'content[cta_label]' parameter in all versions up to, and including, 7.8.14.3 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with custom-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. By default only Administrators hold the hustle_edit_module capability, but the plugin's built-in Permissions screen allows administrators to delegate this capability to lower roles including Subscriber, enabling Subscriber-level exploitation on sites where that delegation has been configured.","summary":"The Hustle email marketing and popup plugin for WordPress does not sanitize the content[cta_label] parameter, so a logged-in user with the right capability can store a script. The script runs in the browser of any visitor who opens the page where the injected content appears.","severity":"medium","cvss":4.9,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","self-hosted","wordpress","wordpress-plugins"],"not_affected_if":["auth-required","default-config"],"how_to_check":"- Check the installed Hustle plugin version in the WordPress admin Plugins screen, or with `wp plugin get hustle --field=version`\n- Review the Hustle Permissions screen to see whether `hustle_edit_module` was granted to roles below Administrator","fix":"- Update the Hustle plugin to a version later than `7.8.14.3`\n- Remove the `hustle_edit_module` capability from lower roles such as Subscriber until the update is applied","status":"open","published_at":"2026-10-28T07:16:48+00:00","first_seen_at":"2026-10-28T07:31:38+00:00","triaged_at":"2026-10-28T07:33:23+00:00","updated_at":"2026-10-28T07:33:23+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-28T07:33:23Z","model":"claude-haiku-5-5","output":{"fix":"- Update the Hustle plugin to a version later than `7.8.14.3`\n- Remove the `hustle_edit_module` capability from lower roles such as Subscriber until the update is applied","reach":"internet","title":"Hustle WordPress plugin: stored XSS via CTA label parameter","impact":"medium","summary":"The Hustle email marketing and popup plugin for WordPress does not sanitize the content[cta_label] parameter, so a logged-in user with the right capability can store a script. The script runs in the browser of any visitor who opens the page where the injected content appears.","category":"package","nicknames":[],"who_cares":["wordpress","wordpress-plugins","self-hosted"],"confidence":0.8,"needs_auth":"yes","worst_case":"Scripts run in visitors' browsers, enabling session theft or actions as admins.","analyst_note":"Confirm the first patched Hustle version from the NVD or plugin changelog, since the sources give only the affected upper bound.","how_to_check":"- Check the installed Hustle plugin version in the WordPress admin Plugins screen, or with `wp plugin get hustle --field=version`\n- Review the Hustle Permissions screen to see whether `hustle_edit_module` was granted to roles below Administrator","needs_analyst":true,"not_affected_if":["default-config","auth-required"],"who_is_affected":"Sites running Hustle `7.8.14.3` or earlier are affected. Exploitation by a low-privilege user requires the administrator to have delegated `hustle_edit_module` to that role; by default only Administrators can use it. Sites that run a current Hustle release or that restrict that capability to Administrators have less exposure.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000655,"input_tokens":3475,"output_tokens":615,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-118169':12A,15A '-2026':11A,14A '7.8.14.3':105C 'access':125C,141C 'administr':148C,165C 'allow':164C 'appear':72B 'arbitrari':130C 'attack':120C 'authent':119C 'browser':60B 'built':160C 'built-in':159C 'capabl':50B,154C,169C 'configur':187C 'content':37B,71B,94C 'cross':89C 'cross-sit':88C 'cta':7A,38B,95C 'custom':123C 'custom-level':122C 'cve':10A,13A 'default':146C 'deleg':167C,184C 'due':106C 'edit':152C 'email':26B,75C 'enabl':175C 'escap':113C 'execut':137C 'exploit':179C 'generat':78C 'hold':149C 'host':19B 'hustl':1A,25B,74C,151C 'includ':104C,173C 'inject':70B,129C,143C 'input':109C 'insuffici':108C 'label':8A,39B,96C 'lead':77C 'level':124C,178C 'log':44B 'logged-in':43B 'lower':171C 'make':115C 'market':27B,76C 'modul':153C 'open':65B 'optin':79C 'output':112C 'packag':16B 'page':67B,134C,144C 'paramet':9A,40B,97C 'permiss':162C 'plugin':3A,23B,30B,81C,157C 'popup':29B,80C 'possibl':117C 'right':49B 'role':172C 'run':57B 'sanit':35B,110C 'screen':163C 'script':54B,56B,91C,132C 'self':18B 'self-host':17B 'site':90C,181C 'store':4A,52B,87C 'subscrib':174C,177C 'subscriber-level':176C 'user':46B,140C 'version':100C 'via':6A,92C 'visitor':63B 'vulner':85C 'web':131C 'whenev':138C 'wordpress':2A,20B,22B,32B,83C 'wordpress-plugin':21B 'xss':5A","nicknames":[],"mitigations":[],"who_affected":"Sites running Hustle `7.8.14.3` or earlier are affected. Exploitation by a low-privilege user requires the administrator to have delegated `hustle_edit_module` to that role; by default only Administrators can use it. Sites that run a current Hustle release or that restrict that capability to Administrators have less exposure.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-28T07:16:48+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:H/PR:L/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-118169","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-118169","severity":null,"published_at":"2026-10-28T07:16:48+00:00","modified_at":"2026-10-28T07:16:48+00:00","first_seen_at":"2026-10-28T07:31:38+00:00","fetched_at":"2026-10-28T07:31:38+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"}