CVE-2025-12961

4.3 MEDIUM

📋 TL;DR

The Download Panel WordPress plugin has a missing capability check that allows authenticated users with Subscriber-level access or higher to modify plugin settings without authorization. This vulnerability affects all versions up to 1.3.3 and enables attackers to change display text, download links, button colors, and other visual customizations.

💻 Affected Systems

Products:
  • Download Panel WordPress Plugin
Versions: All versions up to and including 1.3.3
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress installation with the vulnerable plugin enabled and at least one authenticated user account.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could modify download links to redirect users to malicious sites, change display text to spread misinformation, or alter the plugin's appearance to facilitate phishing attacks.

🟠

Likely Case

Attackers will modify settings to redirect legitimate downloads to malicious files or change visual elements to mislead users, potentially leading to malware distribution or credential theft.

🟢

If Mitigated

With proper access controls and monitoring, impact is limited to visual changes that can be quickly reverted, though some user confusion may occur.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires authenticated access but is straightforward via AJAX requests to the vulnerable endpoint.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.3.4 or later

Vendor Advisory: https://plugins.trac.wordpress.org/changeset?old_path=/download-panel/tags/1.3.3&old=321000&new_path=/download-panel/tags/1.3.4&new=321001

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins → Installed Plugins. 3. Find Download Panel plugin. 4. Click 'Update Now' if update available. 5. If no update appears, manually download version 1.3.4+ from WordPress.org and replace plugin files.

🔧 Temporary Workarounds

Disable vulnerable AJAX endpoint

all

Remove or restrict access to the vulnerable wp_ajax_save_settings action

Add to theme's functions.php or custom plugin: remove_action('wp_ajax_save_settings', 'dlpn_save_settings');

Restrict user capabilities

all

Temporarily limit Subscriber and Contributor role capabilities

Use WordPress role editor plugin to remove edit_plugins capability from lower-level roles

🧯 If You Can't Patch

  • Disable the Download Panel plugin entirely until patched
  • Implement web application firewall rules to block requests to /wp-admin/admin-ajax.php with action=save_settings

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin → Plugins → Installed Plugins for Download Panel version. If version is 1.3.3 or lower, system is vulnerable.

Check Version:

wp plugin list --name=download-panel --field=version (if WP-CLI installed)

Verify Fix Applied:

After updating, verify plugin version shows 1.3.4 or higher in WordPress admin panel.

📡 Detection & Monitoring

Log Indicators:

  • Multiple POST requests to /wp-admin/admin-ajax.php with action=save_settings from non-admin users
  • Unusual plugin setting changes in WordPress database

Network Indicators:

  • AJAX requests to save_settings endpoint from IPs not associated with administrators

SIEM Query:

source="wordpress.log" AND "admin-ajax.php" AND "action=save_settings" AND user_role!="administrator"

🔗 References

📤 Share & Export