CVE-2026-115513: OpenCATS: stored XSS in MRU panel enables admin takeover

HIGH
Published October 22, 2026
CISO Take

OpenCATS, an open-source applicant tracking system, has a stored cross-site scripting flaw: any low-privileged user can plant JavaScript in a record name (Candidate, Company, Contact, Job Order or List) that is rendered unescaped in the 'Recent' navigation panel on nearly every page. When another user, including a Site Administrator, loads a page, the script runs in their session, enabling session theft and escalation to full administrative control (CVSS 8.7, scope changed). This is not an AI/ML product: the AI classification is weak and we found no linked AI package, no dependents data, and no AI-specific attack surface, so treat it as a general web application risk. Exploitation is low-complexity but needs authenticated access and a victim page view; there is no CISA KEV listing, no public exploit, no Nuclei template, and no EPSS score available yet. Upgrade to OpenCATS 0.12.0 or later, and if you run recruiting tooling alongside AI-assisted screening or HR automation, review that the instance's admin accounts and integrations cannot be abused for lateral movement.

Sources:NVDATLASVulnCheckGitHub (opencats/OpenCATS)

What is the risk?

High severity on paper (CVSS 8.7), but practical risk is moderate. The attacker needs a valid low-privilege account and a victim must view a page, which limits mass exploitation. The scope change and the admin-takeover path raise the impact for internally hosted or internet-exposed instances. There is no KEV listing, public exploit or scanner template, and EPSS is unavailable. The AI/ML relevance is minimal: OpenCATS is a recruiting ATS, and the 'ml_ui' category appears to be a loose fit.

How does the attack unfold?

Initial Access
Attacker uses a low-privileged authenticated account to create or rename a record with a malicious HTML/JavaScript name.
AML.T0012
Exploitation
The payload is stored and rendered unescaped in the MRU 'Recent' panel, executing when another user loads any page.
AML.T0049
Privilege Escalation
Script steals the administrator's session cookie or performs admin actions in their session.
Impact
Attacker gains full administrative control and can access or exfiltrate candidate PII and system configuration.

How severe is it?

CVSS 3.1
8.7 / 10
EPSS
0.3%
chance of exploitation in 30 days
Higher than 22% of all CVEs
Exploitation Status
No known exploitation
Sophistication
Trivial

What is the attack surface?

AVACPRUISCIA
AVNetwork
ACLow
PRLow
UIRequired
SChanged
CHigh
IHigh
ANone

What should I do?

1 step
  1. 1) Upgrade to OpenCATS 0.12.0 or later, which includes the fix in lib/MRU.php (commit f82e0ee). 2) Until patched, restrict account creation and limit who can create or rename records, and review existing record names for HTML/script content such as '<script', 'onerror=' or 'javascript:'. 3) Apply a strict Content-Security-Policy that blocks inline scripts, and set HttpOnly and SameSite flags on session cookies. 4) Require MFA or network restrictions for administrator access where possible. 5) Hunt in logs and the database for suspicious record titles and unexpected admin-privilege changes. 6) Rotate admin sessions and credentials if suspicious content is found.

How is it classified?

Which compliance frameworks are affected?

This CVE is relevant to:

ISO 42001
A.7.4-Quality of data for AI systems
NIST AI RMF
MANAGE 2.3-Responses to identified AI risks are planned and implemented

Frequently Asked Questions

What is CVE-2026-115513?

OpenCATS, an open-source applicant tracking system, has a stored cross-site scripting flaw: any low-privileged user can plant JavaScript in a record name (Candidate, Company, Contact, Job Order or List) that is rendered unescaped in the 'Recent' navigation panel on nearly every page. When another user, including a Site Administrator, loads a page, the script runs in their session, enabling session theft and escalation to full administrative control (CVSS 8.7, scope changed). This is not an AI/ML product: the AI classification is weak and we found no linked AI package, no dependents data, and no AI-specific attack surface, so treat it as a general web application risk. Exploitation is low-complexity but needs authenticated access and a victim page view; there is no CISA KEV listing, no public exploit, no Nuclei template, and no EPSS score available yet. Upgrade to OpenCATS 0.12.0 or later, and if you run recruiting tooling alongside AI-assisted screening or HR automation, review that the instance's admin accounts and integrations cannot be abused for lateral movement.

