Demi restore secrets permit unauthenticated arbitrary directory copying
Demi through 0.0.8 writes .restore_key and .restore_step_token beneath the publicly accessible wp-content/uploads/demi-backup-state directory while a restore is active. An unauthenticated attacker who retrieves those secrets can call the demi_restore_step AJAX action, forge the signed restore-state envelope processed by handle_restore_step, and make the RestoreFiles task copy caller-selected filesystem content to a caller-selected destination. The primitive depends on an active restore having created the exposed secret files.
- Component
- Demi – One Click Demo Import, Backup & Site Migration
- Plugin slug
demi-backup-migration- Affected
- <= 0.0.8
- Safe version
> 0.0.8- Published
- Jul 28, 2026
This CVE was published Jul 28, 2026 and is one of 2 known issues for this plugin.
Update, patch or deactivate.
Update Demi to a release newer than 0.0.8. The CNA record identifies the affected boundary but does not name a fixed tag. If a restore occurred on a vulnerable release, remove exposed restore-state files, inspect the filesystem for unexpected copies, and review requests to the demi_restore_step action.
A safe version is available, so updating to that version or later is the preferred remediation. If an immediate update is not practical, consider a targeted application patch or temporarily restricting the affected functionality.
Deactivate only when warranted by your risk profile, or when advised by your hosting provider in the limited circumstances where the vulnerability cannot otherwise be mitigated. If you’re unsure which action is appropriate, contact Fused or your hosting provider for guidance.
Technical description
The Demi – One Click Demo Import, WP Backup & Site Migration plugin for WordPress is vulnerable to Arbitrary Directory Copy in all versions up to, and including, 0.0.8 via the handle_restore_step function. This is due to missing HTTP access controls on the wp-content/uploads/demi-backup-state/ directory, which exposes the cryptographic restore key used to both authenticate the unauthenticated AJAX handler and forge signed restore-state envelopes. This makes it possible for unauthenticated attackers to copy arbitrary files to attacker-controlled destinations on the server. An active restore operation must have been initiated, which writes the .restore_key and .restore_step_token files to the public upload directory, before the exposed secrets can be harvested and chained to achieve unauthenticated arbitrary file copy.
CVE / CNA vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Primary and upstream sources
- NVD record for CVE-2026-15012
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- WordPress upstream reference plugins.trac.wordpress.org
- Wordfence advisory wordfence.com