Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
Stolen OAuth token grants full read/write on the external HubSpot tenant (S:C), raising confidentiality and integrity impact beyond the WordPress installation alone.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
Lifecycle Timeline
2DescriptionCVE.org
The HubSpot All-In-One Marketing - Forms, Popups, Live Chat plugin for WordPress is vulnerable to Sensitive Information Exposure in all versions up to, and including, 11.3.62 via the wp_localize_script() / window.leadinConfig JavaScript object. This makes it possible for authenticated attackers, with contributor-level access and above, to extract the site's plaintext HubSpot OAuth refresh token exposed via the window.leadinConfig JavaScript object, which can then be used to access or modify data in the connected HubSpot tenant. Although the refresh token is stored at rest with AES-256-CTR encryption, decryption occurs server-side before the plaintext value is passed to wp_localize_script(), rendering the at-rest encryption ineffective against this exposure path.
AnalysisAI
OAuth refresh token theft in HubSpot All-In-One Marketing - Forms, Popups, Live Chat (WordPress plugin 'leadin') exposes connected HubSpot tenants to unauthorized access. Authenticated WordPress users at contributor level or above can extract a plaintext HubSpot OAuth refresh token directly from the client-side window.leadinConfig JavaScript object, which is populated server-side via wp_localize_script() after the plugin decrypts the at-rest AES-256-CTR-encrypted token - rendering the encryption entirely ineffective against this attack path. A stolen token can be replayed against the HubSpot OAuth API to access or modify CRM contacts, marketing campaigns, and other tenant data in the connected HubSpot account. No public exploit has been identified at time of analysis, and this CVE is not listed in CISA KEV.
Technical ContextAI
The affected software is the WordPress plugin 'leadin' by hubspotdev, identified via CPE cpe:2.3:a:hubspotdev:hubspot_all-in-one_marketing_-_forms,_popups,_live_chat:*:*:*:*:*:*:*:*. The root cause is CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor), arising from WordPress's wp_localize_script() mechanism, which serializes PHP server-side data into a globally accessible JavaScript object (window.leadinConfig) rendered inline on page load. The plugin stores the HubSpot OAuth refresh token in the WordPress database encrypted with AES-256-CTR; however, decryption occurs in PHP before the plaintext value is passed to wp_localize_script(), making the encryption protection irrelevant to this exposure path. Affected code paths are visible in plugin source files class-adminconstants.php (line 190), class-oauth.php (line 46), class-gutenberg.php (line 44), and class-assetsmanager.php (line 150) at plugin version 11.3.45, establishing the long-standing nature of this pattern. The OAuth refresh token, once obtained, allows persistent programmatic access to the connected HubSpot tenant independent of WordPress.
RemediationAI
Update the HubSpot All-In-One Marketing - Forms, Popups, Live Chat plugin to version 11.3.64 or later, the patched version indicated by the plugin repository changeset (https://plugins.trac.wordpress.org/changeset?old_path=%2Fleadin/tags/11.3.62&new_path=%2Fleadin/tags/11.3.64). After applying the patch, administrators should immediately rotate the HubSpot OAuth refresh token via the HubSpot developer portal to invalidate any tokens that may have already been exposed - failure to rotate leaves previously stolen tokens viable even after patching. As an interim compensating control prior to patching, restrict contributor-level and above WordPress roles to the smallest possible set of trusted users; note this has operational impact on editorial workflows. Temporarily deactivating the plugin eliminates the exposure surface entirely but also disables all HubSpot form, popup, and live chat functionality. Generic network-layer controls (WAF, IP allowlisting) cannot mitigate this vulnerability, as the token is exposed to any authenticated browser session, not a specific malformed request.
More in Wordpress Plugin
View allThe Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
The Hash Form - Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing fil
Authentication bypass in the LiteSpeed Cache WordPress plugin (versions prior to 6.5.0.1) allows unauthenticated remote
The Simple File List plugin for WordPress through version 4.2.2 contains an unauthenticated remote code execution vulner
The SureTriggers WordPress plugin through version 1.0.82 contains a privilege escalation vulnerability that allows unaut
The Ninja Forms plugin before 2.9.42.1 for WordPress allows remote attackers to conduct PHP object injection attacks via
The Business Directory Plugin - Easy Listing Directories for WordPress plugin for WordPress is vulnerable to time-based
SQL injection in the NotificationX WordPress plugin (versions up to and including 2.8.2) allows unauthenticated remote a
The POST SMTP Mailer - Email log, Delivery Failure Notifications and Best Mail SMTP for WordPress plugin for WordPress i
The MasterStudy LMS WordPress Plugin - for Online Courses and Education plugin for WordPress is vulnerable to union base
The Email Subscribers by Icegram Express plugin for WordPress is vulnerable to SQL Injection via the ‘hash’ parameter in
Remote code execution in the WP Query Console WordPress plugin (versions up to and including 1.0) by Ajit Bohra allows u
Same weakness CWE-200 – Information Exposure
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-45152
GHSA-3rq5-wph4-p3mg