Is CVE-2026-115513 actively exploited?

No confirmed active exploitation of CVE-2026-115513 has been reported, but organizations should still patch proactively.

How to fix CVE-2026-115513?

1) Upgrade to OpenCATS 0.12.0 or later, which includes the fix in lib/MRU.php (commit f82e0ee). 2) Until patched, restrict account creation and limit who can create or rename records, and review existing record names for HTML/script content such as '<script', 'onerror=' or 'javascript:'. 3) Apply a strict Content-Security-Policy that blocks inline scripts, and set HttpOnly and SameSite flags on session cookies. 4) Require MFA or network restrictions for administrator access where possible. 5) Hunt in logs and the database for suspicious record titles and unexpected admin-privilege changes. 6) Rotate admin sessions and credentials if suspicious content is found.

What systems are affected by CVE-2026-115513?

This vulnerability affects the following AI/ML architecture patterns: Web applications with ATS/HR workflows, AI-assisted recruiting integrations.

What is the CVSS score for CVE-2026-115513?

CVE-2026-115513 has a CVSS v3.1 base score of 8.7 (HIGH). The EPSS exploitation probability is 0.30%.

What is the AI security impact?

Affected AI Architectures

Web applications with ATS/HR workflowsAI-assisted recruiting integrations

MITRE ATLAS Techniques

AML.T0012Valid Accounts
AML.T0049Exploit Public-Facing Application

Compliance Controls Affected

ISO 42001: A.7.4
NIST AI RMF: MANAGE 2.3

What are the technical details?

Original Advisory

OpenCATS before 0.12.0 contains a stored cross-site scripting vulnerability that allows a low-privileged authenticated user to inject HTML/JavaScript payloads by setting a Candidate, Company, Contact, Job Order, or List name/title field, which is stored unsanitized and later rendered unescaped in the 'Recent' (MRU) navigation panel displayed on nearly every page via lib/MRU.php's getFormatted() function. Attackers can exploit this by crafting a malicious record name that executes arbitrary JavaScript in the session of any other user, including Site Administrators, who views the record, enabling session/cookie theft and privilege escalation to full administrative control.

Exploitation Scenario

A low-privileged user, such as a recruiter, a compromised account or a self-registered user, creates a Candidate or Company whose name contains an HTML/JavaScript payload. The server stores it, and the MRU 'Recent' panel renders it unescaped on subsequent pages. When a Site Administrator opens any page that shows the panel, the payload runs in their browser session, exfiltrates the session cookie or performs administrative actions such as creating an admin account. The attacker then gains full control and can export candidate data, which could also be used to poison or harvest data feeding downstream AI screening tools.

Weaknesses (CWE)

CWE-79 — Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'): The product 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.

  • [Architecture and Design] Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid [REF-1482]. Examples of libraries and frameworks that make it easier to generate properly encoded output include Microsoft's Anti-XSS library, the OWASP ESAPI Encoding module, and Apache Wicket.
  • [Implementation, Architecture and Design] Understand the context in which your data will be used and the encoding that will be expected. This is especially important when transmitting data between different components, or when generating outputs that can contain multiple encodings at the same time, such as web pages or multi-part mail messages. Study all expected communication protocols and data representations to determine the required encoding strategies. For any data that will be output to another web page, especially any data that was received from external inputs, use the appropriate encoding on all non-alphanumeric characters. Parts of the same output document may require different encodings, which will vary depending on whether the output is in the: etc. Note that HTML Entity Encoding is only appropriate for the HTML body. Consult the XSS Prevention Cheat Sheet [REF-724] for more details on the types of encoding and escaping that are needed. HTML body Element attributes (such as src="XYZ") URIs JavaScript sections Casca

Source: MITRE CWE corpus.

CVSS Vector

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

Timeline

Published
October 22, 2026
Last Modified
October 23, 2026
First Seen
October 22, 2026

Related Vulnerabilities