CVE-2025-59131

7.1 HIGH

📋 TL;DR

A Cross-Site Request Forgery (CSRF) vulnerability in the Hoernerfranz WP-CalDav2ICS WordPress plugin allows attackers to perform unauthorized actions on behalf of authenticated users, potentially leading to stored cross-site scripting (XSS). This affects all WordPress sites running WP-CalDav2ICS version 1.3.4 and earlier. Attackers could inject malicious scripts that execute when other users visit affected pages.

💻 Affected Systems

Products:
  • Hoernerfranz WP-CalDav2ICS WordPress plugin
Versions: 1.3.4 and earlier
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress installation with the vulnerable plugin activated. The plugin must be accessible to authenticated users.

⚠️ 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 persistent malicious JavaScript that steals administrator credentials, hijacks user sessions, defaces websites, or redirects visitors to malicious sites.

🟠

Likely Case

Attackers trick administrators into clicking malicious links that modify plugin settings or inject malicious scripts, leading to session hijacking or credential theft.

🟢

If Mitigated

With proper CSRF tokens and input validation, the vulnerability would be prevented, and only authenticated users could perform legitimate actions.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires tricking an authenticated user into clicking a malicious link or visiting a compromised page. CSRF attacks are well-understood and easy to weaponize.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.3.5 or later

Vendor Advisory: https://patchstack.com/database/wordpress/plugin/wp-caldav2ics/vulnerability/wordpress-wp-caldav2ics-plugin-1-3-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 WP-CalDav2ICS and click 'Update Now' if available. 4. Alternatively, download version 1.3.5+ from WordPress.org and manually replace the plugin files.

🔧 Temporary Workarounds

Disable WP-CalDav2ICS Plugin

all

Temporarily deactivate the vulnerable plugin until patched.

wp plugin deactivate wp-caldav2ics

Implement CSRF Protection Headers

all

Add Content Security Policy (CSP) headers to mitigate XSS risks.

Add 'Content-Security-Policy: default-src 'self'' to web server configuration

🧯 If You Can't Patch

  • Restrict plugin access to trusted users only via IP whitelisting or network segmentation.
  • Implement web application firewall (WAF) rules to block CSRF and XSS attack patterns.

🔍 How to Verify

Check if Vulnerable:

Check the plugin version in WordPress admin under Plugins > Installed Plugins. If version is 1.3.4 or lower, it is vulnerable.

Check Version:

wp plugin get wp-caldav2ics --field=version

Verify Fix Applied:

Confirm the plugin version is 1.3.5 or higher after updating. Test plugin functionality to ensure it works correctly.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to wp-caldav2ics admin endpoints without referrer headers
  • JavaScript injection patterns in plugin settings or content

Network Indicators:

  • CSRF attack patterns with forged requests from external domains
  • Unexpected changes to plugin configuration via HTTP requests

SIEM Query:

source="wordpress.log" AND (uri_path="/wp-admin/admin-ajax.php" OR uri_path CONTAINS "wp-caldav2ics") AND http_method="POST" AND referrer NOT CONTAINS own_domain

🔗 References

📤 Share & Export