CVE-2026-25156

7.3 HIGH

📋 TL;DR

HotCRP conference review software versions from October 2025 through January 2026 incorrectly delivered all document types with inline Content-Disposition, causing them to render in browsers instead of downloading. This allows attackers to upload malicious HTML or SVG documents that execute cross-site scripting attacks, potentially compromising user credentials and enabling arbitrary API calls. Users of affected HotCRP versions who click on document links are vulnerable.

💻 Affected Systems

Products:
  • HotCRP
Versions: Development versions and v3.2 from October 2025 through January 2026
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerable when using file upload or attachment fields (not PDF upload fields). The save=0 parameter could also request inline delivery for any document.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could steal HotCRP credentials, hijack user sessions, and make unauthorized API calls to manipulate conference submissions, reviews, or administrative functions, potentially compromising entire conference data.

🟠

Likely Case

Attackers upload malicious documents to submission fields or comments, then trick users into clicking links to execute XSS payloads that steal session cookies or credentials.

🟢

If Mitigated

With proper input validation and Content-Disposition headers, documents would download instead of rendering, preventing XSS execution even if malicious files are uploaded.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires uploading malicious HTML/SVG documents and convincing users to click links. No evidence of exploitation found on hotcrp.com.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: v3.2.1

Vendor Advisory: https://github.com/kohler/hotcrp/security/advisories/GHSA-p88p-2f2p-2476

Restart Required: No

Instructions:

1. Update HotCRP to version 3.2.1 or later. 2. Apply commits 8933e86c9f384b356dc4c6e9e2814dee1074b323 and c3d88a7e18d52119c65df31c2cc994edd2beccc5. 3. Verify Content-Disposition headers now properly force downloads for non-whitelisted file types.

🔧 Temporary Workarounds

Disable inline document rendering

all

Configure web server to force Content-Disposition: attachment for all uploaded documents except text/plain, application/pdf, and image types.

# Apache: Add to .htaccess or virtual host config
<FilesMatch "\.(html|svg|htm)$">
    Header set Content-Disposition "attachment"
</FilesMatch>
# Nginx: Add to server block
location ~*\.(html|svg|htm)$ {
    add_header Content-Disposition "attachment";
}

Restrict file upload types

all

Block upload of HTML, SVG, and other executable file types at application or server level.

# HotCRP configuration: Modify upload validation to reject dangerous MIME types
# Server-side: Use mod_security or similar to block uploads with Content-Type: text/html, image/svg+xml

🧯 If You Can't Patch

  • Implement strict Content Security Policy (CSP) headers to block inline script execution from uploaded documents.
  • Monitor and audit all uploaded documents for HTML/SVG content and investigate suspicious files.

🔍 How to Verify

Check if Vulnerable:

Upload an HTML file with simple alert script to a file upload field, then access the document URL. If it renders in browser and executes script, system is vulnerable.

Check Version:

Check HotCRP version in admin interface or review commit history for presence of fix commits.

Verify Fix Applied:

After patching, repeat vulnerable test: HTML files should download instead of rendering, and save=0 parameter should no longer work.

📡 Detection & Monitoring

Log Indicators:

  • Unusual HTML/SVG file uploads to submission or comment attachment fields
  • Multiple document access requests with save=0 parameter
  • User sessions accessing unexpected document types

Network Indicators:

  • HTTP responses with Content-Disposition: inline for non-whitelisted file types
  • Upload requests for HTML/SVG files to vulnerable endpoints

SIEM Query:

source="hotcrp_logs" AND (file_extension="html" OR file_extension="svg" OR file_extension="htm") AND action="upload"

🔗 References

📤 Share & Export