CVE-2026-103923
NoneCVSS
—
EPSS
—
Published
Oct 1, 2026
CISA due date
—
Cloudanix analysis
A math display library used on websites could let attackers inject clickable scripts if someone first tampers with how JavaScript objects are created, potentially exposing users who view the affected pages.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Moderate
- Impact
- Other
- Component
- Library
- Class
- XSS
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Prototype pollution in renderer options, trust setting, and namespace handling allows attacker-controlled inherited properties to enable trusted rendering mode, producing interactive links or external resource loads that execute cross-site scripting when unsanitized output is inserted into a page.
Why it matters to the business
Web applications embedding KaTeX math rendering face risk of script injection and unauthorized resource loading if an upstream prototype pollution flaw or attacker-controlled options object is present, potentially leading to session compromise or data exfiltration in affected sites.
How an attack unfolds
An attacker first establishes a polluted Object.prototype (via separate vulnerability or control of the options prototype), then supplies a crafted mathematical expression that inherits a malicious trust value; KaTeX's property access treats the inherited value as explicit, enabling trusted features that generate user-interactive XSS links or external loads when the rendered output is placed unsanitized into the DOM.
How to fix it
Upgrade KaTeX to version 0.18.2 or later; audit consuming applications for unsanitized insertion of KaTeX output and ensure options objects are created without prototype inheritance (e.g., via Object.create(null)).
How to confirm the fix worked
Confirm the installed KaTeX version is 0.18.2 or newer; test rendering with a deliberately polluted Object.prototype containing trust keys and verify that trusted features are no longer activated by inherited values.
Typical attack path
- Identify or create prototype pollution affecting Object.prototype with trust-related keys
- Craft a mathematical expression that triggers trusted rendering via inherited properties
- Submit the expression to the vulnerable KaTeX instance
- Capture the rendered output containing attacker-controlled links or resources
- Deliver the output to a victim page that inserts it without sanitization
How to detect it
Review application logs and rendered HTML for unexpected trusted links or external resource references originating from KaTeX math expressions; inspect JavaScript execution for options objects inheriting trust properties; correlate with known prototype-pollution indicators in the same request flow.
What your security team should do
- Immediately inventory all applications using KaTeX 0.11.0-0.18.1 and schedule upgrade to 0.18.2
- Review math rendering pipelines for direct insertion of KaTeX output without sanitization
- Add prototype-pollution defenses and safe object creation patterns in shared JavaScript libraries
- Monitor for new exploit maturity signals given the 30-day publication window
The record
KaTeX is a fast, easy-to-use JavaScript library for TeX math rendering on the web. From 0.11.0 until 0.18.2, KaTeX uses ordinary JavaScript property access for the renderer options object, the trust setting, default and processor setting metadata, and namespace lookup and group restoration, allowing inherited properties to be treated as explicitly supplied values. When Object.prototype is already polluted or an attacker controls the options object's prototype, attacker-controlled mathematical expressions can use an inherited trust value to enable trusted rendering and produce links capable of user-interaction cross-site scripting or loading attacker-selected external resources in a consuming application that inserts unsanitized KaTeX output into a page. KaTeX does not itself create the prototype pollution, and rendering an expression alone does not execute script. This issue is fixed in version 0.18.2.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-119148 Incomplete string validation in AWS aws-nitro-enclaves-sdk-c before 0.4.6 may allow a… CWE-807
- CVE-2026-116016 yudao-cloud through 2026.09 contains an authorization bypass vulnerability that allows… CWE-807
- CVE-2026-114617 Authlib is a Python library which builds OAuth and OpenID Connect servers. CWE-807
- CVE-2026-50106 When NLnet Labs Unbound up to and including version 1.26.1 is configured with both a root… CWE-807
- CVE-2026-111748 AIOHTTP is an asynchronous HTTP client/server framework for asyncio and Python. CWE-807
- CVE-2026-111869 A vulnerability was identified in makeplane plane up to 1.4.2. CWE-807
- CVE-2026-53614 util-linux is a random collection of Linux utilities. CWE-807
- CVE-2026-83522 Reliance on untrusted inputs in a security decision in Windows IKE Extension allows an… CWE-807