Skip to main content

Otter Wiki EUVDEUVD-2026-115252

| CVE-2026-120500 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-11-02 VulnCheck GHSA-2fv3-2f7j-2vq4
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Access page editor (anonymous by default)
  2. Delivery
    Inject HTML in ```math fenced code block
  3. Exploit
    Payload stored and rendered unescaped
  4. Execution
    Victim opens the page
  5. Impact
    Script executes in victim's browser session

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The attacker must be able to edit a wiki page and must place HTML markup inside a `math fenced code block, which block_code renders without escaping. Under Otter Wiki's default configuration anonymous users can edit pages, so no authentication is required (PR:N); deployments hardened to require login or disable anonymous editing raise the bar to an authenticated editor. Exploitation of a victim additionally requires that victim to view the poisoned page (UI:P / passive user interaction). Affected: Otter Wiki before 2.26.2; fixed in 2.26.2.

Impact

This is a genuine but moderate-priority issue, not an emergency. The CVSS 4.0 base score is 5.3 (medium), and the vulnerability is a stored XSS (CWE-79) whose impact is confined to the subsequent system - the browser of each page viewer (SC:L/SI:L, with VC/VI/VA:N on the Otter Wiki server itself). The signals are mostly consistent: AV:N/AC:L means network-reachable and easy to trigger, and PR:N reflects that under the default configuration anonymous users can edit pages, so no authentication is needed to plant the payload; UI:P correctly reflects that a victim must view the poisoned page for the script to fire. The vuln.today decision label is 'this_month' rather than act_now/emergency, which matches the medium severity. No EPSS score and no KEV listing are present in the input, so there is no evidence of active exploitation or a quantified exploitation probability - treat exploitation likelihood as unquantified rather than low. The main risk amplifier is the default anonymous-edit configuration, which removes the usual authentication barrier for a stored-XSS; deployments that disable anonymous editing meaningfully reduce exposure. Overall: patch within a normal cycle, prioritizing internet-facing instances that allow anonymous editing.

Exploit ScenarioDerived

Under the default configuration an unauthenticated attacker opens the page editor and saves a page containing a `math fenced code block with embedded markup such as <script>alert(document.domain)</script> or <img src=x onerror=...>. Because OtterwikiMdRenderer.block_code wraps each math line as \[{line}\] without HTML-escaping, the payload is stored and rendered verbatim, executing in the browser of every subsequent viewer. A public PoC payload is demonstrated in the patch's regression test (test_math_block_escapes_html); it is not verified as a standalone working exploit.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Nov 02, 2026

Stored cross-site scripting in Otter Wiki before 2.26.2 lets anyone able to edit a page - including anonymous users under the default configuration - persist HTML and script inside a `math fenced code block that the renderer emits without escaping, so the payload executes in the browser of every viewer who opens the poisoned page. Successful exploitation requires the victim to view the page (passive user interaction) and grants script execution in the wiki's origin in a scope-changed context, with low confidentiality and integrity impact on the viewer's session rather than on the server. This is a genuine but moderate-priority issue, not an emergency: no confirmed active exploitation (not in CISA KEV) and no public exploit identified at time of analysis, with a vendor fix released in 2.26.2.

RemediationAI

Upgrade Otter Wiki to 2.26.2, the vendor-released fix that escapes each line of a `math block with mistune.escape before wrapping it in math delimiters (commit b2e91d20ed36c01ce140d18698f9abb90685d481, release notes at https://github.com/redimp/otterwiki/releases/tag/v2.26.2; see also https://www.vulncheck.com/advisories/an-otter-wiki-before-2.26.2-stored-xss-via-math-code-block). Because the payload is stored in page content, upgrading should be paired with a review of existing pages that contain math fenced blocks for injected HTML, since already-poisoned pages remain in the database. Until the upgrade is deployed, restricting page-edit rights - requiring login or disabling anonymous editing - raises the bar from unauthenticated to authenticated editors but does not remove the flaw, and the escaping change in 2.26.2 remains the complete remediation.

Affected VersionsENISA

otterwiki 2.0.0 <2.26.2

Affected Packages

euvd otterwiki fix: 2.26.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Otter Wiki renders Markdown through OtterwikiMdRenderer, a subclass of the mistune Markdown parser, and its block_code method handles fenced code blocks selected by an info string. For blocks tagged `math, the renderer rewrites each source line into a \[...\] MathJax delimiter so the wiki can display formulas; before 2.26.2 that transformation interpolated the raw code text without HTML escaping, so markup such as </div><script>...</script> or <img src=x onerror=...> passed through into the final HTML. This is the classic CWE-79 stored/persistent variant: the tainted content is saved in the wiki page (attacker-controlled, and editable by anonymous users by default) and re-served to every reader. The upstream fix (commit b2e91d20ed36c01ce140d18698f9abb90685d481) applies mistune.escape(line, quote=False) to each line before wrapping it in the math delimiters, and the accompanying test asserts that <script and <img tags are neutralized while legitimate math such as a &= b < c is preserved as escaped entities. Per the affected CPE (cpe:2.3:a:redimp:otterwiki:*:*:*:*:*:*:*:*) all releases prior to 2.26.2 are in scope; the assessed CVSS:3.1 vector (AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N) reflects network reachability, no privileges needed because anonymous editing is the default, required victim interaction, and a scope change driven by script running in the victim's browser session. The exact conditions that make a hardened deployment exploitable are as assessed: requiring login or disabling anonymous editing limits the attacker to authenticated editors, which lowers but does not eliminate the risk.

Know when Otterwiki gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
vuln.today AI 6.1 MEDIUM

Network-reachable stored XSS triggerable without auth under the default anonymous-edit config (PR:N); a viewer must load the page (UI:R); script runs in the victim's browser context, a scope change (S:C) with low C/I and no availability impact.

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

DescriptionCVE.org

An Otter Wiki before 2.26.2 contains a stored cross-site scripting vulnerability in OtterwikiMdRenderer.block_code that allows attackers who can edit pages, including anonymous users under the default configuration, to inject arbitrary script. Attackers can place HTML inside a math fenced code block, which is rendered unescaped and executes for every viewer of the page.

Threat Intelligence Overview

EPSS Score
0.3%
Top 79% exploitable
Prevalence
Low
niche open-source self-hosted wiki, limited enterprise footprint
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy