{"id":"CVE-2026-109386","kind":"vulnerability","aliases":["CVE-2026-109386"],"related":[],"title":"Hustle WordPress plugin lets authenticated users overwrite email integration keys","description":"The Hustle – Email Marketing, Lead Generation, Optins, Popups plugin for WordPress is vulnerable to authorization bypass in all versions up to, and including, 7.8.14.3. This is due to the plugin not properly verifying that a user is authorized to perform an action. This makes it possible for authenticated attackers, with custom-level access and above, to overwrite the site's active ESP integration credentials (AWeber, Constant Contact, Infusionsoft, ConvertKit, or HubSpot API keys) with attacker-controlled values — diverting all subsequent Hustle form lead submissions to the attacker's ESP tenant — and, for HubSpot, irreversibly delete the operator's OAuth token, OAuth referer, and OAuth current-page option rows. This requires the attacker to hold the plugin-granted hustle_create capability (e.g., an Editor delegated hustle_create but not hustle_edit_integrations via Hustle's Permissions tab), which allows them to load a Hustle module wizard page and obtain the hustle_provider_action nonce needed to reach the vulnerable handlers.","summary":"The Hustle WordPress plugin up to and including 7.8.14.3 fails to check permissions when saving email service provider credentials. A logged-in user with the hustle_create capability can replace the site's AWeber, Constant Contact, Infusionsoft, ConvertKit or HubSpot API keys, sending form leads to the attacker's account.","severity":"medium","cvss":4.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["email-marketing","hustle","package","wordpress"],"not_affected_if":["admin-only-users","hustle-not-installed","no-delegated-hustle-create"],"how_to_check":"- Check the installed Hustle plugin version in the WordPress admin plugins list or `wp plugin get hustle --field=version`\n- Review Hustle > Permissions to see whether any role has been delegated hustle_create","fix":"- Hustle plugin: unknown (the sources do not state a fixed version)","status":"open","published_at":"2026-10-31T07:16:34+00:00","first_seen_at":"2026-10-31T07:34:06+00:00","triaged_at":"2026-10-31T07:34:52+00:00","updated_at":"2026-10-31T07:34:52+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-31T07:34:52Z","model":"claude-haiku-5-5","output":{"fix":"- Hustle plugin: unknown (the sources do not state a fixed version)","reach":"internet","title":"Hustle WordPress plugin lets authenticated users overwrite email integration keys","impact":"medium","summary":"The Hustle WordPress plugin up to and including 7.8.14.3 fails to check permissions when saving email service provider credentials. A logged-in user with the hustle_create capability can replace the site's AWeber, Constant Contact, Infusionsoft, ConvertKit or HubSpot API keys, sending form leads to the attacker's account.","audience":"businesses","category":"package","nicknames":[],"who_cares":["wordpress","hustle","email-marketing"],"confidence":0.7,"fix_status":"unknown","needs_auth":"yes","worst_case":"attacker redirects lead data and deletes HubSpot OAuth tokens","analyst_note":"Confirm the fixed Hustle version and whether the HubSpot token deletion is recoverable; check the NVD entry linked in the sources.","how_to_check":"- Check the installed Hustle plugin version in the WordPress admin plugins list or `wp plugin get hustle --field=version`\n- Review Hustle > Permissions to see whether any role has been delegated hustle_create","plain_action":"","needs_analyst":true,"not_affected_if":["hustle-not-installed","no-delegated-hustle-create","admin-only-users"],"who_is_affected":"Sites running the Hustle plugin at version 7.8.14.3 or earlier that also have non-administrator users with the hustle_create capability, such as Editors given that capability through Hustle's Permissions tab. Sites where only administrators can log in, or where hustle_create is not delegated, are much less exposed. Sites that do not use Hustle can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000766,"input_tokens":4406,"output_tokens":650,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-109386':13A,16A '-2026':12A,15A '7.8.14.3':31B,97C 'access':127C 'account':73B 'action':115C,229C 'activ':135C 'allow':215C 'api':64B,146C 'attack':71B,122C,150C,162C,188C 'attacker-control':149C 'authent':5A,121C 'author':88C,111C 'aweb':57B,139C 'bypass':89C 'capabl':51B,197C 'check':34B 'constant':58B,140C 'contact':59B,141C 'control':151C 'convertkit':61B,143C 'creat':50B,196C,203C 'credenti':41B,138C 'current':181C 'current-pag':180C 'custom':125C 'custom-level':124C 'cve':11A,14A 'deleg':201C 'delet':170C 'divert':153C 'due':100C 'e.g':198C 'edit':207C 'editor':200C 'email':8A,18B,38B,76C 'email-market':17B 'esp':136C,164C 'fail':32B 'form':67B,157C 'generat':79C 'grant':194C 'handler':236C 'hold':190C 'hubspot':63B,145C,168C 'hustl':1A,20B,24B,49B,75C,156C,195C,202C,206C,210C,220C,227C 'includ':30B,96C 'infusionsoft':60B,142C 'integr':9A,137C,208C 'irrevers':169C 'key':10A,65B,147C 'lead':68B,78C,158C 'let':4A 'level':126C 'load':218C 'log':44B 'logged-in':43B 'make':117C 'market':19B,77C 'modul':221C 'need':231C 'nonc':230C 'oauth':174C,176C,179C 'obtain':225C 'oper':172C 'optin':80C 'option':183C 'overwrit':7A,131C 'packag':21B 'page':182C,223C 'perform':113C 'permiss':35B,212C 'plugin':3A,26B,82C,103C,193C 'plugin-gr':192C 'popup':81C 'possibl':119C 'proper':105C 'provid':40B,228C 'reach':233C 'refer':177C 'replac':53B 'requir':186C 'row':184C 'save':37B 'send':66B 'servic':39B 'site':55B,133C 'submiss':159C 'subsequ':155C 'tab':213C 'tenant':165C 'token':175C 'user':6A,46B,109C 'valu':152C 'verifi':106C 'version':92C 'via':209C 'vulner':86C,235C 'wizard':222C 'wordpress':2A,22B,25B,84C","nicknames":[],"mitigations":[],"who_affected":"Sites running the Hustle plugin at version 7.8.14.3 or earlier that also have non-administrator users with the hustle_create capability, such as Editors given that capability through Hustle's Permissions tab. Sites where only administrators can log in, or where hustle_create is not delegated, are much less exposed. Sites that do not use Hustle can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"businesses","plain_action":null,"first_public_at":"2026-10-31T07:16:34+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","cvss_by":"security@wordfence.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-109386","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-109386","severity":null,"published_at":"2026-10-31T07:16:34+00:00","modified_at":"2026-10-31T07:16:34+00:00","first_seen_at":"2026-10-31T07:34:06+00:00","fetched_at":"2026-10-31T07:34:06+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"}