CVE-2025-46504

7.1 HIGH

📋 TL;DR

A Cross-Site Request Forgery (CSRF) vulnerability in the Vasaio QR Code WordPress plugin allows attackers to perform stored cross-site scripting (XSS) attacks. This affects WordPress sites using Vasaio QR Code plugin versions up to 1.2.5. Attackers can trick authenticated administrators into executing malicious actions that inject persistent scripts.

💻 Affected Systems

Products:
  • Vasaio QR Code WordPress Plugin
Versions: n/a through 1.2.5
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress installation with the vulnerable plugin enabled. Attack requires administrator interaction with malicious content.

⚠️ 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 phishing sites, or takes full control of the WordPress site when administrators view affected pages.

🟠

Likely Case

Attackers create fake requests that trick administrators into adding malicious QR codes containing JavaScript payloads, leading to session hijacking or defacement of the site.

🟢

If Mitigated

With proper CSRF protections and content security policies, the attack would fail to execute malicious payloads even if the vulnerability exists.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires tricking an authenticated administrator into clicking a malicious link or visiting a crafted page. The vulnerability chain (CSRF to XSS) is well-documented in the reference.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.2.6 or later

Vendor Advisory: https://patchstack.com/database/wordpress/plugin/vasaio-qr-code/vulnerability/wordpress-vasaio-qr-code-plugin-1-2-5-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 'Vasaio QR Code' and click 'Update Now'. 4. Alternatively, download version 1.2.6+ from WordPress repository and replace the plugin files.

🔧 Temporary Workarounds

Disable Plugin

all

Temporarily disable the vulnerable plugin until patching is possible

wp plugin deactivate vasaio-qr-code

Implement CSRF Protection

all

Add WordPress nonce verification to plugin forms if custom patching is possible

Add wp_nonce_field() and wp_verify_nonce() calls to plugin form handling

🧯 If You Can't Patch

  • Restrict plugin access to trusted administrators only and implement strict content security policies
  • Monitor for unauthorized QR code entries and implement web application firewall rules to block XSS payloads

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin > Plugins > Installed Plugins for Vasaio QR Code version. If version is 1.2.5 or earlier, you are vulnerable.

Check Version:

wp plugin get vasaio-qr-code --field=version

Verify Fix Applied:

After updating, verify the plugin version shows 1.2.6 or later in WordPress admin panel.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to wp-admin/admin-ajax.php or plugin endpoints
  • Administrator accounts performing unexpected QR code creation/modification

Network Indicators:

  • HTTP requests containing malicious JavaScript in QR code parameters
  • Cross-origin requests to plugin endpoints without proper referrer headers

SIEM Query:

source="wordpress.log" AND ("vasaio" OR "qr-code") AND (POST OR "admin-ajax") AND status=200

🔗 References

📤 Share & Export