CVE-2025-39547

7.1 HIGH

📋 TL;DR

A Cross-Site Request Forgery (CSRF) vulnerability in Toast Plugins Internal Link Optimiser WordPress plugin allows attackers to inject malicious scripts via stored XSS. This affects WordPress sites using the plugin from all versions up to 5.1.3. Attackers can trick authenticated administrators into executing actions that lead to persistent cross-site scripting.

💻 Affected Systems

Products:
  • Toast Plugins Internal Link Optimiser WordPress plugin
Versions: n/a through 5.1.3
Operating Systems: All operating systems running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress installation with the vulnerable plugin enabled. The attacker needs to trick an authenticated administrator.

⚠️ 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 inject malicious JavaScript that steals administrator credentials, redirects users to malicious sites, or takes full control of the WordPress site when an admin views the compromised page.

🟠

Likely Case

Attackers create fake admin interfaces or forms that trick logged-in administrators into executing actions that inject malicious scripts into site content, affecting all visitors.

🟢

If Mitigated

With proper CSRF tokens and input validation, the attack vector is eliminated, preventing unauthorized script injection.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires social engineering to trick authenticated users, but the technical complexity is low once the user is tricked.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 5.1.4 or later

Vendor Advisory: https://patchstack.com/database/wordpress/plugin/internal-link-finder/vulnerability/wordpress-internal-link-optimiser-plugin-5-1-3-csrf-to-xss-vulnerability?_s_id=cve

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Find 'Internal Link Optimiser' and click 'Update Now' if available. 4. Alternatively, download version 5.1.4+ from WordPress repository and manually update.

🔧 Temporary Workarounds

Disable plugin temporarily

all

Deactivate the vulnerable plugin until patched

wp plugin deactivate internal-link-optimiser

Implement CSRF protection middleware

all

Add custom WordPress filters to validate nonce tokens on plugin actions

Add WordPress action hooks in theme functions.php or custom plugin

🧯 If You Can't Patch

  • Disable the Internal Link Optimiser plugin completely
  • Implement web application firewall (WAF) rules to block CSRF attempts targeting the plugin endpoints

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin > Plugins > Internal Link Optimiser. If version is 5.1.3 or lower, you are vulnerable.

Check Version:

wp plugin get internal-link-optimiser --field=version

Verify Fix Applied:

After update, confirm plugin version is 5.1.4 or higher in WordPress plugins list.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to /wp-admin/admin-ajax.php or plugin-specific endpoints without proper referrer/nonce
  • Multiple 403 errors from CSRF protection mechanisms

Network Indicators:

  • HTTP requests with suspicious parameters targeting plugin admin functions from unexpected sources

SIEM Query:

source="wordpress.log" AND ("internal-link-optimiser" OR "admin-ajax.php") AND (status=403 OR method=POST)

🔗 References

📤 Share & Export