CVE-2025-49354

7.1 HIGH

📋 TL;DR

A Cross-Site Request Forgery (CSRF) vulnerability in the WordPress Recent Posts From Each Category plugin allows attackers to inject malicious scripts that execute when administrators view plugin settings. This affects WordPress sites using the plugin version 1.4 or earlier, potentially compromising administrator accounts and site visitors.

💻 Affected Systems

Products:
  • WordPress Recent Posts From Each Category plugin
Versions: n/a through 1.4
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress installation with the vulnerable plugin activated. Administrator access to plugin settings is needed for exploitation.

⚠️ 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 hijack administrator sessions, inject persistent malicious scripts across the website, steal sensitive data, deface the site, or install backdoors for further compromise.

🟠

Likely Case

Attackers trick administrators into executing actions that inject malicious JavaScript, leading to session hijacking, data theft, or unauthorized content modification.

🟢

If Mitigated

With proper CSRF protections and input validation, the vulnerability would be prevented, limiting impact to failed exploitation attempts.

🌐 Internet-Facing: HIGH
🏢 Internal Only: LOW

🎯 Exploit Status

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

Exploitation requires tricking an authenticated administrator into clicking a malicious link or visiting a crafted page. CSRF to Stored XSS chain makes weaponization likely.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.5 or later

Vendor Advisory: https://patchstack.com/database/wordpress/plugin/recent-posts-from-each-category/vulnerability/wordpress-recent-posts-from-each-category-plugin-1-4-cross-site-request-forgery-csrf-vulnerability?_s_id=cve

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Find 'Recent Posts From Each Category' and update to version 1.5 or later. 4. If update not available, deactivate and delete the plugin.

🔧 Temporary Workarounds

Disable vulnerable plugin

all

Deactivate the plugin to prevent exploitation while awaiting patch

wp plugin deactivate recent-posts-from-each-category

Implement CSRF protection headers

all

Add Content-Security-Policy headers to mitigate XSS

Add to .htaccess: Header set Content-Security-Policy "default-src 'self'; script-src 'self'"
Add to nginx config: add_header Content-Security-Policy "default-src 'self'; script-src 'self'";

🧯 If You Can't Patch

  • Restrict administrator access to trusted networks only
  • Implement web application firewall rules to block CSRF attempts

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel > Plugins > Installed Plugins for 'Recent Posts From Each Category' version 1.4 or earlier

Check Version:

wp plugin get recent-posts-from-each-category --field=version

Verify Fix Applied:

Verify plugin version is 1.5 or later in WordPress admin panel

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to wp-admin/admin.php?page=recent-posts-from-each-category
  • JavaScript injection patterns in plugin settings

Network Indicators:

  • CSRF token missing in requests to plugin admin endpoints
  • Unexpected redirects from external sites to admin pages

SIEM Query:

source="wordpress.log" AND (uri="/wp-admin/admin.php?page=recent-posts-from-each-category" AND method="POST" AND referer NOT CONTAINS site_domain)

🔗 References

📤 Share & Export