BackupBliss – Backup & Migration with Free Cloud Storage <= 2.1.1 - Unauthenticated Information Exposure
Description
The BackupBliss – Backup & Migration with Free Cloud Storage plugin for WordPress is vulnerable to Sensitive Information Exposure in all versions up to, and including, 2.1.1. This makes it possible for unauthenticated attackers to extract sensitive user or configuration data.
CVSS Vector Breakdown
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:NTechnical Details
<=2.1.1What Changed in the Fix
Changes introduced in v2.1.2
Source Code
WordPress.org SVN# Research Plan: CVE-2026-39480 - BackupBliss Information Exposure ## 1. Vulnerability Summary The **BackupBliss – Backup & Migration with Free Cloud Storage** plugin (versions <= 2.1.1) is vulnerable to **Unauthenticated Information Exposure** through its integrated "Analyst" tracking library. The…
Show full research plan
Research Plan: CVE-2026-39480 - BackupBliss Information Exposure
1. Vulnerability Summary
The BackupBliss – Backup & Migration with Free Cloud Storage plugin (versions <= 2.1.1) is vulnerable to Unauthenticated Information Exposure through its integrated "Analyst" tracking library. The library registers several AJAX actions intended for tracking and opt-in management. Specifically, the analyst_install_verified action (and potentially others) is registered without proper authentication or nonce checks in its handler, onInstallVerifiedListener. This allows unauthenticated attackers to trigger the action and receive a response containing sensitive configuration data, including the clientSecret and tracking identifiers stored in the analyst_accounts_data WordPress option.
2. Attack Vector Analysis
- Endpoint:
/wp-admin/admin-ajax.php - Action:
analyst_install_verifiedoranalyst_install_verified_backup-backup(inferred fromcustomize.js). - HTTP Method:
POST - Authentication: None (Unauthenticated).
- Parameters:
action: (Required) The AJAX action registered inAccount.php.plugin_id: (Likely) Used as a suffix or parameter to identify the specific plugin instance.
- Preconditions: The plugin must be active. The "Analyst" tracking component must have been initialized (usually happens on plugin activation).
Summary
The BackupBliss plugin for WordPress is vulnerable to sensitive information exposure via its integrated 'Analyst' tracking library. Unauthenticated attackers can trigger the analyst_install_verified AJAX action, which lacks proper authentication and nonce checks, to extract configuration data including the clientSecret and tracking identifiers.
Vulnerable Code
// analyst/src/Account/Account.php:255 public function registerHooks() { register_activation_hook($this->basePluginPath, [&$this, 'onActivePluginListener']); register_uninstall_hook($this->basePluginPath, ['Account\Account', 'onUninstallPluginListener']); $this->addFilter('plugin_action_links', [&$this, 'onRenderActionLinksHook']); $this->addAjax('analyst_opt_in', [&$this, 'onOptInListener']); $this->addAjax('analyst_opt_out', [&$this, 'onOptOutListener']); $this->addAjax('analyst_plugin_deactivate', [&$this, 'onDeactivatePluginListener']); $this->addAjax('analyst_install', [&$this, 'onInstallListener']); $this->addAjax('analyst_skip_install', [&$this, 'onSkipInstallListener']); $this->addAjax('analyst_install_verified', [&$this, 'onInstallVerifiedListener']); }
Security Fix
@@ -390,6 +390,8 @@ public function onInstallVerifiedListener() { + $this->verifyNonceAndPerms(); + $id = $this->id; if (isset($_POST['plugin_id'])) { $id = sanitize_text_field($_POST['plugin_id']);
Exploit Outline
1. Identify a target site running BackupBliss (backup-backup) version <= 2.1.1. 2. Determine the internal Analyst plugin ID (typically 'backup-backup'). 3. Send an unauthenticated POST request to `/wp-admin/admin-ajax.php` with the parameter `action=analyst_install_verified_backup-backup` (or `analyst_install_verified` with `plugin_id=backup-backup`). 4. The server will process the request without checking for a valid session or nonce. 5. Capture the JSON response, which contains sensitive account details such as the `clientSecret` and internal tracking IDs stored in the `analyst_accounts_data` option.
Check if your site is affected.
Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.