CVE-2026-1985 Overview
The Press3D plugin for WordPress contains a Stored Cross-Site Scripting (XSS) vulnerability in the 3D Model Gutenberg block affecting all versions up to and including 1.0.2. The vulnerability stems from inadequate URL scheme validation when storing link URLs for 3D model blocks, which allows javascript: protocol URLs to be saved. This enables authenticated attackers with Author-level access or higher to inject arbitrary JavaScript code that executes when users click on the affected 3D model elements.
Critical Impact
Authenticated attackers can inject persistent malicious scripts that execute in the context of other users' sessions, potentially leading to session hijacking, credential theft, or further compromise of the WordPress site.
Affected Products
- WordPress Press3D Plugin version 1.0.2 and earlier
- WordPress installations using the Press3D 3D Model Gutenberg block
Discovery Timeline
- 2026-02-14 - CVE CVE-2026-1985 published to NVD
- 2026-02-18 - Last updated in NVD database
Technical Details for CVE-2026-1985
Vulnerability Analysis
This Stored Cross-Site Scripting vulnerability exists within the Press3D plugin's 3D Model Gutenberg block component. The plugin fails to properly sanitize and validate URL schemes when processing link URLs for 3D model blocks. Specifically, the plugin does not reject dangerous URL protocols such as javascript:, allowing attackers to store malicious payloads that persist in the WordPress database and execute whenever users interact with the compromised content.
The attack requires Author-level privileges or higher, as these roles have the ability to create and publish content using Gutenberg blocks. While the authentication requirement limits the attack surface, compromised author accounts or malicious insiders could leverage this vulnerability to escalate their impact across the site's user base.
Root Cause
The root cause is improper input validation (CWE-79) in the URL handling logic of the Press3D plugin. The plugin does not utilize WordPress's built-in security functions like esc_url() to properly sanitize URL inputs, or it fails to implement a whitelist of allowed URL schemes. This oversight allows javascript: URLs to bypass validation and be stored in the database, creating a persistent XSS vector. The WordPress esc_url Function Reference documents the proper method for sanitizing URLs that should have been implemented.
Attack Vector
The attack leverages the network-accessible WordPress interface and requires low-privilege authentication (Author role or above). An attacker would:
- Authenticate to WordPress with at least Author-level credentials
- Create or edit a post containing a 3D Model Gutenberg block from the Press3D plugin
- Set the link URL parameter to a javascript: URL containing malicious code (e.g., javascript:alert(document.cookie))
- Publish or save the post
- When any user visits the page and clicks on the 3D model, the malicious script executes in their browser context
The vulnerability persists across page loads as the malicious payload is stored server-side. The attacker can target site administrators, potentially gaining elevated access through session hijacking or by tricking admins into performing privileged actions.
Detection Methods for CVE-2026-1985
Indicators of Compromise
- Presence of javascript: protocol URLs within Press3D plugin data stored in the WordPress database
- Unexpected JavaScript execution when interacting with 3D model elements on the site
- User reports of suspicious behavior when clicking on 3D models in posts or pages
- Database entries containing encoded or obfuscated JavaScript payloads in Press3D block attributes
Detection Strategies
- Review the WordPress database for posts containing Press3D blocks with javascript: URLs in link parameters
- Implement Web Application Firewall (WAF) rules to detect and block javascript: protocol in URL parameters
- Monitor WordPress audit logs for suspicious content modifications by Author-level users
- Perform regular security scans of plugin-generated content for XSS indicators
Monitoring Recommendations
- Enable and review WordPress activity logging for content creation and modification events
- Configure browser-based Content Security Policy (CSP) headers to mitigate script execution from inline handlers
- Monitor for anomalous network requests originating from user sessions after visiting pages with 3D models
- Alert on authentication events following user interactions with Press3D content that could indicate session compromise
How to Mitigate CVE-2026-1985
Immediate Actions Required
- Update the Press3D plugin to the latest patched version if available
- Temporarily disable the Press3D plugin until a patch can be applied
- Review all existing posts and pages using Press3D blocks for malicious javascript: URLs
- Audit Author-level and above user accounts for signs of compromise
Patch Information
The vulnerability affects Press3D plugin versions up to and including 1.0.2. Administrators should check the WordPress Press3D Plugin Trunk for the latest available version and apply updates as soon as they become available. The Wordfence Vulnerability Analysis provides additional technical details and patch status information.
Workarounds
- Disable the Press3D plugin entirely until a security patch is released
- Restrict Author-level access to only trusted users and implement additional review processes for published content
- Implement Content Security Policy headers with strict script-src directives to prevent inline script execution
- Use a WAF rule to block POST requests containing javascript: protocol strings in Press3D block parameters
# Example: Search WordPress database for potentially malicious Press3D URLs
# Replace wp_ with your actual WordPress table prefix
mysql -u username -p wordpress_db -e "SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%javascript:%' AND post_content LIKE '%press3d%';"
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


